Files
moteva/server/internal/modules/auth/device_test.go
T

63 lines
1.6 KiB
Go
Raw Normal View History

package auth
import (
"strings"
"testing"
)
func TestDeviceSessionFromMetadata(t *testing.T) {
tests := []struct {
name string
metadata RequestMetadata
deviceType string
system string
browser string
client string
}{
{
name: "unknown desktop fallback",
metadata: RequestMetadata{},
deviceType: "desktop",
system: "unknown",
browser: "unknown",
client: "PC-WEB",
},
{
name: "desktop chrome",
metadata: RequestMetadata{
UserAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/126.0.0.0 Safari/537.36",
Platform: `"Windows"`,
Mobile: "?0",
},
deviceType: "desktop",
system: "Windows",
browser: "Chrome 126",
client: "PC-WEB",
},
{
name: "mobile safari from client hints",
metadata: RequestMetadata{
UserAgent: "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) AppleWebKit/605.1.15 Version/18.0 Mobile/15E148 Safari/604.1",
Platform: `"iOS"`,
Mobile: "?1",
},
deviceType: "mobile",
system: "iOS",
browser: "Safari 18",
client: "MOBILE-WEB",
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
session := deviceSessionFromMetadata(test.metadata)
if session.DeviceType != test.deviceType || session.System != test.system || session.Client != test.client {
t.Fatalf("unexpected device metadata %#v", session)
}
if !strings.HasPrefix(session.Browser, test.browser) {
t.Fatalf("expected browser %q, got %q", test.browser, session.Browser)
}
})
}
}