Skip to content
This repository was archived by the owner on Jan 15, 2024. It is now read-only.

Commit 7ed0cb9

Browse files
committed
Implement write methods and tests
1 parent 0ae37b3 commit 7ed0cb9

File tree

2 files changed

+81
-5
lines changed

2 files changed

+81
-5
lines changed

alerting_mute_timing.go

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package gapi
22

3-
import "fmt"
3+
import (
4+
"bytes"
5+
"encoding/json"
6+
"fmt"
7+
)
48

59
// MuteTiming represents a Grafana Alerting mute timing.
610
type MuteTiming struct {
@@ -53,3 +57,30 @@ func (c *Client) MuteTiming(name string) (MuteTiming, error) {
5357
err := c.request("GET", uri, nil, nil, &mt)
5458
return mt, err
5559
}
60+
61+
// NewMuteTiming creates a new mute timing.
62+
func (c *Client) NewMuteTiming(mt *MuteTiming) error {
63+
req, err := json.Marshal(mt)
64+
if err != nil {
65+
return err
66+
}
67+
68+
return c.request("POST", "/api/v1/provisioning/mute-timings", nil, bytes.NewBuffer(req), nil)
69+
}
70+
71+
// UpdateMuteTiming updates a mute timing.
72+
func (c *Client) UpdateMuteTiming(mt *MuteTiming) error {
73+
uri := fmt.Sprintf("/api/v1/provisioning/mute-timings/%s", mt.Name)
74+
req, err := json.Marshal(mt)
75+
if err != nil {
76+
return err
77+
}
78+
79+
return c.request("PUT", uri, nil, bytes.NewBuffer(req), nil)
80+
}
81+
82+
// DeleteMutetiming deletes a mute timing.
83+
func (c *Client) DeleteMuteTiming(name string) error {
84+
uri := fmt.Sprintf("/api/v1/provisioning/mute-timings/%s", name)
85+
return c.request("DELETE", uri, nil, nil, nil)
86+
}

alerting_mute_timing_test.go

Lines changed: 49 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,6 @@ func TestMuteTimings(t *testing.T) {
4646
t.Run("get non-existent mute timing fails", func(t *testing.T) {
4747
server, client := gapiTestTools(t, 404, muteTimingJSON)
4848
defer server.Close()
49-
/*cfg := Config{
50-
BasicAuth: url.UserPassword("admin", "admin"),
51-
}
52-
client, _ := New("http://localhost:3000", cfg)*/
5349

5450
mt, err := client.MuteTiming("does not exist")
5551

@@ -58,6 +54,55 @@ func TestMuteTimings(t *testing.T) {
5854
t.Log(pretty.PrettyFormat(mt))
5955
}
6056
})
57+
58+
t.Run("create mute timing succeeds", func(t *testing.T) {
59+
server, client := gapiTestTools(t, 201, muteTimingJSON)
60+
defer server.Close()
61+
mt := createMuteTiming()
62+
63+
err := client.NewMuteTiming(&mt)
64+
65+
if err != nil {
66+
t.Error(err)
67+
}
68+
})
69+
70+
t.Run("update mute timing succeeds", func(t *testing.T) {
71+
server, client := gapiTestTools(t, 200, muteTimingJSON)
72+
defer server.Close()
73+
mt := createMuteTiming()
74+
mt.TimeIntervals[0].Weekdays = []WeekdayRange{"tuesday", "thursday"}
75+
76+
err := client.UpdateMuteTiming(&mt)
77+
78+
if err != nil {
79+
t.Error(err)
80+
}
81+
})
82+
83+
t.Run("delete mute timing succeeds", func(t *testing.T) {
84+
server, client := gapiTestTools(t, 204, muteTimingJSON)
85+
defer server.Close()
86+
87+
err := client.DeleteMuteTiming("timing two")
88+
89+
if err != nil {
90+
t.Error(err)
91+
}
92+
})
93+
}
94+
95+
func createMuteTiming() MuteTiming {
96+
return MuteTiming{
97+
Name: "timing two",
98+
TimeIntervals: []TimeInterval{
99+
{
100+
Weekdays: []WeekdayRange{"monday", "wednesday"},
101+
Months: []MonthRange{"1:3", "4"},
102+
Years: []YearRange{"2022", "2023"},
103+
},
104+
},
105+
}
61106
}
62107

63108
const getMuteTimingsJSON = `

0 commit comments

Comments
 (0)