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.

team_test.go 5.6KB

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