如何使用e2e测试(如预检选项调用)测试Nest CORS配置?

时间:2020-06-05 13:51:00

标签: javascript typescript nestjs e2e-testing

为确保浏览器对nestjs后端的预检请求成功,我想使用http-options调用在e2e测试中测试相应的路由。

it('/myRoute preflight should allow methods', async done => {
    const RANDOM_ORIGIN = `https://${Math.random()}.random`
    const res = await request(app.getHttpServer()).options('/myRoute').set('Origin', RANDOM_ORIGIN)
    expect(res.header['access-control-allow-origin']).toBe(RANDOM_ORIGIN)
    expect(res.header['access-control-allow-methods']).toBe('OPTIONS, GET, POST, PATCH, PUT, DELETE')

    done();
});

这会导致以下错误:

2020-06-05 15:32:34 [ERROR] Error: Cannot OPTIONS /myRoute
at callback .../node_modules/@nestjs/core/router/routes-resolver.js:45:19)

原因似乎是在e2e测试中,应用是通过调用创建的

app = moduleFixture.createNestApplication();
await app.init();

因此不会执行main.ts中的代码:

const app = await NestFactory.create(AppModule);
app.enableCors();
await app.listen(3000);

https://docs.nestjs.com/techniques/security#cors

我当然可以使用适当的选项在e2e测试本身中启用CORS,但是我想测试main.ts中设置的设置。

如何在e2e测试中测试main.ts中为nestjs应用程序设置的安全属性?

0 个答案:

没有答案
相关问题