package api_test import ( "encoding/json" "testing" "gobuz/internal/api" ) func TestUserLoginResponse_UnmarshalJSON(t *testing.T) { raw := `{ "user_auth_token": "token-xyz-123", "user": { "id": 987654, "email": "user@example.com", "display_name": "Test User", "country_code": "US", "language_code": "en", "credential": { "parameters": { "short_label": "Studio Sublime", "lossy_streaming": true, "lossless_streaming": true, "hires_streaming": true, "hires_purchases_streaming": true, "offline_streaming": true, "mobile_streaming": true } }, "subscription": { "offer": "sublime", "end_date": "2027-12-31" } } }` var loginResp api.UserLoginResponse if err := json.Unmarshal([]byte(raw), &loginResp); err != nil { t.Fatalf("unmarshal UserLoginResponse: %v", err) } if loginResp.UserAuthToken != "token-xyz-123" { t.Errorf("token = %q, want token-xyz-123", loginResp.UserAuthToken) } if loginResp.User.ID != "987654" { t.Errorf("id = %q, want 987654", loginResp.User.ID) } if loginResp.User.Credential.Parameters == nil || loginResp.User.Credential.Parameters.ShortLabel != "Studio Sublime" { t.Errorf("unexpected credential parameters: %v", loginResp.User.Credential.Parameters) } if !loginResp.User.Credential.Parameters.HiResStreaming { t.Errorf("hires_streaming = false, want true") } if loginResp.User.Subscription == nil || loginResp.User.Subscription.Offer != "sublime" { t.Errorf("unexpected subscription: %v", loginResp.User.Subscription) } }