kubernetes-operator/internal/notifier/msteams_test.go

60 lines
1.4 KiB
Go

package notifier
import (
"encoding/json"
"github.com/stretchr/testify/assert"
"net/http"
"net/http/httptest"
"testing"
)
func TestTeams_Send(t *testing.T) {
teams := Teams{}
i := &Information{
ConfigurationType: testConfigurationType,
CrName: testCrName,
Status: testStatus,
Error: testError,
}
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
var message TeamsMessage
decoder := json.NewDecoder(r.Body)
err := decoder.Decode(&message)
if err != nil {
t.Fatal(err)
}
assert.Equal(t, message.Title, titleText)
assert.Equal(t, message.ThemeColor, getStatusColor(i.Status, teams))
mainSection := message.Sections[0]
assert.Equal(t, mainSection.Text, noErrorMessage)
for _, fact := range mainSection.Facts {
switch fact.Name {
case configurationTypeFieldName:
if fact.Value != i.ConfigurationType {
t.Fatalf("%s is not equal! Must be %s", configurationTypeFieldName, i.ConfigurationType)
}
case crNameFieldName:
if fact.Value != i.CrName {
t.Fatalf("%s is not equal! Must be %s", crNameFieldName, i.CrName)
}
case statusFieldName:
if fact.Value != getStatusName(i.Status) {
t.Fatalf("%s is not equal! Must be %s", statusFieldName, getStatusName(i.Status))
}
}
}
}))
defer server.Close()
if err := teams.Send(server.URL, i); err != nil {
t.Fatal(err)
}
}