我有一个rails后端和ember cli项目,它们使用ember-simple-auth devise,我正在尝试获得一个Qunit测试来覆盖一个经过身份验证的post to 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');
})
});我在我的测试环境中使用simple-auth-session-store:ephemeral。
signIn()助手运行良好:我可以从ember和rails日志中看到它提交表单并返回状态201,但是下面的请求返回状态401,比如身份验证信息在下面的请求中从未保存过/没有使用过。
如果我手动测试,一切正常,这使我认为这是测试环境的问题,但当我删除store:ephemeral时,我仍然从我的服务器返回状态401。
如何在测试环境中使用ember-simple-auth向我的服务器发出经过身份验证的请求?有没有办法直接访问测试会话数据并设置user-token和email,这样rails就会认为我通过了身份验证?
环境:
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';
}发布于 2014-12-01 16:10:20
临时存储只确保会话实际上不是持久的,这样测试就不会相互影响。你所看到的可能是Ember Simple Auth的跨域授权策略造成的--只要你不把发送给它的源请求列入白名单,它就不会被授权,这样你的令牌就不会暴露在任意网站上。请参阅API docs。
https://stackoverflow.com/questions/27220541
复制相似问题