feat(api): persist and expose garmin_connected on successful auth
This commit is contained in:
@@ -765,6 +765,56 @@ func TestProfile_RejectsInvalidHRZones(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSessionMe_ReportsGarminConnectedAfterSuccessfulAuth(t *testing.T) {
|
||||
s, _, _ := newTestServer(t)
|
||||
router := s.Router()
|
||||
|
||||
rec := doJSON(t, router, http.MethodGet, "/api/session/me", nil)
|
||||
var before sessionMeResponse
|
||||
unmarshalBody(t, rec, &before)
|
||||
if before.GarminConnected {
|
||||
t.Fatal("expected a fresh account to report garmin_connected=false")
|
||||
}
|
||||
|
||||
rec = doJSON(t, router, http.MethodPost, "/api/auth/login", nil) // mock.Client defaults to AuthSuccess
|
||||
if rec.Code != http.StatusOK {
|
||||
t.Fatalf("auth/login status = %d, body = %s", rec.Code, rec.Body.String())
|
||||
}
|
||||
|
||||
rec = doJSON(t, router, http.MethodGet, "/api/session/me", nil)
|
||||
var after sessionMeResponse
|
||||
unmarshalBody(t, rec, &after)
|
||||
if !after.GarminConnected {
|
||||
t.Fatal("expected garmin_connected=true after a successful auth")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSessionMe_GarminConnectedStaysFalseOnMFARequiredOrFailed(t *testing.T) {
|
||||
s, _, userID := newTestServer(t)
|
||||
client, err := s.garminFor(context.Background(), userID)
|
||||
if err != nil {
|
||||
t.Fatalf("garminFor: %v", err)
|
||||
}
|
||||
mockClient, ok := client.(*mock.Client)
|
||||
if !ok {
|
||||
t.Fatalf("expected *mock.Client, got %T", client)
|
||||
}
|
||||
mockClient.AuthResults = []garmin.AuthResult{{Status: garmin.AuthMFARequired, Message: "MFA required"}}
|
||||
|
||||
router := s.Router()
|
||||
rec := doJSON(t, router, http.MethodPost, "/api/auth/login", nil)
|
||||
if rec.Code != http.StatusOK {
|
||||
t.Fatalf("auth/login status = %d, body = %s", rec.Code, rec.Body.String())
|
||||
}
|
||||
|
||||
rec = doJSON(t, router, http.MethodGet, "/api/session/me", nil)
|
||||
var me sessionMeResponse
|
||||
unmarshalBody(t, rec, &me)
|
||||
if me.GarminConnected {
|
||||
t.Fatal("expected garmin_connected=false after mfa_required")
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteProfile_DeletesUserAndTerminatesGarminClient(t *testing.T) {
|
||||
s, db, userID := newTestServer(t)
|
||||
router := s.Router()
|
||||
|
||||
Reference in New Issue
Block a user