如何解决是否可以使用AWS假设角色运行赛普拉斯测试?
我创建了一些自动测试来测试面向公众的API端点。有一个“测试数据创建”步骤,可以直接在我们的AWS环境中运行和创建数据(即,直接执行Lambda,将条目添加到数据库中)。这已集成到赛普拉斯中,并在package.json
中添加了一个包。要执行此操作,首先必须使用aws-sdk
,特别是assumerole
。当直接使用Node运行此过程时,它将运行并用~/.aws/credentials
,aws_access_key_id
和aws_secret_access_key
填充aws_session_token
。
一旦承担了这个角色,就可以运行“测试数据创建”,并创建用于测试的数据。
使用Node和Node环境,它可以正常工作并创建数据。
但是当它在赛普拉斯中运行时,它将失败。
这是我的plugins/index.js
:
const AWS = require('aws-sdk');
module.exports = (on,config) => {
AWS.config.update({
accessKeyId: process.env.AWS_ACCESS_KEY_ID,secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,sessionToken: process.env.AWS_SESSION_TOKEN,region: process.env.AWS_REGION
});
return { on,config };
};
由于测试数据创建过程是异步的,因此我在support/commands.js
中添加了此异步命令:
const testDataCreation = require('test-data-creation');
Cypress.Commands.add("generateOrganisation",async () => {
await testDataCreation.generateOrganisation();
});
在我的测试中:
describe('Test',() => {
before(function () {
cy.generateOrganisation().then(response => response.organisationId).as("orgId");
});
it('should visit the page',function () {
cy.visit(`https://${this.orgId}.website.com/`);
cy.get('#cookie-box').should('have.class','my-cookie');
});
});
但是运行测试时,测试失败,并显示消息“ ConfigError:配置中缺少区域” 。当未正确设置AWS配置时,这是一条典型消息。这使我认为赛普拉斯无法使用假定的AWS角色正确运行测试。也许我做错了什么。我猜测它应该“正常工作”(例如如何使用Node运行测试数据创建脚本)。 赛普拉斯如何运行需要AWS凭证(即测试数据创建)的设置步骤?
解决方法
经过各种尝试寻找解决方案-结果非常简单。
这部分是不需要的。 assumerole
正在工作,赛普拉斯正在以“假定角色”运行,因此无需再次设置密钥。
const AWS = require('aws-sdk');
module.exports = (on,config) => {
AWS.config.update({
accessKeyId: process.env.AWS_ACCESS_KEY_ID,secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,sessionToken: process.env.AWS_SESSION_TOKEN,region: process.env.AWS_REGION
});
return { on,config };
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。