@ -17,6 +17,7 @@ import (
"github.com/grafana/grafana/pkg/services/quota/quotaimpl"
"github.com/grafana/grafana/pkg/services/serviceaccounts"
"github.com/grafana/grafana/pkg/services/sqlstore"
"github.com/grafana/grafana/pkg/services/team"
"github.com/grafana/grafana/pkg/services/user"
"github.com/grafana/grafana/pkg/services/user/userimpl"
)
@ -47,7 +48,7 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
t . Run ( "Given saved users and two teams" , func ( t * testing . T ) {
var userIds [ ] int64
const testOrgID int64 = 1
var team1 , team2 models . Team
var team1 , team2 team . Team
var usr * user . User
var userCmd user . CreateUserCommand
var err error
@ -71,55 +72,55 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
setup ( )
t . Run ( "Should be able to create teams and add users" , func ( t * testing . T ) {
query := & models . SearchTeamsQuery { OrgId : testOrgID , Name : "group1 name" , Page : 1 , Limit : 10 , SignedInUser : testUser }
err = teamSvc . SearchTeams ( context . Background ( ) , query )
query := & team . SearchTeamsQuery { OrgID : testOrgID , Name : "group1 name" , Page : 1 , Limit : 10 , SignedInUser : testUser }
queryResult , err : = teamSvc . SearchTeams ( context . Background ( ) , query )
require . NoError ( t , err )
require . Equal ( t , query . Page , 1 )
team1 := query . Result . Teams [ 0 ]
team1 := queryResult . Teams [ 0 ]
require . Equal ( t , team1 . Name , "group1 name" )
require . Equal ( t , team1 . Email , "test1@test.com" )
require . Equal ( t , team1 . OrgId , testOrgID )
require . Equal ( t , team1 . OrgID , testOrgID )
require . EqualValues ( t , team1 . MemberCount , 0 )
err = teamSvc . AddTeamMember ( userIds [ 0 ] , testOrgID , team1 . Id , false , 0 )
err = teamSvc . AddTeamMember ( userIds [ 0 ] , testOrgID , team1 . ID , false , 0 )
require . NoError ( t , err )
err = teamSvc . AddTeamMember ( userIds [ 1 ] , testOrgID , team1 . Id , true , 0 )
err = teamSvc . AddTeamMember ( userIds [ 1 ] , testOrgID , team1 . ID , true , 0 )
require . NoError ( t , err )
q1 := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team1 . Id , SignedInUser : testUser }
q1 := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team1 . ID , SignedInUser : testUser }
err = teamSvc . GetTeamMembers ( context . Background ( ) , q1 )
require . NoError ( t , err )
require . Equal ( t , 2 , len ( q1 . Result ) )
require . Equal ( t , q1 . Result [ 0 ] . TeamId , team1 . Id )
require . Equal ( t , q1 . Result [ 0 ] . TeamId , team1 . ID )
require . Equal ( t , q1 . Result [ 0 ] . Login , "loginuser0" )
require . Equal ( t , q1 . Result [ 0 ] . OrgId , testOrgID )
require . Equal ( t , q1 . Result [ 1 ] . TeamId , team1 . Id )
require . Equal ( t , q1 . Result [ 1 ] . TeamId , team1 . ID )
require . Equal ( t , q1 . Result [ 1 ] . Login , "loginuser1" )
require . Equal ( t , q1 . Result [ 1 ] . OrgId , testOrgID )
require . Equal ( t , q1 . Result [ 1 ] . External , true )
q2 := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team1 . Id , External : true , SignedInUser : testUser }
q2 := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team1 . ID , External : true , SignedInUser : testUser }
err = teamSvc . GetTeamMembers ( context . Background ( ) , q2 )
require . NoError ( t , err )
require . Equal ( t , len ( q2 . Result ) , 1 )
require . Equal ( t , q2 . Result [ 0 ] . TeamId , team1 . Id )
require . Equal ( t , q2 . Result [ 0 ] . TeamId , team1 . ID )
require . Equal ( t , q2 . Result [ 0 ] . Login , "loginuser1" )
require . Equal ( t , q2 . Result [ 0 ] . OrgId , testOrgID )
require . Equal ( t , q2 . Result [ 0 ] . External , true )
err = teamSvc . SearchTeams ( context . Background ( ) , query )
queryResult , err = teamSvc . SearchTeams ( context . Background ( ) , query )
require . NoError ( t , err )
team1 = query . Result . Teams [ 0 ]
team1 = queryResult . Teams [ 0 ]
require . EqualValues ( t , team1 . MemberCount , 2 )
getTeamQuery := & models . GetTeamByIdQuery { OrgId : testOrgID , Id : team1 . Id , SignedInUser : testUser }
err = teamSvc . GetTeamById ( context . Background ( ) , getTeamQuery )
getTeamQuery := & team . GetTeamByIDQuery { OrgID : testOrgID , ID : team1 . ID , SignedInUser : testUser }
getTeamQueryResult , err := teamSvc . GetTeamByID ( context . Background ( ) , getTeamQuery )
require . NoError ( t , err )
team1 = getTeamQuery . Result
team1 = getTeamQueryResult
require . Equal ( t , team1 . Name , "group1 name" )
require . Equal ( t , team1 . Email , "test1@test.com" )
require . Equal ( t , team1 . OrgId , testOrgID )
require . Equal ( t , team1 . OrgID , testOrgID )
require . EqualValues ( t , team1 . MemberCount , 2 )
} )
@ -128,21 +129,21 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
setup ( )
userId := userIds [ 1 ]
teamQuery := & models . SearchTeamsQuery { OrgId : testOrgID , Name : "group1 name" , Page : 1 , Limit : 10 , SignedInUser : testUser }
err = teamSvc . SearchTeams ( context . Background ( ) , teamQuery )
teamQuery := & team . SearchTeamsQuery { OrgID : testOrgID , Name : "group1 name" , Page : 1 , Limit : 10 , SignedInUser : testUser }
teamQueryResult , err : = teamSvc . SearchTeams ( context . Background ( ) , teamQuery )
require . NoError ( t , err )
require . Equal ( t , teamQuery . Page , 1 )
team1 := teamQuery . Result . Teams [ 0 ]
team1 := teamQueryResult . Teams [ 0 ]
err = teamSvc . AddTeamMember ( userId , testOrgID , team1 . Id , true , 0 )
err = teamSvc . AddTeamMember ( userId , testOrgID , team1 . ID , true , 0 )
require . NoError ( t , err )
memberQuery := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team1 . Id , External : true , SignedInUser : testUser }
memberQuery := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team1 . ID , External : true , SignedInUser : testUser }
err = teamSvc . GetTeamMembers ( context . Background ( ) , memberQuery )
require . NoError ( t , err )
require . Equal ( t , len ( memberQuery . Result ) , 1 )
require . Equal ( t , memberQuery . Result [ 0 ] . TeamId , team1 . Id )
require . Equal ( t , memberQuery . Result [ 0 ] . TeamId , team1 . ID )
require . Equal ( t , memberQuery . Result [ 0 ] . Login , "loginuser1" )
require . Equal ( t , memberQuery . Result [ 0 ] . OrgId , testOrgID )
require . Equal ( t , memberQuery . Result [ 0 ] . External , true )
@ -151,10 +152,10 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
t . Run ( "Should be able to update users in a team" , func ( t * testing . T ) {
userId := userIds [ 0 ]
team := team1
err = teamSvc . AddTeamMember ( userId , testOrgID , team . Id , false , 0 )
err = teamSvc . AddTeamMember ( userId , testOrgID , team . ID , false , 0 )
require . NoError ( t , err )
qBeforeUpdate := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team . Id , SignedInUser : testUser }
qBeforeUpdate := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team . ID , SignedInUser : testUser }
err = teamSvc . GetTeamMembers ( context . Background ( ) , qBeforeUpdate )
require . NoError ( t , err )
require . EqualValues ( t , qBeforeUpdate . Result [ 0 ] . Permission , 0 )
@ -162,13 +163,13 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
err = teamSvc . UpdateTeamMember ( context . Background ( ) , & models . UpdateTeamMemberCommand {
UserId : userId ,
OrgId : testOrgID ,
TeamId : team . Id ,
TeamId : team . ID ,
Permission : models . PERMISSION_ADMIN ,
} )
require . NoError ( t , err )
qAfterUpdate := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team . Id , SignedInUser : testUser }
qAfterUpdate := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team . ID , SignedInUser : testUser }
err = teamSvc . GetTeamMembers ( context . Background ( ) , qAfterUpdate )
require . NoError ( t , err )
require . Equal ( t , qAfterUpdate . Result [ 0 ] . Permission , models . PERMISSION_ADMIN )
@ -179,10 +180,10 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
setup ( )
userID := userIds [ 0 ]
team := team1
err = teamSvc . AddTeamMember ( userID , testOrgID , team . Id , false , 0 )
err = teamSvc . AddTeamMember ( userID , testOrgID , team . ID , false , 0 )
require . NoError ( t , err )
qBeforeUpdate := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team . Id , SignedInUser : testUser }
qBeforeUpdate := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team . ID , SignedInUser : testUser }
err = teamSvc . GetTeamMembers ( context . Background ( ) , qBeforeUpdate )
require . NoError ( t , err )
require . EqualValues ( t , qBeforeUpdate . Result [ 0 ] . Permission , 0 )
@ -191,13 +192,13 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
err = teamSvc . UpdateTeamMember ( context . Background ( ) , & models . UpdateTeamMemberCommand {
UserId : userID ,
OrgId : testOrgID ,
TeamId : team . Id ,
TeamId : team . ID ,
Permission : invalidPermissionLevel ,
} )
require . NoError ( t , err )
qAfterUpdate := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team . Id , SignedInUser : testUser }
qAfterUpdate := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team . ID , SignedInUser : testUser }
err = teamSvc . GetTeamMembers ( context . Background ( ) , qAfterUpdate )
require . NoError ( t , err )
require . EqualValues ( t , qAfterUpdate . Result [ 0 ] . Permission , 0 )
@ -209,72 +210,73 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
err = teamSvc . UpdateTeamMember ( context . Background ( ) , & models . UpdateTeamMemberCommand {
UserId : 1 ,
OrgId : testOrgID ,
TeamId : team1 . Id ,
TeamId : team1 . ID ,
Permission : models . PERMISSION_ADMIN ,
} )
require . Error ( t , err , models . ErrTeamMemberNotFound )
require . Error ( t , err , team . ErrTeamMemberNotFound )
} )
t . Run ( "Should be able to search for teams" , func ( t * testing . T ) {
query := & models . SearchTeamsQuery { OrgId : testOrgID , Query : "group" , Page : 1 , SignedInUser : testUser }
err = teamSvc . SearchTeams ( context . Background ( ) , query )
query := & team . SearchTeamsQuery { OrgID : testOrgID , Query : "group" , Page : 1 , SignedInUser : testUser }
queryResult , err : = teamSvc . SearchTeams ( context . Background ( ) , query )
require . NoError ( t , err )
require . Equal ( t , len ( query . Result . Teams ) , 2 )
require . EqualValues ( t , query . Result . TotalCount , 2 )
require . Equal ( t , len ( queryResult . Teams ) , 2 )
require . EqualValues ( t , queryResult . TotalCount , 2 )
query2 := & models . SearchTeamsQuery { OrgId : testOrgID , Query : "" , SignedInUser : testUser }
err = teamSvc . SearchTeams ( context . Background ( ) , query2 )
query2 := & team . SearchTeamsQuery { OrgID : testOrgID , Query : "" , SignedInUser : testUser }
require . Equal ( t , len ( queryResult . Teams ) , 2 )
query2Result , err := teamSvc . SearchTeams ( context . Background ( ) , query2 )
require . NoError ( t , err )
require . Equal ( t , len ( query2 . Result . Teams ) , 2 )
require . Equal ( t , len ( query2Result . Teams ) , 2 )
} )
t . Run ( "Should be able to return all teams a user is member of" , func ( t * testing . T ) {
sqlStore = db . InitTestDB ( t )
setup ( )
groupId := team2 . Id
groupId := team2 . ID
err := teamSvc . AddTeamMember ( userIds [ 0 ] , testOrgID , groupId , false , 0 )
require . NoError ( t , err )
query := & models . GetTeamsByUserQuery {
OrgId : testOrgID ,
UserId : userIds [ 0 ] ,
query := & team . GetTeamsByUserQuery {
OrgID : testOrgID ,
UserID : userIds [ 0 ] ,
SignedInUser : & user . SignedInUser {
OrgID : testOrgID ,
Permissions : map [ int64 ] map [ string ] [ ] string { testOrgID : { ac . ActionOrgUsersRead : { ac . ScopeUsersAll } , ac . ActionTeamsRead : { ac . ScopeTeamsAll } } } ,
} ,
}
err = teamSvc . GetTeamsByUser ( context . Background ( ) , query )
queryResult , err : = teamSvc . GetTeamsByUser ( context . Background ( ) , query )
require . NoError ( t , err )
require . Equal ( t , len ( query . Result ) , 1 )
require . Equal ( t , query . Result [ 0 ] . Name , "group2 name" )
require . Equal ( t , query . Result [ 0 ] . Email , "test2@test.com" )
require . Equal ( t , len ( queryResult ) , 1 )
require . Equal ( t , queryResult [ 0 ] . Name , "group2 name" )
require . Equal ( t , queryResult [ 0 ] . Email , "test2@test.com" )
} )
t . Run ( "Should be able to remove users from a group" , func ( t * testing . T ) {
err = teamSvc . AddTeamMember ( userIds [ 0 ] , testOrgID , team1 . Id , false , 0 )
err = teamSvc . AddTeamMember ( userIds [ 0 ] , testOrgID , team1 . ID , false , 0 )
require . NoError ( t , err )
err = teamSvc . RemoveTeamMember ( context . Background ( ) , & models . RemoveTeamMemberCommand { OrgId : testOrgID , TeamId : team1 . Id , UserId : userIds [ 0 ] } )
err = teamSvc . RemoveTeamMember ( context . Background ( ) , & models . RemoveTeamMemberCommand { OrgId : testOrgID , TeamId : team1 . ID , UserId : userIds [ 0 ] } )
require . NoError ( t , err )
q2 := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team1 . Id , SignedInUser : testUser }
q2 := & models . GetTeamMembersQuery { OrgId : testOrgID , TeamId : team1 . ID , SignedInUser : testUser }
err = teamSvc . GetTeamMembers ( context . Background ( ) , q2 )
require . NoError ( t , err )
require . Equal ( t , len ( q2 . Result ) , 0 )
} )
t . Run ( "Should have empty teams" , func ( t * testing . T ) {
err = teamSvc . AddTeamMember ( userIds [ 0 ] , testOrgID , team1 . Id , false , models . PERMISSION_ADMIN )
err = teamSvc . AddTeamMember ( userIds [ 0 ] , testOrgID , team1 . ID , false , models . PERMISSION_ADMIN )
require . NoError ( t , err )
t . Run ( "A user should be able to remove the admin permission for the last admin" , func ( t * testing . T ) {
err = teamSvc . UpdateTeamMember ( context . Background ( ) , & models . UpdateTeamMemberCommand { OrgId : testOrgID , TeamId : team1 . Id , UserId : userIds [ 0 ] , Permission : 0 } )
err = teamSvc . UpdateTeamMember ( context . Background ( ) , & models . UpdateTeamMemberCommand { OrgId : testOrgID , TeamId : team1 . ID , UserId : userIds [ 0 ] , Permission : 0 } )
require . NoError ( t , err )
} )
t . Run ( "A user should be able to remove the last member" , func ( t * testing . T ) {
err = teamSvc . RemoveTeamMember ( context . Background ( ) , & models . RemoveTeamMemberCommand { OrgId : testOrgID , TeamId : team1 . Id , UserId : userIds [ 0 ] } )
err = teamSvc . RemoveTeamMember ( context . Background ( ) , & models . RemoveTeamMemberCommand { OrgId : testOrgID , TeamId : team1 . ID , UserId : userIds [ 0 ] } )
require . NoError ( t , err )
} )
@ -282,32 +284,32 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
sqlStore = db . InitTestDB ( t )
setup ( )
err = teamSvc . AddTeamMember ( userIds [ 0 ] , testOrgID , team1 . Id , false , models . PERMISSION_ADMIN )
err = teamSvc . AddTeamMember ( userIds [ 0 ] , testOrgID , team1 . ID , false , models . PERMISSION_ADMIN )
require . NoError ( t , err )
err = teamSvc . AddTeamMember ( userIds [ 1 ] , testOrgID , team1 . Id , false , models . PERMISSION_ADMIN )
err = teamSvc . AddTeamMember ( userIds [ 1 ] , testOrgID , team1 . ID , false , models . PERMISSION_ADMIN )
require . NoError ( t , err )
err = teamSvc . UpdateTeamMember ( context . Background ( ) , & models . UpdateTeamMemberCommand { OrgId : testOrgID , TeamId : team1 . Id , UserId : userIds [ 0 ] , Permission : 0 } )
err = teamSvc . UpdateTeamMember ( context . Background ( ) , & models . UpdateTeamMemberCommand { OrgId : testOrgID , TeamId : team1 . ID , UserId : userIds [ 0 ] , Permission : 0 } )
require . NoError ( t , err )
} )
} )
t . Run ( "Should be able to remove a group with users and permissions" , func ( t * testing . T ) {
groupId := team2 . Id
err := teamSvc . AddTeamMember ( userIds [ 1 ] , testOrgID , groupId , false , 0 )
groupID := team2 . ID
err := teamSvc . AddTeamMember ( userIds [ 1 ] , testOrgID , groupID , false , 0 )
require . NoError ( t , err )
err = teamSvc . AddTeamMember ( userIds [ 2 ] , testOrgID , groupId , false , 0 )
err = teamSvc . AddTeamMember ( userIds [ 2 ] , testOrgID , groupID , false , 0 )
require . NoError ( t , err )
err = updateDashboardACL ( t , sqlStore , 1 , & models . DashboardACL {
DashboardID : 1 , OrgID : testOrgID , Permission : models . PERMISSION_EDIT , TeamID : groupId ,
DashboardID : 1 , OrgID : testOrgID , Permission : models . PERMISSION_EDIT , TeamID : groupID ,
} )
require . NoError ( t , err )
err = teamSvc . DeleteTeam ( context . Background ( ) , & models . DeleteTeamCommand { OrgId : testOrgID , Id : groupId } )
err = teamSvc . DeleteTeam ( context . Background ( ) , & team . DeleteTeamCommand { OrgID : testOrgID , ID : groupID } )
require . NoError ( t , err )
query := & models . GetTeamByIdQuery { OrgId : testOrgID , Id : groupId }
err = teamSvc . GetTeamById ( context . Background ( ) , query )
require . Equal ( t , err , models . ErrTeamNotFound )
query := & team . GetTeamByIDQuery { OrgID : testOrgID , ID : groupID }
_ , err = teamSvc . GetTeamByID ( context . Background ( ) , query )
require . Equal ( t , err , team . ErrTeamNotFound )
permQuery := & models . GetDashboardACLInfoListQuery { DashboardID : 1 , OrgID : testOrgID }
err = getDashboardACLInfoList ( sqlStore , permQuery )
@ -319,21 +321,21 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
t . Run ( "Should be able to return if user is admin of teams or not" , func ( t * testing . T ) {
sqlStore = db . InitTestDB ( t )
setup ( )
groupId := team2 . Id
groupId := team2 . ID
err := teamSvc . AddTeamMember ( userIds [ 0 ] , testOrgID , groupId , false , 0 )
require . NoError ( t , err )
err = teamSvc . AddTeamMember ( userIds [ 1 ] , testOrgID , groupId , false , models . PERMISSION_ADMIN )
require . NoError ( t , err )
query := & models . IsAdminOfTeamsQuery { SignedInUser : & user . SignedInUser { OrgID : testOrgID , UserID : userIds [ 0 ] } }
err = teamSvc . IsAdminOfTeams ( context . Background ( ) , query )
query := & team . IsAdminOfTeamsQuery { SignedInUser : & user . SignedInUser { OrgID : testOrgID , UserID : userIds [ 0 ] } }
queryResult , err : = teamSvc . IsAdminOfTeams ( context . Background ( ) , query )
require . NoError ( t , err )
require . False ( t , query . Result )
require . False ( t , queryResult )
query = & models . IsAdminOfTeamsQuery { SignedInUser : & user . SignedInUser { OrgID : testOrgID , UserID : userIds [ 1 ] } }
err = teamSvc . IsAdminOfTeams ( context . Background ( ) , query )
query = & team . IsAdminOfTeamsQuery { SignedInUser : & user . SignedInUser { OrgID : testOrgID , UserID : userIds [ 1 ] } }
queryResult , err = teamSvc . IsAdminOfTeams ( context . Background ( ) , query )
require . NoError ( t , err )
require . True ( t , query . Result )
require . True ( t , queryResult )
} )
t . Run ( "Should not return hidden users in team member count" , func ( t * testing . T ) {
@ -351,7 +353,7 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
}
hiddenUsers := map [ string ] struct { } { "loginuser0" : { } , "loginuser1" : { } }
teamId := team1 . Id
teamId := team1 . ID
err = teamSvc . AddTeamMember ( userIds [ 0 ] , testOrgID , teamId , false , 0 )
require . NoError ( t , err )
err = teamSvc . AddTeamMember ( userIds [ 1 ] , testOrgID , teamId , false , 0 )
@ -359,24 +361,24 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
err = teamSvc . AddTeamMember ( userIds [ 2 ] , testOrgID , teamId , false , 0 )
require . NoError ( t , err )
searchQuery := & models . SearchTeamsQuery { OrgId : testOrgID , Page : 1 , Limit : 10 , SignedInUser : signedInUser , HiddenUsers : hiddenUsers }
err = teamSvc . SearchTeams ( context . Background ( ) , searchQuery )
searchQuery := & team . SearchTeamsQuery { OrgID : testOrgID , Page : 1 , Limit : 10 , SignedInUser : signedInUser , HiddenUsers : hiddenUsers }
s ea rchQue ryResult , err : = teamSvc . SearchTeams ( context . Background ( ) , searchQuery )
require . NoError ( t , err )
require . Equal ( t , len ( searchQuery . Result . Teams ) , 2 )
team1 := searchQuery . Result . Teams [ 0 ]
require . Equal ( t , len ( searchQueryResult . Teams ) , 2 )
team1 := searchQueryResult . Teams [ 0 ]
require . EqualValues ( t , team1 . MemberCount , 2 )
searchQueryFilteredByUser := & models . SearchTeamsQuery { OrgId : testOrgID , Page : 1 , Limit : 10 , UserId Filter : userIds [ 0 ] , SignedInUser : signedInUser , HiddenUsers : hiddenUsers }
err = teamSvc . SearchTeams ( context . Background ( ) , searchQueryFilteredByUser )
searchQueryFilteredByUser := & team . SearchTeamsQuery { OrgID : testOrgID , Page : 1 , Limit : 10 , UserID Filter : userIds [ 0 ] , SignedInUser : signedInUser , HiddenUsers : hiddenUsers }
s ea rchQue ryFilteredByUserResult , err : = teamSvc . SearchTeams ( context . Background ( ) , searchQueryFilteredByUser )
require . NoError ( t , err )
require . Equal ( t , len ( searchQueryFilteredByUser . Result . Teams ) , 1 )
team1 = searchQuery . Result . Teams [ 0 ]
require . Equal ( t , len ( searchQueryFilteredByUserResult . Teams ) , 1 )
team1 = searchQueryResult . Teams [ 0 ]
require . EqualValues ( t , team1 . MemberCount , 2 )
getTeamQuery := & models . GetTeamByIdQuery { OrgId : testOrgID , Id : teamId , SignedInUser : signedInUser , HiddenUsers : hiddenUsers }
err = teamSvc . GetTeamById ( context . Background ( ) , getTeamQuery )
getTeamQuery := & team . GetTeamByIDQuery { OrgID : testOrgID , ID : teamId , SignedInUser : signedInUser , HiddenUsers : hiddenUsers }
getTeamQueryResult , err := teamSvc . GetTeamByID ( context . Background ( ) , getTeamQuery )
require . NoError ( t , err )
require . EqualValues ( t , getTeamQuery . Result . MemberCount , 2 )
require . EqualValues ( t , getTeamQueryResult . MemberCount , 2 )
} )
t . Run ( "Should be able to exclude service accounts from teamembers" , func ( t * testing . T ) {
@ -396,7 +398,7 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
serviceAccount , err := userSvc . CreateUserForTests ( context . Background ( ) , & userCmd )
require . NoError ( t , err )
groupId := team2 . Id
groupId := team2 . ID
// add service account to team
err = teamSvc . AddTeamMember ( serviceAccount . ID , testOrgID , groupId , false , 0 )
require . NoError ( t , err )
@ -425,15 +427,15 @@ func TestIntegrationSQLStore_SearchTeams(t *testing.T) {
}
type searchTeamsTestCase struct {
desc string
query * models . SearchTeamsQuery
query * team . SearchTeamsQuery
expectedNumUsers int
}
tests := [ ] searchTeamsTestCase {
{
desc : "should return all teams" ,
query : & models . SearchTeamsQuery {
OrgId : 1 ,
query : & team . SearchTeamsQuery {
OrgID : 1 ,
SignedInUser : & user . SignedInUser {
OrgID : 1 ,
Permissions : map [ int64 ] map [ string ] [ ] string { 1 : { ac . ActionTeamsRead : { ac . ScopeTeamsAll } } } ,
@ -443,8 +445,8 @@ func TestIntegrationSQLStore_SearchTeams(t *testing.T) {
} ,
{
desc : "should return no teams" ,
query : & models . SearchTeamsQuery {
OrgId : 1 ,
query : & team . SearchTeamsQuery {
OrgID : 1 ,
SignedInUser : & user . SignedInUser {
OrgID : 1 ,
Permissions : map [ int64 ] map [ string ] [ ] string { 1 : { ac . ActionTeamsRead : { "" } } } ,
@ -454,8 +456,8 @@ func TestIntegrationSQLStore_SearchTeams(t *testing.T) {
} ,
{
desc : "should return some teams" ,
query : & models . SearchTeamsQuery {
OrgId : 1 ,
query : & team . SearchTeamsQuery {
OrgID : 1 ,
SignedInUser : & user . SignedInUser {
OrgID : 1 ,
Permissions : map [ int64 ] map [ string ] [ ] string { 1 : { ac . ActionTeamsRead : {
@ -480,14 +482,14 @@ func TestIntegrationSQLStore_SearchTeams(t *testing.T) {
for _ , tt := range tests {
t . Run ( tt . desc , func ( t * testing . T ) {
err := teamSvc . SearchTeams ( context . Background ( ) , tt . query )
queryResult , err := teamSvc . SearchTeams ( context . Background ( ) , tt . query )
require . NoError ( t , err )
assert . Len ( t , tt . query . Result . Teams , tt . expectedNumUsers )
assert . Equal ( t , tt . query . Result . TotalCount , int64 ( tt . expectedNumUsers ) )
assert . Len ( t , queryResult . Teams , tt . expectedNumUsers )
assert . Equal ( t , queryResult . TotalCount , int64 ( tt . expectedNumUsers ) )
if ! hasWildcardScope ( tt . query . SignedInUser , ac . ActionTeamsRead ) {
for _ , team := range tt . query . Result . Teams {
assert . Contains ( t , tt . query . SignedInUser . Permissions [ tt . query . SignedInUser . OrgID ] [ ac . ActionTeamsRead ] , fmt . Sprintf ( "teams:id:%d" , team . Id ) )
for _ , team := range queryResult . Teams {
assert . Contains ( t , tt . query . SignedInUser . Permissions [ tt . query . SignedInUser . OrgID ] [ ac . ActionTeamsRead ] , fmt . Sprintf ( "teams:id:%d" , team . ID ) )
}
}
} )
@ -527,13 +529,13 @@ func TestIntegrationSQLStore_GetTeamMembers_ACFilter(t *testing.T) {
userIds [ i ] = user . ID
}
errAddMember := teamSvc . AddTeamMember ( userIds [ 0 ] , testOrgID , team1 . Id , false , 0 )
errAddMember := teamSvc . AddTeamMember ( userIds [ 0 ] , testOrgID , team1 . ID , false , 0 )
require . NoError ( t , errAddMember )
errAddMember = teamSvc . AddTeamMember ( userIds [ 1 ] , testOrgID , team1 . Id , false , 0 )
errAddMember = teamSvc . AddTeamMember ( userIds [ 1 ] , testOrgID , team1 . ID , false , 0 )
require . NoError ( t , errAddMember )
errAddMember = teamSvc . AddTeamMember ( userIds [ 2 ] , testOrgID , team2 . Id , false , 0 )
errAddMember = teamSvc . AddTeamMember ( userIds [ 2 ] , testOrgID , team2 . ID , false , 0 )
require . NoError ( t , errAddMember )
errAddMember = teamSvc . AddTeamMember ( userIds [ 3 ] , testOrgID , team2 . Id , false , 0 )
errAddMember = teamSvc . AddTeamMember ( userIds [ 3 ] , testOrgID , team2 . ID , false , 0 )
require . NoError ( t , errAddMember )
}