This commit is contained in:
@@ -9,16 +9,19 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
auth_model "code.gitea.io/gitea/models/auth"
|
||||
"code.gitea.io/gitea/models/db"
|
||||
"code.gitea.io/gitea/models/organization"
|
||||
"code.gitea.io/gitea/models/perm"
|
||||
"code.gitea.io/gitea/models/unit"
|
||||
"code.gitea.io/gitea/models/unittest"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
api "code.gitea.io/gitea/modules/structs"
|
||||
"code.gitea.io/gitea/tests"
|
||||
auth_model "gitea.dev/models/auth"
|
||||
"gitea.dev/models/db"
|
||||
"gitea.dev/models/organization"
|
||||
"gitea.dev/models/perm"
|
||||
"gitea.dev/models/unit"
|
||||
"gitea.dev/models/unittest"
|
||||
user_model "gitea.dev/models/user"
|
||||
"gitea.dev/modules/setting"
|
||||
api "gitea.dev/modules/structs"
|
||||
"gitea.dev/modules/test"
|
||||
"gitea.dev/tests"
|
||||
|
||||
"github.com/PuerkitoBio/goquery"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
@@ -31,6 +34,7 @@ func TestOrg(t *testing.T) {
|
||||
t.Run("OrgMembers", testOrgMembers)
|
||||
t.Run("OrgRestrictedUser", testOrgRestrictedUser)
|
||||
t.Run("TeamSearch", testTeamSearch)
|
||||
t.Run("TeamsPage", testTeamsPage)
|
||||
t.Run("OrgSettings", testOrgSettings)
|
||||
}
|
||||
|
||||
@@ -178,11 +182,9 @@ func testOrgRestrictedUser(t *testing.T) {
|
||||
req = NewRequestWithJSON(t, "POST", fmt.Sprintf("/api/v1/orgs/%s/teams", orgName), teamToCreate).
|
||||
AddTokenAuth(token)
|
||||
|
||||
var apiTeam api.Team
|
||||
|
||||
resp := adminSession.MakeRequest(t, req, http.StatusCreated)
|
||||
DecodeJSON(t, resp, &apiTeam)
|
||||
checkTeamResponse(t, "CreateTeam_codereader", &apiTeam, teamToCreate.Name, teamToCreate.Description, teamToCreate.IncludesAllRepositories,
|
||||
apiTeam := DecodeJSON(t, resp, &api.Team{})
|
||||
checkTeamResponse(t, "CreateTeam_codereader", apiTeam, teamToCreate.Name, teamToCreate.Description, teamToCreate.IncludesAllRepositories,
|
||||
"none", teamToCreate.Units, nil)
|
||||
checkTeamBean(t, apiTeam.ID, teamToCreate.Name, teamToCreate.Description, teamToCreate.IncludesAllRepositories,
|
||||
"none", teamToCreate.Units, nil)
|
||||
@@ -205,12 +207,10 @@ func testTeamSearch(t *testing.T) {
|
||||
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 15})
|
||||
org := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 17})
|
||||
|
||||
var results TeamSearchResults
|
||||
|
||||
session := loginUser(t, user.Name)
|
||||
req := NewRequestf(t, "GET", "/org/%s/teams/-/search?q=%s", org.Name, "_team")
|
||||
resp := session.MakeRequest(t, req, http.StatusOK)
|
||||
DecodeJSON(t, resp, &results)
|
||||
results := DecodeJSON(t, resp, &TeamSearchResults{})
|
||||
assert.NotEmpty(t, results.Data)
|
||||
assert.Len(t, results.Data, 2)
|
||||
assert.Equal(t, "review_team", results.Data[0].Name)
|
||||
@@ -251,6 +251,67 @@ func testTeamSearch(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func testTeamsPage(t *testing.T) {
|
||||
// org17 has three teams in fixtures: Owners (id 5), test_team (id 8), review_team (id 9).
|
||||
// user15 is in Owners; user20 is in review_team only; user5 is not a member.
|
||||
org := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 17})
|
||||
|
||||
listTeams := func(t *testing.T, session *TestSession, query string) []string {
|
||||
req := NewRequestf(t, "GET", "/org/%s/teams%s", org.Name, query)
|
||||
resp := session.MakeRequest(t, req, http.StatusOK)
|
||||
htmlDoc := NewHTMLParser(t, resp.Body)
|
||||
sel := htmlDoc.doc.Find(".ui.top.attached.header strong")
|
||||
names := make([]string, 0, sel.Length())
|
||||
sel.Each(func(_ int, s *goquery.Selection) {
|
||||
names = append(names, s.Text())
|
||||
})
|
||||
return names
|
||||
}
|
||||
|
||||
// Owner sees all teams, "Owners" sorted first regardless of alphabetical order
|
||||
ownerSession := loginUser(t, "user15")
|
||||
assert.Equal(t, []string{"Owners", "review_team", "test_team"}, listTeams(t, ownerSession, ""))
|
||||
|
||||
// Keyword filter narrows by name
|
||||
assert.Equal(t, []string{"review_team"}, listTeams(t, ownerSession, "?q=review"))
|
||||
|
||||
// Non-admin org member sees only the teams they belong to
|
||||
memberSession := loginUser(t, "user20")
|
||||
assert.Equal(t, []string{"review_team"}, listTeams(t, memberSession, ""))
|
||||
|
||||
// Edit review_team so user20 gets full list
|
||||
reviewTeam := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: 9})
|
||||
req := NewRequestWithValues(t, "POST", fmt.Sprintf("/org/%s/teams/%s/edit", org.Name, reviewTeam.Name), map[string]string{
|
||||
"team_name": reviewTeam.Name,
|
||||
"description": reviewTeam.Description,
|
||||
"repo_access": "all",
|
||||
"permission": "admin",
|
||||
"unit_1": "1",
|
||||
"unit_2": "1",
|
||||
"unit_3": "1",
|
||||
"unit_4": "1",
|
||||
"unit_5": "1",
|
||||
"unit_6": "1",
|
||||
"unit_7": "1",
|
||||
"unit_8": "1",
|
||||
"unit_9": "1",
|
||||
"unit_10": "1",
|
||||
})
|
||||
ownerSession.MakeRequest(t, req, http.StatusSeeOther)
|
||||
assert.Equal(t, []string{"Owners", "review_team", "test_team"}, listTeams(t, memberSession, ""))
|
||||
|
||||
// Non-member is denied
|
||||
nonMemberSession := loginUser(t, "user5")
|
||||
req = NewRequestf(t, "GET", "/org/%s/teams", org.Name)
|
||||
nonMemberSession.MakeRequest(t, req, http.StatusNotFound)
|
||||
|
||||
t.Run("Pagination", func(t *testing.T) {
|
||||
defer test.MockVariableValue(&setting.UI.MembersPagingNum, 2)()
|
||||
assert.Len(t, listTeams(t, ownerSession, "?page=1"), 2)
|
||||
assert.Equal(t, []string{"test_team"}, listTeams(t, ownerSession, "?page=2"))
|
||||
})
|
||||
}
|
||||
|
||||
func testOrgSettings(t *testing.T) {
|
||||
session := loginUser(t, "user2")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user