You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

api_repo_teams_test.go 2.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // Copyright 2021 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package integrations
  5. import (
  6. "fmt"
  7. "net/http"
  8. "testing"
  9. "code.gitea.io/gitea/models"
  10. api "code.gitea.io/gitea/modules/structs"
  11. "github.com/stretchr/testify/assert"
  12. )
  13. func TestAPIRepoTeams(t *testing.T) {
  14. defer prepareTestEnv(t)()
  15. // publicOrgRepo = user3/repo21
  16. publicOrgRepo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 32}).(*models.Repository)
  17. // user4
  18. user := models.AssertExistsAndLoadBean(t, &models.User{ID: 4}).(*models.User)
  19. session := loginUser(t, user.Name)
  20. token := getTokenForLoggedInUser(t, session)
  21. // ListTeams
  22. url := fmt.Sprintf("/api/v1/repos/%s/teams?token=%s", publicOrgRepo.FullName(), token)
  23. req := NewRequest(t, "GET", url)
  24. res := session.MakeRequest(t, req, http.StatusOK)
  25. var teams []*api.Team
  26. DecodeJSON(t, res, &teams)
  27. if assert.Len(t, teams, 2) {
  28. assert.EqualValues(t, "Owners", teams[0].Name)
  29. assert.EqualValues(t, false, teams[0].CanCreateOrgRepo)
  30. assert.EqualValues(t, []string{"repo.code", "repo.issues", "repo.pulls", "repo.releases", "repo.wiki", "repo.ext_wiki", "repo.ext_issues"}, teams[0].Units)
  31. assert.EqualValues(t, "owner", teams[0].Permission)
  32. assert.EqualValues(t, "test_team", teams[1].Name)
  33. assert.EqualValues(t, false, teams[1].CanCreateOrgRepo)
  34. assert.EqualValues(t, []string{"repo.issues"}, teams[1].Units)
  35. assert.EqualValues(t, "write", teams[1].Permission)
  36. }
  37. // IsTeam
  38. url = fmt.Sprintf("/api/v1/repos/%s/teams/%s?token=%s", publicOrgRepo.FullName(), "Test_Team", token)
  39. req = NewRequest(t, "GET", url)
  40. res = session.MakeRequest(t, req, http.StatusOK)
  41. var team *api.Team
  42. DecodeJSON(t, res, &team)
  43. assert.EqualValues(t, teams[1], team)
  44. url = fmt.Sprintf("/api/v1/repos/%s/teams/%s?token=%s", publicOrgRepo.FullName(), "NonExistingTeam", token)
  45. req = NewRequest(t, "GET", url)
  46. res = session.MakeRequest(t, req, http.StatusNotFound)
  47. // AddTeam with user4
  48. url = fmt.Sprintf("/api/v1/repos/%s/teams/%s?token=%s", publicOrgRepo.FullName(), "team1", token)
  49. req = NewRequest(t, "PUT", url)
  50. res = session.MakeRequest(t, req, http.StatusForbidden)
  51. // AddTeam with user2
  52. user = models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User)
  53. session = loginUser(t, user.Name)
  54. token = getTokenForLoggedInUser(t, session)
  55. url = fmt.Sprintf("/api/v1/repos/%s/teams/%s?token=%s", publicOrgRepo.FullName(), "team1", token)
  56. req = NewRequest(t, "PUT", url)
  57. res = session.MakeRequest(t, req, http.StatusNoContent)
  58. res = session.MakeRequest(t, req, http.StatusUnprocessableEntity) // test duplicate request
  59. // DeleteTeam
  60. url = fmt.Sprintf("/api/v1/repos/%s/teams/%s?token=%s", publicOrgRepo.FullName(), "team1", token)
  61. req = NewRequest(t, "DELETE", url)
  62. res = session.MakeRequest(t, req, http.StatusNoContent)
  63. res = session.MakeRequest(t, req, http.StatusUnprocessableEntity) // test duplicate request
  64. }