Chore: Update tests to use team membership hooks (#86846)

* update tests to use team membership hooks

* linting
This commit is contained in:
Ieva
2024-04-24 16:55:42 +01:00
committed by GitHub
parent 9e54c450d7
commit 8028d1c3e1
4 changed files with 132 additions and 86 deletions
+108 -66
View File
@@ -92,9 +92,13 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
require.Equal(t, team1.OrgID, testOrgID)
require.EqualValues(t, team1.MemberCount, 0)
err = teamSvc.AddTeamMember(context.Background(), userIds[0], testOrgID, team1.ID, false, 0)
require.NoError(t, err)
err = teamSvc.AddTeamMember(context.Background(), userIds[1], testOrgID, team1.ID, true, 0)
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
err := AddOrUpdateTeamMemberHook(sess, userIds[0], testOrgID, team1.ID, false, 0)
if err != nil {
return err
}
return AddOrUpdateTeamMemberHook(sess, userIds[1], testOrgID, team1.ID, true, 0)
})
require.NoError(t, err)
q1 := &team.GetTeamMembersQuery{OrgID: testOrgID, TeamID: team1.ID, SignedInUser: testUser}
@@ -152,7 +156,9 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
team1 := teamQueryResult.Teams[0]
err = teamSvc.AddTeamMember(context.Background(), userId, testOrgID, team1.ID, true, 0)
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
return AddOrUpdateTeamMemberHook(sess, userId, testOrgID, team1.ID, true, 0)
})
require.NoError(t, err)
memberQuery := &team.GetTeamMembersQuery{OrgID: testOrgID, TeamID: team1.ID, External: true, SignedInUser: testUser}
@@ -168,7 +174,9 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
t.Run("Should be able to update users in a team", func(t *testing.T) {
userId := userIds[0]
err = teamSvc.AddTeamMember(context.Background(), userId, testOrgID, team1.ID, false, 0)
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
return AddOrUpdateTeamMemberHook(sess, userId, testOrgID, team1.ID, false, 0)
})
require.NoError(t, err)
qBeforeUpdate := &team.GetTeamMembersQuery{OrgID: testOrgID, TeamID: team1.ID, SignedInUser: testUser}
@@ -176,13 +184,9 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
require.NoError(t, err)
require.EqualValues(t, qBeforeUpdateResult[0].Permission, 0)
err = teamSvc.UpdateTeamMember(context.Background(), &team.UpdateTeamMemberCommand{
UserID: userId,
OrgID: testOrgID,
TeamID: team1.ID,
Permission: dashboardaccess.PERMISSION_ADMIN,
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
return AddOrUpdateTeamMemberHook(sess, userId, testOrgID, team1.ID, false, dashboardaccess.PERMISSION_ADMIN)
})
require.NoError(t, err)
qAfterUpdate := &team.GetTeamMembersQuery{OrgID: testOrgID, TeamID: team1.ID, SignedInUser: testUser}
@@ -195,7 +199,10 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
sqlStore = db.InitTestDB(t)
setup()
userID := userIds[0]
err = teamSvc.AddTeamMember(context.Background(), userID, testOrgID, team1.ID, false, 0)
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
return AddOrUpdateTeamMemberHook(sess, userID, testOrgID, team1.ID, false, 0)
})
require.NoError(t, err)
qBeforeUpdate := &team.GetTeamMembersQuery{OrgID: testOrgID, TeamID: team1.ID, SignedInUser: testUser}
@@ -204,13 +211,9 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
require.EqualValues(t, qBeforeUpdateResult[0].Permission, 0)
invalidPermissionLevel := dashboardaccess.PERMISSION_EDIT
err = teamSvc.UpdateTeamMember(context.Background(), &team.UpdateTeamMemberCommand{
UserID: userID,
OrgID: testOrgID,
TeamID: team1.ID,
Permission: invalidPermissionLevel,
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
return AddOrUpdateTeamMemberHook(sess, userID, testOrgID, team1.ID, false, invalidPermissionLevel)
})
require.NoError(t, err)
qAfterUpdate := &team.GetTeamMembersQuery{OrgID: testOrgID, TeamID: team1.ID, SignedInUser: testUser}
@@ -219,19 +222,6 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
require.EqualValues(t, qAfterUpdateResult[0].Permission, 0)
})
t.Run("Shouldn't be able to update a user not in the team.", func(t *testing.T) {
sqlStore = db.InitTestDB(t)
setup()
err = teamSvc.UpdateTeamMember(context.Background(), &team.UpdateTeamMemberCommand{
UserID: 1,
OrgID: testOrgID,
TeamID: team1.ID,
Permission: dashboardaccess.PERMISSION_ADMIN,
})
require.Error(t, err, team.ErrTeamMemberNotFound)
})
t.Run("Should be able to search for teams", func(t *testing.T) {
query := &team.SearchTeamsQuery{OrgID: testOrgID, Query: "group", Page: 1, SignedInUser: testUser}
queryResult, err := teamSvc.SearchTeams(context.Background(), query)
@@ -251,11 +241,30 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
require.NoError(t, err)
// Add a team member
err = teamSvc.AddTeamMember(context.Background(), userIds[0], testOrgID, team2.ID, false, 0)
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
err := AddOrUpdateTeamMemberHook(sess, userIds[2], testOrgID, team1.ID, false, 0)
if err != nil {
return err
}
err = AddOrUpdateTeamMemberHook(sess, userIds[3], testOrgID, team1.ID, false, 0)
if err != nil {
return err
}
return AddOrUpdateTeamMemberHook(sess, userIds[2], testOrgID, team2.ID, false, 0)
})
require.NoError(t, err)
defer func() {
err := teamSvc.RemoveTeamMember(context.Background(),
&team.RemoveTeamMemberCommand{OrgID: testOrgID, UserID: userIds[0], TeamID: team2.ID})
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
err := RemoveTeamMemberHook(sess, &team.RemoveTeamMemberCommand{OrgID: testOrgID, UserID: userIds[2], TeamID: team1.ID})
if err != nil {
return err
}
err = RemoveTeamMemberHook(sess, &team.RemoveTeamMemberCommand{OrgID: testOrgID, UserID: userIds[3], TeamID: team1.ID})
if err != nil {
return err
}
return RemoveTeamMemberHook(sess, &team.RemoveTeamMemberCommand{OrgID: testOrgID, UserID: userIds[2], TeamID: team2.ID})
})
require.NoError(t, err)
}()
@@ -304,7 +313,9 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
sqlStore = db.InitTestDB(t)
setup()
groupId := team2.ID
err := teamSvc.AddTeamMember(context.Background(), userIds[0], testOrgID, groupId, false, 0)
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
return AddOrUpdateTeamMemberHook(sess, userIds[0], testOrgID, groupId, false, 0)
})
require.NoError(t, err)
query := &team.GetTeamsByUserQuery{
@@ -323,10 +334,14 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
})
t.Run("Should be able to remove users from a group", func(t *testing.T) {
err = teamSvc.AddTeamMember(context.Background(), userIds[0], testOrgID, team1.ID, false, 0)
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
return AddOrUpdateTeamMemberHook(sess, userIds[0], testOrgID, team1.ID, false, 0)
})
require.NoError(t, err)
err = teamSvc.RemoveTeamMember(context.Background(), &team.RemoveTeamMemberCommand{OrgID: testOrgID, TeamID: team1.ID, UserID: userIds[0]})
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
return RemoveTeamMemberHook(sess, &team.RemoveTeamMemberCommand{OrgID: testOrgID, TeamID: team1.ID, UserID: userIds[0]})
})
require.NoError(t, err)
q2 := &team.GetTeamMembersQuery{OrgID: testOrgID, TeamID: team1.ID, SignedInUser: testUser}
@@ -336,16 +351,22 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
})
t.Run("Should have empty teams", func(t *testing.T) {
err = teamSvc.AddTeamMember(context.Background(), userIds[0], testOrgID, team1.ID, false, dashboardaccess.PERMISSION_ADMIN)
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
return AddOrUpdateTeamMemberHook(sess, userIds[0], testOrgID, team1.ID, false, dashboardaccess.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(), &team.UpdateTeamMemberCommand{OrgID: testOrgID, TeamID: team1.ID, UserID: userIds[0], Permission: 0})
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
return AddOrUpdateTeamMemberHook(sess, userIds[0], testOrgID, team1.ID, false, 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(), &team.RemoveTeamMemberCommand{OrgID: testOrgID, TeamID: team1.ID, UserID: userIds[0]})
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
return RemoveTeamMemberHook(sess, &team.RemoveTeamMemberCommand{OrgID: testOrgID, TeamID: team1.ID, UserID: userIds[0]})
})
require.NoError(t, err)
})
@@ -353,12 +374,17 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
sqlStore = db.InitTestDB(t)
setup()
err = teamSvc.AddTeamMember(context.Background(), userIds[0], testOrgID, team1.ID, false, dashboardaccess.PERMISSION_ADMIN)
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
err := AddOrUpdateTeamMemberHook(sess, userIds[0], testOrgID, team1.ID, false, dashboardaccess.PERMISSION_ADMIN)
if err != nil {
return err
}
return AddOrUpdateTeamMemberHook(sess, userIds[1], testOrgID, team1.ID, false, dashboardaccess.PERMISSION_ADMIN)
})
require.NoError(t, err)
err = teamSvc.AddTeamMember(context.Background(), userIds[1], testOrgID, team1.ID, false, dashboardaccess.PERMISSION_ADMIN)
require.NoError(t, err)
err = teamSvc.UpdateTeamMember(context.Background(), &team.UpdateTeamMemberCommand{OrgID: testOrgID, TeamID: team1.ID, UserID: userIds[0], Permission: 0})
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
return AddOrUpdateTeamMemberHook(sess, userIds[0], testOrgID, team1.ID, false, 0)
})
require.NoError(t, err)
})
})
@@ -379,12 +405,17 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
hiddenUsers := map[string]struct{}{"loginuser0": {}, "loginuser1": {}}
teamId := team1.ID
err = teamSvc.AddTeamMember(context.Background(), userIds[0], testOrgID, teamId, false, 0)
require.NoError(t, err)
err = teamSvc.AddTeamMember(context.Background(), userIds[1], testOrgID, teamId, false, 0)
require.NoError(t, err)
err = teamSvc.AddTeamMember(context.Background(), userIds[2], testOrgID, teamId, false, 0)
require.NoError(t, err)
err = sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
err := AddOrUpdateTeamMemberHook(sess, userIds[0], testOrgID, teamId, false, 0)
if err != nil {
return err
}
err = AddOrUpdateTeamMemberHook(sess, userIds[1], testOrgID, teamId, false, 0)
if err != nil {
return err
}
return AddOrUpdateTeamMemberHook(sess, userIds[2], testOrgID, teamId, false, 0)
})
searchQuery := &team.SearchTeamsQuery{OrgID: testOrgID, Page: 1, Limit: 10, SignedInUser: signedInUser, HiddenUsers: hiddenUsers}
searchQueryResult, err := teamSvc.SearchTeams(context.Background(), searchQuery)
@@ -417,13 +448,16 @@ func TestIntegrationTeamCommandsAndQueries(t *testing.T) {
require.NoError(t, err)
groupId := team2.ID
// add service account to team
err = teamSvc.AddTeamMember(context.Background(), serviceAccount.ID, testOrgID, groupId, false, 0)
require.NoError(t, err)
// add user to team
err = teamSvc.AddTeamMember(context.Background(), userIds[0], testOrgID, groupId, false, 0)
require.NoError(t, err)
dbErr := sqlStore.WithDbSession(context.Background(), func(sess *db.Session) error {
// add service account to team
err := AddOrUpdateTeamMemberHook(sess, serviceAccount.ID, testOrgID, groupId, false, 0)
if err != nil {
return err
}
// add user to team
return AddOrUpdateTeamMemberHook(sess, userIds[0], testOrgID, groupId, false, 0)
})
require.NoError(t, dbErr)
teamMembersQuery := &team.GetTeamMembersQuery{
OrgID: testOrgID,
@@ -550,14 +584,22 @@ func TestIntegrationSQLStore_GetTeamMembers_ACFilter(t *testing.T) {
userIds[i] = user.ID
}
errAddMember := teamSvc.AddTeamMember(context.Background(), userIds[0], testOrgID, team1.ID, false, 0)
require.NoError(t, errAddMember)
errAddMember = teamSvc.AddTeamMember(context.Background(), userIds[1], testOrgID, team1.ID, false, 0)
require.NoError(t, errAddMember)
errAddMember = teamSvc.AddTeamMember(context.Background(), userIds[2], testOrgID, team2.ID, false, 0)
require.NoError(t, errAddMember)
errAddMember = teamSvc.AddTeamMember(context.Background(), userIds[3], testOrgID, team2.ID, false, 0)
require.NoError(t, errAddMember)
errAddMembers := store.WithDbSession(context.Background(), func(sess *db.Session) error {
err := AddOrUpdateTeamMemberHook(sess, userIds[0], testOrgID, team1.ID, false, 0)
if err != nil {
return err
}
err = AddOrUpdateTeamMemberHook(sess, userIds[1], testOrgID, team1.ID, false, 0)
if err != nil {
return err
}
err = AddOrUpdateTeamMemberHook(sess, userIds[2], testOrgID, team2.ID, false, 0)
if err != nil {
return err
}
return AddOrUpdateTeamMemberHook(sess, userIds[3], testOrgID, team2.ID, false, 0)
})
require.NoError(t, errAddMembers)
}
store, cfg := db.InitTestDBWithCfg(t, db.InitTestDBOpt{})