lundi 9 novembre 2020

Registrar o fastfycookie no Test do nestjs [closed]

Boa noite Tenho uma applicação em nestjs, o bootstrap do nest está configurado e rodando com sucesso, nele tem um modulo do fastfycookie que é usado nas requisições. Segue exemplo:

main.ts

    const addHelmetInstance = (app: NestFastifyApplication) => {
        app.register(helmet, {
            contentSecurityPolicy: {
                reportOnly: true,
            },
        });
    };

    const bootstrap = async () => {
        const app = await NestFactory.create<NestFastifyApplication>(
            AppModule,
            new FastifyAdapter({ logger: MyAppConfig.MyApp.logging }),
        );
        const globalPrefix = 'myapp';
        app.setGlobalPrefix(globalPrefix);
        app.enableCors();
        app.register(fastifyCookies, {
            secret: 'PrivateConfig.MyApp.cookieSecret',
        });
        const port = MyAppConfig.MyApp.port || 3333;

        addHelmetInstance(app);
        await app.listen(port, () => {
            Logger.log('Listening at ' + 'PublicConfig.MyAppHost');
        });
    };

bootstrap();

constroller.ts

    @Post('register')
    async register(
        @Res() res,
        @Req() req,
        @Body() data: Register,
    ): Promise<ApiError> {
        try {
            let reg = await this.authService.registerNewUser(data);

            if (reg instanceof ApiError) {
                return res.status(401).send(reg);
            }

            if (req.cookies[MyAppConfig.MyApp.authCookie]) {
                req = this.authService.mergeJwtInfo(
                    req.cookies[BffConfig.bff.authCookie],
                    reg.token,
                );
            }

            res.setCookie(MyAppConfig.MyApp.authCookie, reg.token);

            return res.status(200).send(reg);
        } catch (error) {
            Logger.error(error.message, error);
            return res.status(401).send(new ApiError(401, 'unhautorized'));
        }
    }

na parte de testes quando tento rodar um teste por exemplo no controller acima vejo um erro de que o metodo req.setCookie é undefined eu preciso registrar esse modulo fastfycookie na dentro dos testes mas não sei como.

teste.e2e-spec.ts

describe('AuthController (e2e)', () => {
    let app: INestApplication;

    beforeEach(async () => {
        const moduleFixture: TestingModule = await Test.createTestingModule({
            imports: [AppModule],
        }).compile();

        app = moduleFixture.createNestApplication();

        await app.init();
    });

    it('Cadastrar usuário com sucesso /auth/register (POST)', () => {
        return request(app.getHttpServer())
            .post('/auth/register')
            .send(createTestCustomer())
            .then((response) => {
                expect(response.status).toBe(201);
                expect(response.body).toHaveProperty('token');
            });
    });
}

Desde já agradeço.

Aucun commentaire:

Enregistrer un commentaire