package test import ( "blackforestbytes.com/simplecloudnotifier/push" tt "blackforestbytes.com/simplecloudnotifier/test/util" "fmt" "github.com/gin-gonic/gin" "testing" ) func TestShoutrrrBasic(t *testing.T) { ws, baseUrl, stop := tt.StartSimpleWebserver(t) defer stop() data := tt.InitSingleData(t, ws) pusher := ws.Pusher.(*push.TestSink) suffix := fmt.Sprintf("/external/v1/shoutrrr?key=%v", data.SendKey) _ = tt.RequestPost[gin.H](t, baseUrl, suffix, gin.H{ "title": "Test Title", "message": "Test Message Content", }) tt.AssertEqual(t, "messageCount", 1, len(pusher.Data)) tt.AssertStrRepEqual(t, "msg.title", "Test Title", pusher.Last().Message.Title) tt.AssertStrRepEqual(t, "msg.content", "Test Message Content", pusher.Last().Message.Content) type mglist struct { Messages []gin.H `json:"messages"` } msgList1 := tt.RequestAuthGet[mglist](t, data.AdminKey, baseUrl, "/api/v2/messages") tt.AssertEqual(t, "len(messages)", 1, len(msgList1.Messages)) tt.AssertStrRepEqual(t, "msg.title", "Test Title", msgList1.Messages[0]["title"]) tt.AssertStrRepEqual(t, "msg.content", "Test Message Content", msgList1.Messages[0]["content"]) } func TestShoutrrrChannelNone(t *testing.T) { ws, baseUrl, stop := tt.StartSimpleWebserver(t) defer stop() data := tt.InitSingleData(t, ws) pusher := ws.Pusher.(*push.TestSink) suffix := fmt.Sprintf("/external/v1/shoutrrr?key=%v", data.SendKey) _ = tt.RequestPost[gin.H](t, baseUrl, suffix, gin.H{ "title": "Test Title", "message": "Test Message", }) tt.AssertEqual(t, "messageCount", 1, len(pusher.Data)) tt.AssertStrRepEqual(t, "msg.channel", "main", pusher.Last().Message.ChannelInternalName) } func TestShoutrrrChannelCustom(t *testing.T) { ws, baseUrl, stop := tt.StartSimpleWebserver(t) defer stop() data := tt.InitSingleData(t, ws) pusher := ws.Pusher.(*push.TestSink) suffix := fmt.Sprintf("/external/v1/shoutrrr?key=%v&channel=CTEST", data.SendKey) _ = tt.RequestPost[gin.H](t, baseUrl, suffix, gin.H{ "title": "Test Title", "message": "Test Message", }) tt.AssertEqual(t, "messageCount", 1, len(pusher.Data)) tt.AssertStrRepEqual(t, "msg.channel", "CTEST", pusher.Last().Message.ChannelInternalName) } func TestShoutrrrPriorityNone(t *testing.T) { ws, baseUrl, stop := tt.StartSimpleWebserver(t) defer stop() data := tt.InitSingleData(t, ws) pusher := ws.Pusher.(*push.TestSink) suffix := fmt.Sprintf("/external/v1/shoutrrr?key=%v", data.SendKey) _ = tt.RequestPost[gin.H](t, baseUrl, suffix, gin.H{ "title": "Test Title", "message": "Test Message", }) tt.AssertEqual(t, "messageCount", 1, len(pusher.Data)) tt.AssertStrRepEqual(t, "msg.priority", 1, pusher.Last().Message.Priority) } func TestShoutrrrPrioritySingle(t *testing.T) { ws, baseUrl, stop := tt.StartSimpleWebserver(t) defer stop() data := tt.InitSingleData(t, ws) pusher := ws.Pusher.(*push.TestSink) suffix0 := fmt.Sprintf("/external/v1/shoutrrr?key=%v&priority=0", data.SendKey) _ = tt.RequestPost[gin.H](t, baseUrl, suffix0, gin.H{ "title": "Test Title", "message": "Test Message", }) tt.AssertEqual(t, "messageCount", 1, len(pusher.Data)) tt.AssertStrRepEqual(t, "msg.prio", 0, pusher.Last().Message.Priority) suffix1 := fmt.Sprintf("/external/v1/shoutrrr?key=%v&priority=1", data.SendKey) _ = tt.RequestPost[gin.H](t, baseUrl, suffix1, gin.H{ "title": "Test Title", "message": "Test Message", }) tt.AssertEqual(t, "messageCount", 2, len(pusher.Data)) tt.AssertStrRepEqual(t, "msg.prio", 1, pusher.Last().Message.Priority) suffix2 := fmt.Sprintf("/external/v1/shoutrrr?key=%v&priority=2", data.SendKey) _ = tt.RequestPost[gin.H](t, baseUrl, suffix2, gin.H{ "title": "Test Title", "message": "Test Message", }) tt.AssertEqual(t, "messageCount", 3, len(pusher.Data)) tt.AssertStrRepEqual(t, "msg.prio", 2, pusher.Last().Message.Priority) }