From 1d8b521ae1fc22a114c1aa0ad5ef4d5d26011c7c Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 25 Apr 2019 00:16:14 +0800 Subject: [PATCH] Add tests for Org API (#6731) --- integrations/api_org_test.go | 90 +++++++++++++++++++++++++++--------- 1 file changed, 67 insertions(+), 23 deletions(-) diff --git a/integrations/api_org_test.go b/integrations/api_org_test.go index d30b74673..3dd4b759b 100644 --- a/integrations/api_org_test.go +++ b/integrations/api_org_test.go @@ -6,43 +6,87 @@ package integrations import ( "net/http" + "net/url" "strings" "testing" "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/setting" api "code.gitea.io/sdk/gitea" "github.com/stretchr/testify/assert" ) func TestAPIOrg(t *testing.T) { - prepareTestEnv(t) + onGiteaRun(t, func(*testing.T, *url.URL) { + session := loginUser(t, "user1") - 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) - 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) - 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) - 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, + }) - 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) }) }