Test for visitorID
This commit is contained in:
@@ -4,7 +4,9 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"heckel.io/ntfy/v2/user"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/netip"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
@@ -143,3 +145,24 @@ func TestExtractIPAddress_EdgeCases(t *testing.T) {
|
|||||||
trustedProxies := []string{"::ffff:192.0.2.128"}
|
trustedProxies := []string{"::ffff:192.0.2.128"}
|
||||||
require.Equal(t, "2001:db8:abcd::1", extractIPAddress(r, true, "X-Forwarded-For", trustedProxies).String())
|
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))
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user