fix lint and add test

This commit is contained in:
viehlieb 2023-11-30 14:40:12 +01:00
parent 80755e0e8f
commit 8eb6e25adf
2 changed files with 25 additions and 10 deletions

View File

@ -205,7 +205,7 @@ func HandleCallback(c echo.Context) error {
// does the oidc token contain well formed "vikunja_groups" through vikunja_scope
log.Debugf("Checking for vikunja_groups in token %v", cl.VikunjaGroups)
teamData, errs := getTeamDataFromToken(cl.VikunjaGroups, provider)
if teamData != nil && len(teamData) > 0 {
if len(teamData) > 0 {
for _, err := range errs {
log.Errorf("Error creating teams for user and vikunja groups %s: %v", cl.VikunjaGroups, err)
}
@ -224,7 +224,12 @@ func HandleCallback(c echo.Context) error {
if err != nil {
log.Errorf("Found error while leaving teams %v", err)
}
err = RemoveEmptySSOTeams(s, u, teamIDsToLeave)
errors := RemoveEmptySSOTeams(s, teamIDsToLeave)
if len(errors) > 0 {
for _, err := range errors {
log.Errorf("Found error while removing empty teams %v", err)
}
}
}
err = s.Commit()
if err != nil {
@ -261,15 +266,18 @@ func AssignOrCreateUserToTeams(s *xorm.Session, u *user.User, teamData []models.
return oidcTeams, err
}
func RemoveEmptySSOTeams(s *xorm.Session, u *user.User, teamIDs []int64) (err error) {
func RemoveEmptySSOTeams(s *xorm.Session, teamIDs []int64) (errs []error) {
for _, teamID := range teamIDs {
count, err := s.Where("team_id = ?", teamID).Count(&models.TeamMember{})
if count == 0 && err == nil {
log.Debugf("SSO team with id %v has no members. It will be deleted", teamID)
_, err = s.Where("id = ?", teamID).Delete(&models.Team{})
_, _err := s.Where("id = ?", teamID).Delete(&models.Team{})
if _err != nil {
errs = append(errs, _err)
}
}
}
return err
return errs
}
func RemoveUserFromTeamsByIds(s *xorm.Session, u *user.User, teamIDs []int64) (err error) {

View File

@ -187,8 +187,14 @@ func TestGetOrCreateUser(t *testing.T) {
assert.NoError(t, err)
err = RemoveUserFromTeamsByIds(s, u, teamIDsToLeave)
assert.NoError(t, err)
// err = RemoveEmptySSOTeams(s, u, teamIDsToLeave)
// assert.NoError(t, err)
errs = RemoveEmptySSOTeams(s, teamIDsToLeave)
for _, err = range errs {
assert.NoError(t, err)
}
errs = RemoveEmptySSOTeams(s, teamIDsToLeave)
for _, err = range errs {
assert.NoError(t, err)
}
err = s.Commit()
assert.NoError(t, err)
@ -222,11 +228,12 @@ func TestGetOrCreateUser(t *testing.T) {
assert.NoError(t, err)
err = RemoveUserFromTeamsByIds(s, u, teamIDsToLeave)
assert.NoError(t, err)
err = RemoveEmptySSOTeams(s, u, teamIDsToLeave)
assert.NoError(t, err)
errs = RemoveEmptySSOTeams(s, teamIDsToLeave)
for _, err := range errs {
assert.NoError(t, err)
}
err = s.Commit()
assert.NoError(t, err)
db.AssertMissing(t, "teams", map[string]interface{}{
"id": oidcTeams,
})