import 'package:flutter_test/flutter_test.dart';
import 'package:userfront/core/services/auth_token_store.dart';

void main() {
  group('AuthTokenStore facade', () {
    setUp(AuthTokenStore.clear);
    tearDown(AuthTokenStore.clear);

    test('token, provider, cookie mode, pending provider 상태를 위임한다', () {
      expect(AuthTokenStore.hasToken(), isFalse);

      AuthTokenStore.setToken('jwt-token', provider: 'ory');

      expect(AuthTokenStore.hasToken(), isTrue);
      expect(AuthTokenStore.getToken(), 'jwt-token');
      expect(AuthTokenStore.getProvider(), 'ory');
      expect(AuthTokenStore.usesCookie(), isFalse);

      AuthTokenStore.setPendingProvider('pending-ory');
      expect(AuthTokenStore.getPendingProvider(), 'pending-ory');
      AuthTokenStore.clearPendingProvider();
      expect(AuthTokenStore.getPendingProvider(), isNull);

      AuthTokenStore.setCookieMode(provider: 'cookie-ory');
      expect(AuthTokenStore.hasToken(), isFalse);
      expect(AuthTokenStore.getToken(), isNull);
      expect(AuthTokenStore.getProvider(), 'cookie-ory');
      expect(AuthTokenStore.usesCookie(), isTrue);

      AuthTokenStore.clear();
      expect(AuthTokenStore.getProvider(), isNull);
      expect(AuthTokenStore.usesCookie(), isFalse);
    });
  });
}
