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) } }) } }