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:
parent
4710812c24
commit
4ceb058a40
3 changed files with 88 additions and 25 deletions
server
|
@ -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))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue