我有一个使用ember-simple-auth设计的rails后端和ember cli项目,我正在尝试进行Qunit测试以覆盖经过身份验证的post
到rails。我并没有嘲笑任何后端电话。
我的测试设置如下:
test('successfully POSTing', function(){
// helper to signin through ember
signIn();
andThen(function(){
// fill out a form and submit it
equal(find('li').text(), 'aodsfiu');
})
});
我在我的测试ENV中使用simple-auth-session-store:ephemeral
。
signIn()
帮助程序工作正常:我可以从ember和rails日志中看到它提交表单并返回状态201
,但是以下请求返回状态401
在以下请求中永远不会保存/不使用身份验证信息。
如果我手动测试,一切都没问题,这让我觉得它是测试环境的一个问题,但是当我删除store:ephemeral
时我仍然回到状态401
来自我的服务器。
如何在测试环境中使用ember-simple-auth向我的服务器发出经过身份验证的请求?有没有办法直接访问测试会话数据并设置user-token
和email
,以便rails认为我已通过身份验证?
ENV:
if (environment === 'test') {
// simple auth local storage stuff
ENV['simple-auth'] = {
authorizer: 'simple-auth-authorizer:devise',
crossOriginWhitelist: ['*'],
store: 'simple-auth-session-store:ephemeral',
}
// Testem prefers this...
ENV.baseURL = '/';
ENV.locationType = 'auto';
// keep test console output quieter
ENV.APP.LOG_ACTIVE_GENERATION = false;
ENV.APP.LOG_VIEW_LOOKUPS = false;
ENV.APP.rootElement = '#ember-testing';
}
答案 0 :(得分:1)
短暂存储只能确保会话实际上不会持续存在,以便测试不会相互影响。您看到的内容可能是由Ember Simple Auth的交叉来源授权政策引起的 - 只要您不对原始请求列入白名单,就会向其授权,这样您的令牌就不会被曝光到任意网站。请参阅API docs。