1
0
Fork 0
mirror of https://github.com/binwiederhier/ntfy.git synced 2025-05-21 22:38:25 +02:00

Handle binary messages for UnifiedPush

This commit is contained in:
Philipp Heckel 2022-01-17 13:28:07 -05:00
parent 4710812c24
commit 4ceb058a40
3 changed files with 88 additions and 25 deletions

View file

@ -3,10 +3,12 @@ package server
import (
"bufio"
"context"
"encoding/base64"
"encoding/json"
"fmt"
"github.com/stretchr/testify/require"
"heckel.io/ntfy/util"
"math/rand"
"net/http"
"net/http/httptest"
"os"
@ -623,6 +625,49 @@ func TestServer_UnifiedPushDiscovery(t *testing.T) {
require.Equal(t, `{"unifiedpush":{"version":1}}`+"\n", response.Body.String())
}
func TestServer_PublishUnifiedPushBinary(t *testing.T) {
b := make([]byte, 12) // Max length
_, err := rand.Read(b)
require.Nil(t, err)
s := newTestServer(t, newTestConfig(t))
response := request(t, s, "PUT", "/mytopic?up=1", string(b), nil)
require.Equal(t, 200, response.Code)
m := toMessage(t, response.Body.String())
require.Equal(t, "base64", m.Encoding)
b2, err := base64.StdEncoding.DecodeString(m.Message)
require.Nil(t, err)
require.Equal(t, b, b2)
}
func TestServer_PublishUnifiedPushBinary_Truncated(t *testing.T) {
b := make([]byte, 5000) // Longer than max length
_, err := rand.Read(b)
require.Nil(t, err)
s := newTestServer(t, newTestConfig(t))
response := request(t, s, "PUT", "/mytopic?up=1", string(b), nil)
require.Equal(t, 200, response.Code)
m := toMessage(t, response.Body.String())
require.Equal(t, "base64", m.Encoding)
b2, err := base64.StdEncoding.DecodeString(m.Message)
require.Nil(t, err)
require.Equal(t, 4096, len(b2))
require.Equal(t, b[:4096], b2)
}
func TestServer_PublishUnifiedPushText(t *testing.T) {
s := newTestServer(t, newTestConfig(t))
response := request(t, s, "PUT", "/mytopic?up=1", "this is a unifiedpush text message", nil)
require.Equal(t, 200, response.Code)
m := toMessage(t, response.Body.String())
require.Equal(t, "", m.Encoding)
require.Equal(t, "this is a unifiedpush text message", m.Message)
}
func TestServer_PublishAttachment(t *testing.T) {
content := util.RandomString(5000) // > 4096
s := newTestServer(t, newTestConfig(t))