import { expect, test } from 'vitest'; import { resolvePlatformRecommendRuntimeAuthPlan, shouldUsePlatformRecommendRuntimeGuestAuth, } from './platformRecommendRuntimeAuthModel'; test('uses runtime guest auth for anonymous embedded recommendation runtime', () => { expect( resolvePlatformRecommendRuntimeAuthPlan({ embedded: true, authUserId: null, hasStoredAccessToken: false, }), ).toEqual({ requestKind: 'runtime-guest', puzzleRuntimeAuthMode: 'isolated', }); }); test('uses background auth for signed-in embedded recommendation runtime', () => { expect( resolvePlatformRecommendRuntimeAuthPlan({ embedded: true, authUserId: 'user-1', hasStoredAccessToken: false, }), ).toEqual({ requestKind: 'background', puzzleRuntimeAuthMode: 'default', }); }); test('uses background auth when embedded runtime has only a stored access token', () => { expect( resolvePlatformRecommendRuntimeAuthPlan({ embedded: true, authUserId: null, hasStoredAccessToken: true, }), ).toEqual({ requestKind: 'background', puzzleRuntimeAuthMode: 'default', }); }); test('does not alter auth for non-embedded runtime launches by default', () => { expect( resolvePlatformRecommendRuntimeAuthPlan({ embedded: false, authUserId: null, hasStoredAccessToken: false, }), ).toEqual({ requestKind: 'none', puzzleRuntimeAuthMode: 'default', }); }); test('uses isolated guest auth for anonymous puzzle isolated launch', () => { expect( resolvePlatformRecommendRuntimeAuthPlan({ embedded: false, allowRuntimeGuestAuth: true, authUserId: null, hasStoredAccessToken: false, }), ).toEqual({ requestKind: 'runtime-guest', puzzleRuntimeAuthMode: 'isolated', }); }); test('falls back to default puzzle auth when isolated launch has account auth', () => { expect( resolvePlatformRecommendRuntimeAuthPlan({ embedded: false, allowRuntimeGuestAuth: true, authUserId: 'user-1', hasStoredAccessToken: false, }), ).toEqual({ requestKind: 'none', puzzleRuntimeAuthMode: 'default', }); }); test('guest auth decision trims user id before treating account as signed in', () => { expect( shouldUsePlatformRecommendRuntimeGuestAuth({ allowRuntimeGuestAuth: true, authUserId: ' ', hasStoredAccessToken: false, }), ).toBe(true); });