| @@ -6,43 +6,87 @@ package integrations | |||||
| import ( | import ( | ||||
| "net/http" | "net/http" | ||||
| "net/url" | |||||
| "strings" | "strings" | ||||
| "testing" | "testing" | ||||
| "code.gitea.io/gitea/models" | "code.gitea.io/gitea/models" | ||||
| "code.gitea.io/gitea/modules/setting" | |||||
| api "code.gitea.io/sdk/gitea" | api "code.gitea.io/sdk/gitea" | ||||
| "github.com/stretchr/testify/assert" | "github.com/stretchr/testify/assert" | ||||
| ) | ) | ||||
| func TestAPIOrg(t *testing.T) { | func TestAPIOrg(t *testing.T) { | ||||
| prepareTestEnv(t) | |||||
| session := loginUser(t, "user1") | |||||
| token := getTokenForLoggedInUser(t, session) | |||||
| var org = api.CreateOrgOption{ | |||||
| UserName: "user1_org", | |||||
| FullName: "User1's organization", | |||||
| Description: "This organization created by user1", | |||||
| Website: "https://try.gitea.io", | |||||
| Location: "Shanghai", | |||||
| } | |||||
| req := NewRequestWithJSON(t, "POST", "/api/v1/orgs?token="+token, &org) | |||||
| resp := session.MakeRequest(t, req, http.StatusCreated) | |||||
| var apiOrg api.Organization | |||||
| DecodeJSON(t, resp, &apiOrg) | |||||
| assert.Equal(t, org.UserName, apiOrg.UserName) | |||||
| assert.Equal(t, org.FullName, apiOrg.FullName) | |||||
| assert.Equal(t, org.Description, apiOrg.Description) | |||||
| assert.Equal(t, org.Website, apiOrg.Website) | |||||
| assert.Equal(t, org.Location, apiOrg.Location) | |||||
| models.AssertExistsAndLoadBean(t, &models.User{ | |||||
| Name: org.UserName, | |||||
| LowerName: strings.ToLower(org.UserName), | |||||
| FullName: org.FullName, | |||||
| onGiteaRun(t, func(*testing.T, *url.URL) { | |||||
| session := loginUser(t, "user1") | |||||
| token := getTokenForLoggedInUser(t, session) | |||||
| var org = api.CreateOrgOption{ | |||||
| UserName: "user1_org", | |||||
| FullName: "User1's organization", | |||||
| Description: "This organization created by user1", | |||||
| Website: "https://try.gitea.io", | |||||
| Location: "Shanghai", | |||||
| } | |||||
| req := NewRequestWithJSON(t, "POST", "/api/v1/orgs?token="+token, &org) | |||||
| resp := session.MakeRequest(t, req, http.StatusCreated) | |||||
| var apiOrg api.Organization | |||||
| DecodeJSON(t, resp, &apiOrg) | |||||
| assert.Equal(t, org.UserName, apiOrg.UserName) | |||||
| assert.Equal(t, org.FullName, apiOrg.FullName) | |||||
| assert.Equal(t, org.Description, apiOrg.Description) | |||||
| assert.Equal(t, org.Website, apiOrg.Website) | |||||
| assert.Equal(t, org.Location, apiOrg.Location) | |||||
| models.AssertExistsAndLoadBean(t, &models.User{ | |||||
| Name: org.UserName, | |||||
| LowerName: strings.ToLower(org.UserName), | |||||
| FullName: org.FullName, | |||||
| }) | |||||
| req = NewRequestf(t, "GET", "/api/v1/orgs/%s", org.UserName) | |||||
| resp = session.MakeRequest(t, req, http.StatusOK) | |||||
| DecodeJSON(t, resp, &apiOrg) | |||||
| assert.EqualValues(t, org.UserName, apiOrg.UserName) | |||||
| req = NewRequestf(t, "GET", "/api/v1/orgs/%s/repos", org.UserName) | |||||
| resp = session.MakeRequest(t, req, http.StatusOK) | |||||
| var repos []*api.Repository | |||||
| DecodeJSON(t, resp, &repos) | |||||
| for _, repo := range repos { | |||||
| assert.False(t, repo.Private) | |||||
| } | |||||
| req = NewRequestf(t, "GET", "/api/v1/orgs/%s/members", org.UserName) | |||||
| resp = session.MakeRequest(t, req, http.StatusOK) | |||||
| // user1 on this org is public | |||||
| var users []*api.User | |||||
| DecodeJSON(t, resp, &users) | |||||
| assert.EqualValues(t, 1, len(users)) | |||||
| assert.EqualValues(t, "user1", users[0].UserName) | |||||
| }) | |||||
| } | |||||
| func TestAPIOrgDeny(t *testing.T) { | |||||
| onGiteaRun(t, func(*testing.T, *url.URL) { | |||||
| setting.Service.RequireSignInView = true | |||||
| defer func() { | |||||
| setting.Service.RequireSignInView = false | |||||
| }() | |||||
| var orgName = "user1_org" | |||||
| req := NewRequestf(t, "GET", "/api/v1/orgs/%s", orgName) | |||||
| MakeRequest(t, req, http.StatusNotFound) | |||||
| req = NewRequestf(t, "GET", "/api/v1/orgs/%s/repos", orgName) | |||||
| MakeRequest(t, req, http.StatusNotFound) | |||||
| req = NewRequestf(t, "GET", "/api/v1/orgs/%s/members", orgName) | |||||
| MakeRequest(t, req, http.StatusNotFound) | |||||
| }) | }) | ||||
| } | } | ||||