Implement /shoutrrr endpoint
This commit is contained in:
127
scnserver/test/shoutrrr_test.go
Normal file
127
scnserver/test/shoutrrr_test.go
Normal file
@@ -0,0 +1,127 @@
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user