2022-03-29 09:29:02 +03:00
// Copyright 2017 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2022-03-29 09:29:02 +03:00
2022-06-15 10:02:00 +03:00
package organization_test
2022-03-29 09:29:02 +03:00
import (
"testing"
"code.gitea.io/gitea/models/db"
2022-06-15 10:02:00 +03:00
"code.gitea.io/gitea/models/organization"
2022-03-29 09:29:02 +03:00
"code.gitea.io/gitea/models/unittest"
"github.com/stretchr/testify/assert"
)
func TestTeam_IsOwnerTeam ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2022-08-16 05:22:25 +03:00
team := unittest . AssertExistsAndLoadBean ( t , & organization . Team { ID : 1 } )
2022-03-29 09:29:02 +03:00
assert . True ( t , team . IsOwnerTeam ( ) )
2022-08-16 05:22:25 +03:00
team = unittest . AssertExistsAndLoadBean ( t , & organization . Team { ID : 2 } )
2022-03-29 09:29:02 +03:00
assert . False ( t , team . IsOwnerTeam ( ) )
}
func TestTeam_IsMember ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
2022-08-16 05:22:25 +03:00
team := unittest . AssertExistsAndLoadBean ( t , & organization . Team { ID : 1 } )
2022-03-29 09:29:02 +03:00
assert . True ( t , team . IsMember ( 2 ) )
assert . False ( t , team . IsMember ( 4 ) )
assert . False ( t , team . IsMember ( unittest . NonexistentID ) )
2022-08-16 05:22:25 +03:00
team = unittest . AssertExistsAndLoadBean ( t , & organization . Team { ID : 2 } )
2022-03-29 09:29:02 +03:00
assert . True ( t , team . IsMember ( 2 ) )
assert . True ( t , team . IsMember ( 4 ) )
assert . False ( t , team . IsMember ( unittest . NonexistentID ) )
}
func TestTeam_GetRepositories ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
test := func ( teamID int64 ) {
2022-08-16 05:22:25 +03:00
team := unittest . AssertExistsAndLoadBean ( t , & organization . Team { ID : teamID } )
2022-03-29 09:29:02 +03:00
assert . NoError ( t , team . GetRepositoriesCtx ( db . DefaultContext ) )
assert . Len ( t , team . Repos , team . NumRepos )
for _ , repo := range team . Repos {
2022-06-15 10:02:00 +03:00
unittest . AssertExistsAndLoadBean ( t , & organization . TeamRepo { TeamID : teamID , RepoID : repo . ID } )
2022-03-29 09:29:02 +03:00
}
}
test ( 1 )
test ( 3 )
}
func TestTeam_GetMembers ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
test := func ( teamID int64 ) {
2022-08-16 05:22:25 +03:00
team := unittest . AssertExistsAndLoadBean ( t , & organization . Team { ID : teamID } )
2022-03-29 09:29:02 +03:00
assert . NoError ( t , team . GetMembersCtx ( db . DefaultContext ) )
assert . Len ( t , team . Members , team . NumMembers )
for _ , member := range team . Members {
2022-06-15 10:02:00 +03:00
unittest . AssertExistsAndLoadBean ( t , & organization . TeamUser { UID : member . ID , TeamID : teamID } )
2022-03-29 09:29:02 +03:00
}
}
test ( 1 )
test ( 3 )
}
func TestGetTeam ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
testSuccess := func ( orgID int64 , name string ) {
2022-06-15 10:02:00 +03:00
team , err := organization . GetTeam ( db . DefaultContext , orgID , name )
2022-03-29 09:29:02 +03:00
assert . NoError ( t , err )
assert . EqualValues ( t , orgID , team . OrgID )
assert . Equal ( t , name , team . Name )
}
testSuccess ( 3 , "Owners" )
testSuccess ( 3 , "team1" )
2022-06-15 10:02:00 +03:00
_ , err := organization . GetTeam ( db . DefaultContext , 3 , "nonexistent" )
2022-03-29 09:29:02 +03:00
assert . Error ( t , err )
2022-06-15 10:02:00 +03:00
_ , err = organization . GetTeam ( db . DefaultContext , unittest . NonexistentID , "Owners" )
2022-03-29 09:29:02 +03:00
assert . Error ( t , err )
}
func TestGetTeamByID ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
testSuccess := func ( teamID int64 ) {
2022-06-15 10:02:00 +03:00
team , err := organization . GetTeamByID ( db . DefaultContext , teamID )
2022-03-29 09:29:02 +03:00
assert . NoError ( t , err )
assert . EqualValues ( t , teamID , team . ID )
}
testSuccess ( 1 )
testSuccess ( 2 )
testSuccess ( 3 )
testSuccess ( 4 )
2022-06-15 10:02:00 +03:00
_ , err := organization . GetTeamByID ( db . DefaultContext , unittest . NonexistentID )
2022-03-29 09:29:02 +03:00
assert . Error ( t , err )
}
func TestIsTeamMember ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
test := func ( orgID , teamID , userID int64 , expected bool ) {
2022-06-15 10:02:00 +03:00
isMember , err := organization . IsTeamMember ( db . DefaultContext , orgID , teamID , userID )
2022-03-29 09:29:02 +03:00
assert . NoError ( t , err )
assert . Equal ( t , expected , isMember )
}
test ( 3 , 1 , 2 , true )
test ( 3 , 1 , 4 , false )
test ( 3 , 1 , unittest . NonexistentID , false )
test ( 3 , 2 , 2 , true )
test ( 3 , 2 , 4 , true )
test ( 3 , unittest . NonexistentID , unittest . NonexistentID , false )
test ( unittest . NonexistentID , unittest . NonexistentID , unittest . NonexistentID , false )
}
func TestGetTeamMembers ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
test := func ( teamID int64 ) {
2022-08-16 05:22:25 +03:00
team := unittest . AssertExistsAndLoadBean ( t , & organization . Team { ID : teamID } )
2022-06-15 10:02:00 +03:00
members , err := organization . GetTeamMembers ( db . DefaultContext , & organization . SearchMembersOptions {
2022-03-29 09:29:02 +03:00
TeamID : teamID ,
} )
assert . NoError ( t , err )
assert . Len ( t , members , team . NumMembers )
for _ , member := range members {
2022-06-15 10:02:00 +03:00
unittest . AssertExistsAndLoadBean ( t , & organization . TeamUser { UID : member . ID , TeamID : teamID } )
2022-03-29 09:29:02 +03:00
}
}
test ( 1 )
test ( 3 )
}
func TestGetUserTeams ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
test := func ( userID int64 ) {
2022-06-15 10:02:00 +03:00
teams , _ , err := organization . SearchTeam ( & organization . SearchTeamOptions { UserID : userID } )
2022-03-29 09:29:02 +03:00
assert . NoError ( t , err )
for _ , team := range teams {
2022-06-15 10:02:00 +03:00
unittest . AssertExistsAndLoadBean ( t , & organization . TeamUser { TeamID : team . ID , UID : userID } )
2022-03-29 09:29:02 +03:00
}
}
test ( 2 )
test ( 5 )
test ( unittest . NonexistentID )
}
func TestGetUserOrgTeams ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
test := func ( orgID , userID int64 ) {
2022-06-15 10:02:00 +03:00
teams , err := organization . GetUserOrgTeams ( db . DefaultContext , orgID , userID )
2022-03-29 09:29:02 +03:00
assert . NoError ( t , err )
for _ , team := range teams {
assert . EqualValues ( t , orgID , team . OrgID )
2022-06-15 10:02:00 +03:00
unittest . AssertExistsAndLoadBean ( t , & organization . TeamUser { TeamID : team . ID , UID : userID } )
2022-03-29 09:29:02 +03:00
}
}
test ( 3 , 2 )
test ( 3 , 4 )
test ( 3 , unittest . NonexistentID )
}
func TestHasTeamRepo ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
test := func ( teamID , repoID int64 , expected bool ) {
2022-08-16 05:22:25 +03:00
team := unittest . AssertExistsAndLoadBean ( t , & organization . Team { ID : teamID } )
2022-06-15 10:02:00 +03:00
assert . Equal ( t , expected , organization . HasTeamRepo ( db . DefaultContext , team . OrgID , teamID , repoID ) )
2022-03-29 09:29:02 +03:00
}
test ( 1 , 1 , false )
test ( 1 , 3 , true )
test ( 1 , 5 , true )
test ( 1 , unittest . NonexistentID , false )
test ( 2 , 3 , true )
test ( 2 , 5 , false )
}
func TestUsersInTeamsCount ( t * testing . T ) {
assert . NoError ( t , unittest . PrepareTestDatabase ( ) )
test := func ( teamIDs , userIDs [ ] int64 , expected int64 ) {
2022-06-15 10:02:00 +03:00
count , err := organization . UsersInTeamsCount ( teamIDs , userIDs )
2022-03-29 09:29:02 +03:00
assert . NoError ( t , err )
assert . Equal ( t , expected , count )
}
test ( [ ] int64 { 2 } , [ ] int64 { 1 , 2 , 3 , 4 } , 1 ) // only userid 2
test ( [ ] int64 { 1 , 2 , 3 , 4 , 5 } , [ ] int64 { 2 , 5 } , 2 ) // userid 2,4
test ( [ ] int64 { 1 , 2 , 3 , 4 , 5 } , [ ] int64 { 2 , 3 , 5 } , 3 ) // userid 2,4,5
}