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.

org_project_test.go 1.8KB

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