51 lines
1.8 KiB
Go
51 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"gotest.tools/v3/assert"
|
|
)
|
|
|
|
func TestSlackToMessagePipeline(t *testing.T) {
|
|
ctx, can := context.WithTimeout(context.Background(), time.Second*5)
|
|
defer can()
|
|
|
|
driver, _ := NewDriver(ctx, "/tmp/f")
|
|
pipeline, err := NewSlackToMessagePipeline(ctx, Config{driver: driver})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
go func() {
|
|
if err := pipeline.Process(ctx); err != nil && ctx.Err() == nil {
|
|
t.Fatal(err)
|
|
}
|
|
}()
|
|
|
|
want := Message{
|
|
ID: "1712927439.728409/1712927439",
|
|
TS: 1712927439,
|
|
Source: "https://renderinc.slack.com/archives/C06U1DDBBU4/p1712927439728409",
|
|
Channel: "C06U1DDBBU4",
|
|
Thread: "1712927439.728409",
|
|
EventName: "",
|
|
Event: "11071",
|
|
Plaintext: "At least one alertconfig run has failed unexpectedly.\nDashboard: <https://grafana.render.com/d/VLZU83YVk?orgId=1>\nPanel: <https://grafana.render.com/d/VLZU83YVk?orgId=1&viewPanel=17>\nSource: <https://grafana.render.com/alerting/grafana/fa7b06b8-b4d8-4979-bce7-5e1c432edd81/view?orgId=1>",
|
|
Asset: "At least one alertconfig run has failed unexpectedly.\nDashboard: <https://grafana.render.com/d/VLZU83YVk?orgId=1>\nPanel: <https://grafana.render.com/d/VLZU83YVk?orgId=1&viewPanel=17>\nSource: <https://grafana.render.com/alerting/grafana/fa7b06b8-b4d8-4979-bce7-5e1c432edd81/view?orgId=1>",
|
|
Datacenter: "alertname:Alertconfig Workflow Failed, grafana_folder:Datastores, rule_uid:a7639f7e-6950-41be-850a-b22119f74cbb",
|
|
}
|
|
|
|
b, _ := os.ReadFile("testdata/slack_events/opsgenie_alert.json")
|
|
if err := pipeline.reader.Enqueue(ctx, b); err != nil {
|
|
t.Fatal("failed to enqueue", err)
|
|
}
|
|
if _, b2, err := pipeline.writer.Syn(ctx); err != nil {
|
|
t.Fatal("failed to syn", err)
|
|
} else if m := MustDeserialize(b2); false {
|
|
} else {
|
|
assert.DeepEqual(t, want, m)
|
|
}
|
|
}
|