gitea源码

team_test.go 6.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. // Copyright 2017 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package organization_test
  4. import (
  5. "testing"
  6. "code.gitea.io/gitea/models/db"
  7. "code.gitea.io/gitea/models/organization"
  8. repo_model "code.gitea.io/gitea/models/repo"
  9. "code.gitea.io/gitea/models/unittest"
  10. "github.com/stretchr/testify/assert"
  11. )
  12. func TestTeam_IsOwnerTeam(t *testing.T) {
  13. assert.NoError(t, unittest.PrepareTestDatabase())
  14. team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: 1})
  15. assert.True(t, team.IsOwnerTeam())
  16. team = unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: 2})
  17. assert.False(t, team.IsOwnerTeam())
  18. }
  19. func TestTeam_IsMember(t *testing.T) {
  20. assert.NoError(t, unittest.PrepareTestDatabase())
  21. team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: 1})
  22. assert.True(t, team.IsMember(t.Context(), 2))
  23. assert.False(t, team.IsMember(t.Context(), 4))
  24. assert.False(t, team.IsMember(t.Context(), unittest.NonexistentID))
  25. team = unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: 2})
  26. assert.True(t, team.IsMember(t.Context(), 2))
  27. assert.True(t, team.IsMember(t.Context(), 4))
  28. assert.False(t, team.IsMember(t.Context(), unittest.NonexistentID))
  29. }
  30. func TestTeam_GetRepositories(t *testing.T) {
  31. assert.NoError(t, unittest.PrepareTestDatabase())
  32. test := func(teamID int64) {
  33. team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: teamID})
  34. repos, err := repo_model.GetTeamRepositories(t.Context(), &repo_model.SearchTeamRepoOptions{
  35. TeamID: team.ID,
  36. })
  37. assert.NoError(t, err)
  38. assert.Len(t, repos, team.NumRepos)
  39. for _, repo := range repos {
  40. unittest.AssertExistsAndLoadBean(t, &organization.TeamRepo{TeamID: teamID, RepoID: repo.ID})
  41. }
  42. }
  43. test(1)
  44. test(3)
  45. }
  46. func TestTeam_GetMembers(t *testing.T) {
  47. assert.NoError(t, unittest.PrepareTestDatabase())
  48. test := func(teamID int64) {
  49. team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: teamID})
  50. assert.NoError(t, team.LoadMembers(t.Context()))
  51. assert.Len(t, team.Members, team.NumMembers)
  52. for _, member := range team.Members {
  53. unittest.AssertExistsAndLoadBean(t, &organization.TeamUser{UID: member.ID, TeamID: teamID})
  54. }
  55. }
  56. test(1)
  57. test(3)
  58. }
  59. func TestGetTeam(t *testing.T) {
  60. assert.NoError(t, unittest.PrepareTestDatabase())
  61. testSuccess := func(orgID int64, name string) {
  62. team, err := organization.GetTeam(t.Context(), orgID, name)
  63. assert.NoError(t, err)
  64. assert.Equal(t, orgID, team.OrgID)
  65. assert.Equal(t, name, team.Name)
  66. }
  67. testSuccess(3, "Owners")
  68. testSuccess(3, "team1")
  69. _, err := organization.GetTeam(t.Context(), 3, "nonexistent")
  70. assert.Error(t, err)
  71. _, err = organization.GetTeam(t.Context(), unittest.NonexistentID, "Owners")
  72. assert.Error(t, err)
  73. }
  74. func TestGetTeamByID(t *testing.T) {
  75. assert.NoError(t, unittest.PrepareTestDatabase())
  76. testSuccess := func(teamID int64) {
  77. team, err := organization.GetTeamByID(t.Context(), teamID)
  78. assert.NoError(t, err)
  79. assert.Equal(t, teamID, team.ID)
  80. }
  81. testSuccess(1)
  82. testSuccess(2)
  83. testSuccess(3)
  84. testSuccess(4)
  85. _, err := organization.GetTeamByID(t.Context(), unittest.NonexistentID)
  86. assert.Error(t, err)
  87. }
  88. func TestIsTeamMember(t *testing.T) {
  89. assert.NoError(t, unittest.PrepareTestDatabase())
  90. test := func(orgID, teamID, userID int64, expected bool) {
  91. isMember, err := organization.IsTeamMember(t.Context(), orgID, teamID, userID)
  92. assert.NoError(t, err)
  93. assert.Equal(t, expected, isMember)
  94. }
  95. test(3, 1, 2, true)
  96. test(3, 1, 4, false)
  97. test(3, 1, unittest.NonexistentID, false)
  98. test(3, 2, 2, true)
  99. test(3, 2, 4, true)
  100. test(3, unittest.NonexistentID, unittest.NonexistentID, false)
  101. test(unittest.NonexistentID, unittest.NonexistentID, unittest.NonexistentID, false)
  102. }
  103. func TestGetTeamMembers(t *testing.T) {
  104. assert.NoError(t, unittest.PrepareTestDatabase())
  105. test := func(teamID int64) {
  106. team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: teamID})
  107. members, err := organization.GetTeamMembers(t.Context(), &organization.SearchMembersOptions{
  108. TeamID: teamID,
  109. })
  110. assert.NoError(t, err)
  111. assert.Len(t, members, team.NumMembers)
  112. for _, member := range members {
  113. unittest.AssertExistsAndLoadBean(t, &organization.TeamUser{UID: member.ID, TeamID: teamID})
  114. }
  115. }
  116. test(1)
  117. test(3)
  118. }
  119. func TestGetUserTeams(t *testing.T) {
  120. assert.NoError(t, unittest.PrepareTestDatabase())
  121. test := func(userID int64) {
  122. teams, _, err := organization.SearchTeam(t.Context(), &organization.SearchTeamOptions{UserID: userID})
  123. assert.NoError(t, err)
  124. for _, team := range teams {
  125. unittest.AssertExistsAndLoadBean(t, &organization.TeamUser{TeamID: team.ID, UID: userID})
  126. }
  127. }
  128. test(2)
  129. test(5)
  130. test(unittest.NonexistentID)
  131. }
  132. func TestGetUserOrgTeams(t *testing.T) {
  133. assert.NoError(t, unittest.PrepareTestDatabase())
  134. test := func(orgID, userID int64) {
  135. teams, err := organization.GetUserOrgTeams(t.Context(), orgID, userID)
  136. assert.NoError(t, err)
  137. for _, team := range teams {
  138. assert.Equal(t, orgID, team.OrgID)
  139. unittest.AssertExistsAndLoadBean(t, &organization.TeamUser{TeamID: team.ID, UID: userID})
  140. }
  141. }
  142. test(3, 2)
  143. test(3, 4)
  144. test(3, unittest.NonexistentID)
  145. }
  146. func TestHasTeamRepo(t *testing.T) {
  147. assert.NoError(t, unittest.PrepareTestDatabase())
  148. test := func(teamID, repoID int64, expected bool) {
  149. team := unittest.AssertExistsAndLoadBean(t, &organization.Team{ID: teamID})
  150. assert.Equal(t, expected, organization.HasTeamRepo(t.Context(), team.OrgID, teamID, repoID))
  151. }
  152. test(1, 1, false)
  153. test(1, 3, true)
  154. test(1, 5, true)
  155. test(1, unittest.NonexistentID, false)
  156. test(2, 3, true)
  157. test(2, 5, false)
  158. }
  159. func TestUsersInTeamsCount(t *testing.T) {
  160. assert.NoError(t, unittest.PrepareTestDatabase())
  161. test := func(teamIDs, userIDs []int64, expected int64) {
  162. count, err := organization.UsersInTeamsCount(t.Context(), teamIDs, userIDs)
  163. assert.NoError(t, err)
  164. assert.Equal(t, expected, count)
  165. }
  166. test([]int64{2}, []int64{1, 2, 3, 4}, 1) // only userid 2
  167. test([]int64{1, 2, 3, 4, 5}, []int64{2, 5}, 2) // userid 2,4
  168. test([]int64{1, 2, 3, 4, 5}, []int64{2, 3, 5}, 3) // userid 2,4,5
  169. }
  170. func TestIsUsableTeamName(t *testing.T) {
  171. assert.NoError(t, organization.IsUsableTeamName("usable"))
  172. assert.True(t, db.IsErrNameReserved(organization.IsUsableTeamName("new")))
  173. }