Browse Source

appease gocyclo

pull/305/head
Richard van der Hoff 6 years ago
parent
commit
16422c64e2
  1. 126
      src/github.com/matrix-org/go-neb/services/alertmanager/alertmanager_test.go

126
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" -}}
<a href="{{ .GeneratorURL }}">source</a>
<a href="{{ .SilenceURL }}">silence</a>
{{- 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" -}}
<a href="{{ .GeneratorURL }}">source</a>
<a href="{{ .SilenceURL }}">silence</a>
{{- 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
}
Loading…
Cancel
Save