gitea源码

org_project_test.go 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package integration
  4. import (
  5. "net/http"
  6. "slices"
  7. "testing"
  8. unit_model "code.gitea.io/gitea/models/unit"
  9. "code.gitea.io/gitea/tests"
  10. )
  11. func TestOrgProjectAccess(t *testing.T) {
  12. defer tests.PrepareTestEnv(t)()
  13. disabledRepoUnits := unit_model.DisabledRepoUnitsGet()
  14. unit_model.DisabledRepoUnitsSet(append(slices.Clone(disabledRepoUnits), unit_model.TypeProjects))
  15. defer unit_model.DisabledRepoUnitsSet(disabledRepoUnits)
  16. // repo project, 404
  17. req := NewRequest(t, "GET", "/user2/repo1/projects")
  18. MakeRequest(t, req, http.StatusNotFound)
  19. // user project, 200
  20. req = NewRequest(t, "GET", "/user2/-/projects")
  21. MakeRequest(t, req, http.StatusOK)
  22. // org project, 200
  23. req = NewRequest(t, "GET", "/org3/-/projects")
  24. MakeRequest(t, req, http.StatusOK)
  25. // change the org's visibility to private
  26. session := loginUser(t, "user2")
  27. req = NewRequestWithValues(t, "POST", "/org/org3/settings", map[string]string{
  28. "_csrf": GetUserCSRFToken(t, session),
  29. "name": "org3",
  30. "visibility": "2",
  31. })
  32. session.MakeRequest(t, req, http.StatusSeeOther)
  33. // user4 can still access the org's project because its team(team1) has the permission
  34. session = loginUser(t, "user4")
  35. req = NewRequest(t, "GET", "/org3/-/projects")
  36. session.MakeRequest(t, req, http.StatusOK)
  37. // disable team1's project unit
  38. session = loginUser(t, "user2")
  39. req = NewRequestWithValues(t, "POST", "/org/org3/teams/team1/edit", map[string]string{
  40. "_csrf": GetUserCSRFToken(t, session),
  41. "team_name": "team1",
  42. "repo_access": "specific",
  43. "permission": "read",
  44. "unit_8": "0",
  45. })
  46. session.MakeRequest(t, req, http.StatusSeeOther)
  47. // user4 can no longer access the org's project
  48. session = loginUser(t, "user4")
  49. req = NewRequest(t, "GET", "/org3/-/projects")
  50. session.MakeRequest(t, req, http.StatusNotFound)
  51. }