From 16422c64e26f7a4c4171713583d53cca08ec0123 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Mon, 23 Dec 2019 02:32:06 +0000 Subject: [PATCH] appease gocyclo --- .../alertmanager/alertmanager_test.go | 126 ++++++++++-------- 1 file changed, 69 insertions(+), 57 deletions(-) diff --git a/src/github.com/matrix-org/go-neb/services/alertmanager/alertmanager_test.go b/src/github.com/matrix-org/go-neb/services/alertmanager/alertmanager_test.go index 13c57c5..3771eb6 100644 --- a/src/github.com/matrix-org/go-neb/services/alertmanager/alertmanager_test.go +++ b/src/github.com/matrix-org/go-neb/services/alertmanager/alertmanager_test.go @@ -21,56 +21,10 @@ func TestNotify(t *testing.T) { // Intercept message sending to Matrix and mock responses msgs := []gomatrix.HTMLMessage{} - matrixTrans := struct{ testutils.MockTransport }{} - matrixTrans.RT = func(req *http.Request) (*http.Response, error) { - if !strings.Contains(req.URL.String(), "/send/m.room.message") { - return nil, fmt.Errorf("Unhandled URL: %s", req.URL.String()) - } - var msg gomatrix.HTMLMessage - if err := json.NewDecoder(req.Body).Decode(&msg); err != nil { - return nil, fmt.Errorf("Failed to decode request JSON: %s", err) - } - msgs = append(msgs, msg) - return &http.Response{ - StatusCode: 200, - Body: ioutil.NopCloser(bytes.NewBufferString(`{"event_id":"$yup:event"}`)), - }, nil - } - matrixCli, _ := gomatrix.NewClient("https://hs", "@neb:hs", "its_a_secret") - matrixCli.Client = &http.Client{Transport: matrixTrans} + matrixCli := buildTestClient(&msgs) // create the service - htmlTemplate, err := json.Marshal( - `{{range .Alerts}} - {{index .Labels "severity" }} : {{- index .Labels "alertname" -}} - source - silence - {{- end }} - `, - ) - - if err != nil { - t.Fatal(err) - } - - textTemplate, err := json.Marshal(`{{range .Alerts}}{{index .Labels "alertname"}} {{end}}`) - if err != nil { - t.Fatal(err) - } - - config := fmt.Sprintf(`{ - "rooms":{ "!testroom:id" : { - "text_template":%s, - "html_template":%s, - "msg_type":"m.text" - }} - }`, textTemplate, htmlTemplate, - ) - - srv, err := types.CreateService("id", "alertmanager", "@neb:hs", []byte(config)) - if err != nil { - t.Fatal(err) - } + srv := buildTestService(t) // send a notification req, err := http.NewRequest( @@ -78,22 +32,22 @@ func TestNotify(t *testing.T) { { "externalURL": "http://alertmanager", "alerts": [ - { - "labels": { + { + "labels": { "alertname": "alert 1", "severity": "huge" - }, + }, "generatorURL": "http://x" - }, - { - "labels": { + }, + { + "labels": { "alertname": "alert 2", "severity": "tiny" - }, + }, "generatorURL": "http://y" - } + } ] - } + } `), ) if err != nil { @@ -142,3 +96,61 @@ func TestNotify(t *testing.T) { t.Errorf("Did not find any silence lines") } } + +func buildTestClient(msgs *[]gomatrix.HTMLMessage) *gomatrix.Client { + matrixTrans := struct{ testutils.MockTransport }{} + matrixTrans.RT = func(req *http.Request) (*http.Response, error) { + if !strings.Contains(req.URL.String(), "/send/m.room.message") { + return nil, fmt.Errorf("Unhandled URL: %s", req.URL.String()) + } + var msg gomatrix.HTMLMessage + if err := json.NewDecoder(req.Body).Decode(&msg); err != nil { + return nil, fmt.Errorf("Failed to decode request JSON: %s", err) + } + *msgs = append(*msgs, msg) + return &http.Response{ + StatusCode: 200, + Body: ioutil.NopCloser(bytes.NewBufferString(`{"event_id":"$yup:event"}`)), + }, nil + } + matrixCli, _ := gomatrix.NewClient("https://hs", "@neb:hs", "its_a_secret") + matrixCli.Client = &http.Client{Transport: matrixTrans} + return matrixCli +} + +func buildTestService(t *testing.T) types.Service { + htmlTemplate, err := json.Marshal( + `{{range .Alerts}} + {{index .Labels "severity" }} : {{- index .Labels "alertname" -}} + source + silence + {{- end }} + `, + ) + + if err != nil { + t.Fatal(err) + } + + textTemplate, err := json.Marshal(`{{range .Alerts}}{{index .Labels "alertname"}} {{end}}`) + if err != nil { + t.Fatal(err) + } + + config := fmt.Sprintf(`{ + "rooms":{ "!testroom:id" : { + "text_template":%s, + "html_template":%s, + "msg_type":"m.text" + }} + }`, textTemplate, htmlTemplate, + ) + + srv, err := types.CreateService("id", "alertmanager", "@neb:hs", []byte(config)) + + if err != nil { + t.Fatal(err) + } + + return srv +}