import { MODULE_METADATA } from '@nestjs/common/constants';
import { JwtService } from '@nestjs/jwt';
import { AuthModule } from './auth.module';

//* AuthModule 이 JwtService 를 직접 provide 하면 secret 없는 인스턴스가 AuthController 의 JwtAuthGuard 에
//* 주입돼 /auth/fcm-token 이 정상 토큰에도 401('secret or public key must be provided')을 낸다.
//* JwtService 는 app.module 전역 JwtModule 에서만 받아야 한다.
describe('AuthModule JwtService', () => {
  it.each([MODULE_METADATA.PROVIDERS, MODULE_METADATA.EXPORTS])(
    '%s 에 JwtService 가 없다',
    (key) => {
      const list: unknown[] = Reflect.getMetadata(key, AuthModule) ?? [];
      expect(list).not.toContain(JwtService);
    },
  );
});
