gpt4 book ai didi

amazon-web-services - 具有自定义授权方的无服务器 lambda 单元测试处理程序

转载 作者:行者123 更新时间:2023-12-05 07:01:44 25 4
gpt4 key购买 nike

我的无服务器 lambda 应用程序具有自定义授权器

  verify-token:
handler: app/Middleware/VerifyToken.auth

user:
handler: app/Handlers/Users.user
events:
- http:
path: user
method: get
cors: true
authorizer: verify-token

我正在为用户处理程序编写 Jest 单元测试,但是由于部署时自定义授权在执行用户处理程序之前运行,我如何在 Jest 单元测试中应用相同的内容,以便我可以在运行用户处理程序测试之前应用授权?

这是我的测试

const  { user }  = require('../../app/Handlers/Users');

/**
* Tests for get()
*/
describe('Get user', () => {

it('Get user data', async done => {
let userEvent = {
headers: {
'authorization': 'Bearer TOKEN'
}
}
// user.authorizer();
user(userEvent, null, (error, data) => {
try {
expect(data.statusCode).toBe(200);
done();
} catch (error) {
done(error);
}

});
});


});

最佳答案

我尝试使用 mock-jws library它对我有用。

我在这里尝试通过模拟 auth0 jsonwebtoken 提供的 jwks 库来单独测试授权方。如果授权方测试成功,那么您可以单独测试您的 protected 端点或生成一个 jwt token ,并根据我提供的代码生成策略,如果返回允许策略,则测试您的 protected 端点

const createJWKSMock = require('mock-jwks');
const authorizer = require('../authorizer/authorizer');

describe('Auth Test', () => {
const jwks = createJWKSMock.default('https://your domain here');

beforeEach(() => {
jwks.start();
});

afterEach(() => {
jwks.stop();
});
test('should verify the token', async () => {
const token = jwks.token({
aud: 'https://your audience,
iss: 'https://issuer of token',
});
console.log(token);
const event = {
authorizationToken: `Bearer ${token}`,
};
const policy = await authorizer.auth(event, 'context');
console.log('jatin', policy);
expect(policy.context).not.toBe(undefined);
});

关于amazon-web-services - 具有自定义授权方的无服务器 lambda 单元测试处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63752542/

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