From 359c789c3406cba8327ba1c008fc9e6b17352913 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sat, 5 Jul 2025 13:11:17 +0200 Subject: [PATCH] Test for visitorID --- server/util_test.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/server/util_test.go b/server/util_test.go index 2989b0b9..128a8160 100644 --- a/server/util_test.go +++ b/server/util_test.go @@ -4,7 +4,9 @@ import ( "bytes" "crypto/rand" "fmt" + "heckel.io/ntfy/v2/user" "net/http" + "net/netip" "strings" "testing" @@ -143,3 +145,24 @@ func TestExtractIPAddress_EdgeCases(t *testing.T) { trustedProxies := []string{"::ffff:192.0.2.128"} require.Equal(t, "2001:db8:abcd::1", extractIPAddress(r, true, "X-Forwarded-For", trustedProxies).String()) } + +func TestVisitorID(t *testing.T) { + confWithDefaults := &Config{ + VisitorPrefixBitsIPv4: 32, + VisitorPrefixBitsIPv6: 64, + } + confWithShortenedPrefixes := &Config{ + VisitorPrefixBitsIPv4: 16, + VisitorPrefixBitsIPv6: 56, + } + userWithTier := &user.User{ + ID: "u_123", + Tier: &user.Tier{}, + } + require.Equal(t, "ip:1.2.3.4", visitorID(netip.MustParseAddr("1.2.3.4"), nil, confWithDefaults)) + require.Equal(t, "ip:2a01:599:b26:2397::", visitorID(netip.MustParseAddr("2a01:599:b26:2397:dbe7:5aa2:95ce:1e83"), nil, confWithDefaults)) + require.Equal(t, "user:u_123", visitorID(netip.MustParseAddr("1.2.3.4"), userWithTier, confWithDefaults)) + require.Equal(t, "user:u_123", visitorID(netip.MustParseAddr("2a01:599:b26:2397:dbe7:5aa2:95ce:1e83"), userWithTier, confWithDefaults)) + require.Equal(t, "ip:1.2.0.0", visitorID(netip.MustParseAddr("1.2.3.4"), nil, confWithShortenedPrefixes)) + require.Equal(t, "ip:2a01:599:b26:2300::", visitorID(netip.MustParseAddr("2a01:599:b26:2397:dbe7:5aa2:95ce:1e83"), nil, confWithShortenedPrefixes)) +}