Client: test header encoding with unicode, long values and plain ASCII

This commit is contained in:
binwiederhier committed 2026-10-11 21:26:44 +00:00
1 parent a33508bb1a
commit 2a591ecf38
2 files changed
+35

No files matched your search

+13
View File
@@ -119,6 +119,19 @@ func TestClient_Publish_HeaderWithNewlines(t *testing.T) {
require.Equal(t, "message\n with\n newlines", msg.Message)
require.Equal(t, "title\nwith newline", msg.Title)
require.Equal(t, "test.txt", msg.Attachment.Name)
// Unicode, and long values that are split into multiple encoded words
longMessage := strings.Repeat("Grüße aus Köln 🎉\r\n", 30)
msg, err = c.PublishReader("mytopic", strings.NewReader("file contents"),
client.WithFilename("über.txt"),
client.WithMessage(longMessage),
client.WithTitle("Grüße 🎉"),
client.WithTags([]string{"tada", "größe"}))
require.Nil(t, err)
require.Equal(t, strings.TrimSpace(longMessage), msg.Message)
require.Equal(t, "Grüße 🎉", msg.Title)
require.Equal(t, []string{"tada", "größe"}, msg.Tags)
require.Equal(t, "über.txt", msg.Attachment.Name)
}
func newTestConfig(port int) *client.Config {
+22
View File
@@ -0,0 +1,22 @@
package client_test
import (
"github.com/stretchr/testify/require"
"heckel.io/ntfy/v2/client"
"net/http"
"testing"
)
func TestWithHeader_PlainValueUnchanged(t *testing.T) {
r, _ := http.NewRequest("POST", "http://127.0.0.1/mytopic", nil)
require.Nil(t, client.WithTitle("Backup done: 3 files, 0 errors (100%)\twith tab")(r))
require.Equal(t, "Backup done: 3 files, 0 errors (100%)\twith tab", r.Header.Get("X-Title"))
}
func TestWithHeader_SpecialCharsEncoded(t *testing.T) {
r, _ := http.NewRequest("POST", "http://127.0.0.1/mytopic", nil)
require.Nil(t, client.WithMessage("line 1\nline 2")(r))
require.Nil(t, client.WithTitle("Grüße 🎉")(r))
require.Equal(t, "=?utf-8?b?bGluZSAxCmxpbmUgMg==?=", r.Header.Get("X-Message"))
require.Equal(t, "=?utf-8?b?R3LDvMOfZSDwn46J?=", r.Header.Get("X-Title"))
}