gpt4 book ai didi

typescript - NestJS 在 e2e 测试中模拟 JWT 身份验证

转载 作者:行者123 更新时间:2023-12-03 15:00:34 27 4
gpt4 key购买 nike

我想在我的 NestJS e2e(集成)测试中模拟 JWT 身份验证。我在我的业务逻辑中使用注入(inject)的 token 数据,我不想在我的测试代码中插入凭据。

我根据 Nest authentication docs 实现了 JWT 身份验证.我使用与 @User 类似的装饰器示例中的装饰器,并在我的业务逻辑中使用有关 User 对象的信息。

@Post()
async myPostEndpoint(@Body() body: PostBody, @User() user: MyUser){
// do stuff using user properties
}

当使用 Nest testing docs 中所示的 supertest 测试我的应用程序时,我不想发出真正的身份验证请求,因为我需要在我的版本控制系统中保留凭据。

我希望能够覆盖提供者以返回测试用户。但是想不通。

我尝试覆盖 AuthServicevalidateClientlogin使用 overrideProvider + useClass/useFactory/useValue 返回默认用户如 Nest testing docs 中所示.我还尝试了 JwtStrategy 中的覆盖方法和 LocalStrategy ,但请求仍返回 401 - 未经授权。

最佳答案

在您的 overrideGuard(AuthGuard('jwt')).useValue()您可以将功能添加到您的 canActivate()函数如下所示:

canActivate (context: ExecutionContext) => {
const req = context.switchToHttp().getRequest();
req.user = myCustomUserObject;
return true;
}
在哪里 myCustomUserObjectreq.user 的期望值供服务器处理。

关于typescript - NestJS 在 e2e 测试中模拟 JWT 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57629191/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com