|
|
@@ -6,18 +6,20 @@ import (
|
|
|
"encoding/base64"
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
- "github.com/stretchr/testify/assert"
|
|
|
"io"
|
|
|
"log"
|
|
|
"math/rand"
|
|
|
"net/http"
|
|
|
"net/http/httptest"
|
|
|
+ "net/netip"
|
|
|
"path/filepath"
|
|
|
"strings"
|
|
|
"sync"
|
|
|
"testing"
|
|
|
"time"
|
|
|
|
|
|
+ "github.com/stretchr/testify/assert"
|
|
|
+
|
|
|
"github.com/stretchr/testify/require"
|
|
|
"heckel.io/ntfy/auth"
|
|
|
"heckel.io/ntfy/util"
|
|
|
@@ -292,13 +294,13 @@ func TestServer_PublishAt(t *testing.T) {
|
|
|
messages = toMessages(t, response.Body.String())
|
|
|
require.Equal(t, 1, len(messages))
|
|
|
require.Equal(t, "a message", messages[0].Message)
|
|
|
- require.Equal(t, "", messages[0].Sender) // Never return the sender!
|
|
|
+ require.Equal(t, netip.Addr{}, messages[0].Sender) // Never return the sender!
|
|
|
|
|
|
messages, err := s.messageCache.Messages("mytopic", sinceAllMessages, true)
|
|
|
require.Nil(t, err)
|
|
|
require.Equal(t, 1, len(messages))
|
|
|
require.Equal(t, "a message", messages[0].Message)
|
|
|
- require.Equal(t, "9.9.9.9", messages[0].Sender) // It's stored in the DB though!
|
|
|
+ require.Equal(t, "9.9.9.9", messages[0].Sender.String()) // It's stored in the DB though!
|
|
|
}
|
|
|
|
|
|
func TestServer_PublishAtWithCacheError(t *testing.T) {
|
|
|
@@ -814,7 +816,7 @@ func TestServer_PublishTooRequests_Defaults(t *testing.T) {
|
|
|
|
|
|
func TestServer_PublishTooRequests_Defaults_ExemptHosts(t *testing.T) {
|
|
|
c := newTestConfig(t)
|
|
|
- c.VisitorRequestExemptIPAddrs = []string{"9.9.9.9"} // see request()
|
|
|
+ c.VisitorRequestExemptIPAddrs = []netip.Prefix{netip.MustParsePrefix("9.9.9.9/32")} // see request()
|
|
|
s := newTestServer(t, c)
|
|
|
for i := 0; i < 65; i++ { // > 60
|
|
|
response := request(t, s, "PUT", "/mytopic", fmt.Sprintf("message %d", i), nil)
|
|
|
@@ -1132,7 +1134,7 @@ func TestServer_PublishAttachment(t *testing.T) {
|
|
|
require.Equal(t, int64(5000), msg.Attachment.Size)
|
|
|
require.GreaterOrEqual(t, msg.Attachment.Expires, time.Now().Add(179*time.Minute).Unix()) // Almost 3 hours
|
|
|
require.Contains(t, msg.Attachment.URL, "http://127.0.0.1:12345/file/")
|
|
|
- require.Equal(t, "", msg.Sender) // Should never be returned
|
|
|
+ require.Equal(t, netip.Addr{}, msg.Sender) // Should never be returned
|
|
|
require.FileExists(t, filepath.Join(s.config.AttachmentCacheDir, msg.ID))
|
|
|
|
|
|
// GET
|
|
|
@@ -1168,7 +1170,7 @@ func TestServer_PublishAttachmentShortWithFilename(t *testing.T) {
|
|
|
require.Equal(t, int64(21), msg.Attachment.Size)
|
|
|
require.GreaterOrEqual(t, msg.Attachment.Expires, time.Now().Add(3*time.Hour).Unix())
|
|
|
require.Contains(t, msg.Attachment.URL, "http://127.0.0.1:12345/file/")
|
|
|
- require.Equal(t, "", msg.Sender) // Should never be returned
|
|
|
+ require.Equal(t, netip.Addr{}, msg.Sender) // Should never be returned
|
|
|
require.FileExists(t, filepath.Join(s.config.AttachmentCacheDir, msg.ID))
|
|
|
|
|
|
path := strings.TrimPrefix(msg.Attachment.URL, "http://127.0.0.1:12345")
|
|
|
@@ -1195,7 +1197,7 @@ func TestServer_PublishAttachmentExternalWithoutFilename(t *testing.T) {
|
|
|
require.Equal(t, "", msg.Attachment.Type)
|
|
|
require.Equal(t, int64(0), msg.Attachment.Size)
|
|
|
require.Equal(t, int64(0), msg.Attachment.Expires)
|
|
|
- require.Equal(t, "", msg.Sender)
|
|
|
+ require.Equal(t, netip.Addr{}, msg.Sender)
|
|
|
|
|
|
// Slightly unrelated cross-test: make sure we don't add an owner for external attachments
|
|
|
size, err := s.messageCache.AttachmentBytesUsed("127.0.0.1")
|
|
|
@@ -1216,7 +1218,7 @@ func TestServer_PublishAttachmentExternalWithFilename(t *testing.T) {
|
|
|
require.Equal(t, "", msg.Attachment.Type)
|
|
|
require.Equal(t, int64(0), msg.Attachment.Size)
|
|
|
require.Equal(t, int64(0), msg.Attachment.Expires)
|
|
|
- require.Equal(t, "", msg.Sender)
|
|
|
+ require.Equal(t, netip.Addr{}, msg.Sender)
|
|
|
}
|
|
|
|
|
|
func TestServer_PublishAttachmentBadURL(t *testing.T) {
|
|
|
@@ -1391,7 +1393,7 @@ func TestServer_Visitor_XForwardedFor_None(t *testing.T) {
|
|
|
r.RemoteAddr = "8.9.10.11"
|
|
|
r.Header.Set("X-Forwarded-For", " ") // Spaces, not empty!
|
|
|
v := s.visitor(r)
|
|
|
- require.Equal(t, "8.9.10.11", v.ip)
|
|
|
+ require.Equal(t, "8.9.10.11", v.ip.String())
|
|
|
}
|
|
|
|
|
|
func TestServer_Visitor_XForwardedFor_Single(t *testing.T) {
|
|
|
@@ -1402,7 +1404,7 @@ func TestServer_Visitor_XForwardedFor_Single(t *testing.T) {
|
|
|
r.RemoteAddr = "8.9.10.11"
|
|
|
r.Header.Set("X-Forwarded-For", "1.1.1.1")
|
|
|
v := s.visitor(r)
|
|
|
- require.Equal(t, "1.1.1.1", v.ip)
|
|
|
+ require.Equal(t, "1.1.1.1", v.ip.String())
|
|
|
}
|
|
|
|
|
|
func TestServer_Visitor_XForwardedFor_Multiple(t *testing.T) {
|
|
|
@@ -1413,7 +1415,7 @@ func TestServer_Visitor_XForwardedFor_Multiple(t *testing.T) {
|
|
|
r.RemoteAddr = "8.9.10.11"
|
|
|
r.Header.Set("X-Forwarded-For", "1.2.3.4 , 2.4.4.2,234.5.2.1 ")
|
|
|
v := s.visitor(r)
|
|
|
- require.Equal(t, "234.5.2.1", v.ip)
|
|
|
+ require.Equal(t, "234.5.2.1", v.ip.String())
|
|
|
}
|
|
|
|
|
|
func TestServer_PublishWhileUpdatingStatsWithLotsOfMessages(t *testing.T) {
|