我的无服务器 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/
相关文章:
reactjs - Jest 测试因 gatsby webpack 配置而抛出错误
python - 如何找到 DataFrame 行的所有组合?
sql-server - T-SQL Json_modify 将属性附加到每个对象
api - Google Scripts 应用程序和 Plaid 链接身份验证
apache-spark - 有什么方法可以使用 spark 从 s3 并行读取多个 Parquet
c - 尝试将 'insert' 或 'add' 写入文本文件 - 一个小问题
python - 未处理的异常 : Connection closed while receivin