import { TestBed } from '@/testing';
import { firstValueFrom } from 'rxjs';
import { CryptoService } from '../utils/crypto/crypto.service';
import { JwtWindowCryptoService } from './jwt-window-crypto.service';

describe('JwtWindowCryptoService', () => {
  let service: JwtWindowCryptoService;

  beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [],
      providers: [JwtWindowCryptoService, CryptoService],
    });
    service = TestBed.inject(JwtWindowCryptoService);
  });

  it('should create', () => {
    expect(service).toBeTruthy();
  });

  describe('generateCodeChallenge', () => {
    it('returns good result with correct codeVerifier', async () => {
      const outcome = 'R2TWD45Vtcf_kfAqjuE3LMSRF3JDE5fsFndnn6-a0nQ';
      const observable = service.generateCodeChallenge(
        '44445543344242132145455aaabbdc3b4'
      );

      const value = await firstValueFrom(observable);
      expect(value).toBe(outcome);
    });
  });
});
