code.gitea.io/gitea@v1.22.3/tests/integration/api_repo_teams_test.go (about) 1 // Copyright 2021 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package integration 5 6 import ( 7 "fmt" 8 "net/http" 9 "testing" 10 11 auth_model "code.gitea.io/gitea/models/auth" 12 repo_model "code.gitea.io/gitea/models/repo" 13 "code.gitea.io/gitea/models/unit" 14 "code.gitea.io/gitea/models/unittest" 15 user_model "code.gitea.io/gitea/models/user" 16 api "code.gitea.io/gitea/modules/structs" 17 "code.gitea.io/gitea/modules/util" 18 "code.gitea.io/gitea/tests" 19 20 "github.com/stretchr/testify/assert" 21 ) 22 23 func TestAPIRepoTeams(t *testing.T) { 24 defer tests.PrepareTestEnv(t)() 25 26 // publicOrgRepo = org3/repo21 27 publicOrgRepo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 32}) 28 // user4 29 user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4}) 30 session := loginUser(t, user.Name) 31 token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository) 32 33 // ListTeams 34 req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/teams", publicOrgRepo.FullName())). 35 AddTokenAuth(token) 36 res := MakeRequest(t, req, http.StatusOK) 37 var teams []*api.Team 38 DecodeJSON(t, res, &teams) 39 if assert.Len(t, teams, 2) { 40 assert.EqualValues(t, "Owners", teams[0].Name) 41 assert.True(t, teams[0].CanCreateOrgRepo) 42 assert.True(t, util.SliceSortedEqual(unit.AllUnitKeyNames(), teams[0].Units), fmt.Sprintf("%v == %v", unit.AllUnitKeyNames(), teams[0].Units)) 43 assert.EqualValues(t, "owner", teams[0].Permission) 44 45 assert.EqualValues(t, "test_team", teams[1].Name) 46 assert.False(t, teams[1].CanCreateOrgRepo) 47 assert.EqualValues(t, []string{"repo.issues"}, teams[1].Units) 48 assert.EqualValues(t, "write", teams[1].Permission) 49 } 50 51 // IsTeam 52 req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/teams/%s", publicOrgRepo.FullName(), "Test_Team")). 53 AddTokenAuth(token) 54 res = MakeRequest(t, req, http.StatusOK) 55 var team *api.Team 56 DecodeJSON(t, res, &team) 57 assert.EqualValues(t, teams[1], team) 58 59 req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/teams/%s", publicOrgRepo.FullName(), "NonExistingTeam")). 60 AddTokenAuth(token) 61 MakeRequest(t, req, http.StatusNotFound) 62 63 // AddTeam with user4 64 req = NewRequest(t, "PUT", fmt.Sprintf("/api/v1/repos/%s/teams/%s", publicOrgRepo.FullName(), "team1")). 65 AddTokenAuth(token) 66 MakeRequest(t, req, http.StatusForbidden) 67 68 // AddTeam with user2 69 user = unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) 70 session = loginUser(t, user.Name) 71 token = getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository) 72 req = NewRequest(t, "PUT", fmt.Sprintf("/api/v1/repos/%s/teams/%s", publicOrgRepo.FullName(), "team1")). 73 AddTokenAuth(token) 74 MakeRequest(t, req, http.StatusNoContent) 75 MakeRequest(t, req, http.StatusUnprocessableEntity) // test duplicate request 76 77 // DeleteTeam 78 req = NewRequest(t, "DELETE", fmt.Sprintf("/api/v1/repos/%s/teams/%s", publicOrgRepo.FullName(), "team1")). 79 AddTokenAuth(token) 80 MakeRequest(t, req, http.StatusNoContent) 81 MakeRequest(t, req, http.StatusUnprocessableEntity) // test duplicate request 82 }