From c206df79ecf2edfef2688e71bcd09e14e53231c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Gouteroux?= Date: Fri, 18 Jun 2021 13:41:00 +0200 Subject: [PATCH 1/2] add support of team external group --- team_external_group.go | 43 +++++++++++++++++++++++ team_external_group_test.go | 70 +++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 team_external_group.go create mode 100644 team_external_group_test.go diff --git a/team_external_group.go b/team_external_group.go new file mode 100644 index 00000000..88c994bd --- /dev/null +++ b/team_external_group.go @@ -0,0 +1,43 @@ +package gapi + +import ( + "bytes" + "encoding/json" + "fmt" +) + +// TeamGroup represents a Grafana TeamGroup. +type TeamGroup struct { + OrgID int64 `json:"orgId,omitempty"` + TeamID int64 `json:"teamId,omitempty"` + GroupID string `json:"groupID,omitempty"` +} + +// TeamGroups fetches and returns the list of Grafana team group whose Team ID it's passed. +func (c *Client) TeamGroups(id int64) ([]TeamGroup, error) { + teamGroups := make([]TeamGroup, 0) + err := c.request("GET", fmt.Sprintf("/api/teams/%d/groups", id), nil, nil, &teamGroups) + if err != nil { + return teamGroups, err + } + + return teamGroups, nil +} + +// NewTeamGroup creates a new Grafana Team Group . +func (c *Client) NewTeamGroup(id int64, groupId string) error { + dataMap := map[string]string{ + "groupId": groupId, + } + data, err := json.Marshal(dataMap) + if err != nil { + return err + } + + return c.request("POST", fmt.Sprintf("/api/teams/%d/groups", id), nil, bytes.NewBuffer(data), nil) +} + +// DeleteTeam deletes the Grafana team whose ID it's passed. +func (c *Client) DeleteTeamGroup(id int64, groupId string) error { + return c.request("DELETE", fmt.Sprintf("/api/teams/%d/groups/%s", id, groupId), nil, nil, nil) +} diff --git a/team_external_group_test.go b/team_external_group_test.go new file mode 100644 index 00000000..1cebc871 --- /dev/null +++ b/team_external_group_test.go @@ -0,0 +1,70 @@ +package gapi + +import ( + "testing" + + "github.com/gobs/pretty" +) + +const ( + getTeamGroupsJSON = ` +[ + { + "orgId": 1, + "teamId": 1, + "groupId": "test" + } +] +` + createdTeamGroupJSON = ` +{ + "message":"Group added to Team" +} +` + + deletedTeamGroupJSON = ` +{ + "message":"Team Group removed" +} +` +) + +func TestTeamGroups(t *testing.T) { + server, client := gapiTestTools(t, 200, getTeamGroupsJSON) + defer server.Close() + + teamID := int64(1) + teamGroups, err := client.TeamGroups(teamID) + if err != nil { + t.Fatal(err) + } + + t.Log(pretty.PrettyFormat(teamGroups)) + + if len(teamGroups) != 1 { + t.Error("Length of returned teamGroups should be 1") + } + if teamGroups[0].TeamID != 1 || teamGroups[0].OrgID != 1 || teamGroups[0].GroupID != "test" { + t.Error("Not correctly parsing returned teamGroups.") + } +} + +func TestNewTeamGroup(t *testing.T) { + server, client := gapiTestTools(t, 200, createdTeamGroupJSON) + defer server.Close() + + err := client.NewTeamGroup(int64(1), "test") + if err != nil { + t.Fatal(err) + } +} + +func TestDeleteTeamGroup(t *testing.T) { + server, client := gapiTestTools(t, 200, deletedTeamGroupJSON) + defer server.Close() + + err := client.DeleteTeamGroup(int64(1), "test") + if err != nil { + t.Fatal(err) + } +} From 71dd07c18d56fb8159d44c614be01e67060d4379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Gouteroux?= Date: Fri, 18 Jun 2021 13:46:44 +0200 Subject: [PATCH 2/2] fix stylecheck --- team_external_group.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/team_external_group.go b/team_external_group.go index 88c994bd..a2564492 100644 --- a/team_external_group.go +++ b/team_external_group.go @@ -25,9 +25,9 @@ func (c *Client) TeamGroups(id int64) ([]TeamGroup, error) { } // NewTeamGroup creates a new Grafana Team Group . -func (c *Client) NewTeamGroup(id int64, groupId string) error { +func (c *Client) NewTeamGroup(id int64, groupID string) error { dataMap := map[string]string{ - "groupId": groupId, + "groupId": groupID, } data, err := json.Marshal(dataMap) if err != nil { @@ -38,6 +38,6 @@ func (c *Client) NewTeamGroup(id int64, groupId string) error { } // DeleteTeam deletes the Grafana team whose ID it's passed. -func (c *Client) DeleteTeamGroup(id int64, groupId string) error { - return c.request("DELETE", fmt.Sprintf("/api/teams/%d/groups/%s", id, groupId), nil, nil, nil) +func (c *Client) DeleteTeamGroup(id int64, groupID string) error { + return c.request("DELETE", fmt.Sprintf("/api/teams/%d/groups/%s", id, groupID), nil, nil, nil) }