add test team member (#1842)

* return err if teams API fails with StatusCode other than 404
* add unit test for 404 at team members

Co-authored-by: Jociele Padilha <jociele.padilha@zalando.de>
Co-authored-by: Felix Kunde <felix-kunde@gmx.de>
This commit is contained in:
Jociele Padilha
2022-04-14 10:02:54 +02:00
committed by GitHub
co-authored by Jociele Padilha Felix Kunde
parent 9bcb25ac7e
commit 483bf624ee
4 changed files with 267 additions and 242 deletions
+5 -5
View File
@@ -194,8 +194,8 @@ type mockTeamsAPIClient struct {
members []string
}
func (m *mockTeamsAPIClient) TeamInfo(teamID, token string) (tm *teams.Team, err error) {
return &teams.Team{Members: m.members}, nil
func (m *mockTeamsAPIClient) TeamInfo(teamID, token string) (tm *teams.Team, statusCode int, err error) {
return &teams.Team{Members: m.members}, statusCode, nil
}
func (m *mockTeamsAPIClient) setMembers(members []string) {
@@ -260,15 +260,15 @@ type mockTeamsAPIClientMultipleTeams struct {
teams []mockTeam
}
func (m *mockTeamsAPIClientMultipleTeams) TeamInfo(teamID, token string) (tm *teams.Team, err error) {
func (m *mockTeamsAPIClientMultipleTeams) TeamInfo(teamID, token string) (tm *teams.Team, statusCode int, err error) {
for _, team := range m.teams {
if team.teamID == teamID {
return &teams.Team{Members: team.members}, nil
return &teams.Team{Members: team.members}, statusCode, nil
}
}
// should not be reached if a slice with teams is populated correctly
return nil, nil
return nil, statusCode, nil
}
// Test adding members of maintenance teams that get superuser rights for all PG databases
+8 -2
View File
@@ -6,6 +6,7 @@ import (
"encoding/gob"
"encoding/json"
"fmt"
"net/http"
"reflect"
"sort"
"strings"
@@ -272,9 +273,14 @@ func (c *Cluster) getTeamMembers(teamID string) ([]string, error) {
return nil, fmt.Errorf("could not get oauth token to authenticate to team service API: %v", err)
}
teamInfo, err := c.teamsAPIClient.TeamInfo(teamID, token)
teamInfo, statusCode, err := c.teamsAPIClient.TeamInfo(teamID, token)
if err != nil {
c.logger.Warningf("could not get team info for team %q: %v", teamID, err)
if statusCode == http.StatusNotFound {
c.logger.Warningf("could not get team info for team %q: %v", teamID, err)
} else {
return nil, fmt.Errorf("could not get team info for team %q: %v", teamID, err)
}
} else {
for _, member := range teamInfo.Members {
if !(util.SliceContains(members, member)) {