Ruby on rails 在测试中使用ember简单身份验证临时存储进行身份验证请求

Ruby on rails 在测试中使用ember简单身份验证临时存储进行身份验证请求,ruby-on-rails,ember.js,devise,ember-simple-auth,Ruby On Rails,Ember.js,Devise,Ember Simple Auth,我有一个rails后端和ember cli项目,正在使用ember simple auth Desive,我正在尝试进行Qunit测试,以覆盖对rails的经过身份验证的post。我不会嘲笑任何后端调用 我的测试设置如下: test('successfully POSTing', function(){ // helper to signin through ember signIn(); andThen(function(){ // fill out a form and

我有一个rails后端和ember cli项目,正在使用ember simple auth Desive,我正在尝试进行Qunit测试,以覆盖对rails的经过身份验证的
post
。我不会嘲笑任何后端调用

我的测试设置如下:

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
,就像身份验证信息从未保存/未在下面的请求中使用一样

如果我手动测试,一切都正常,这让我认为这是测试环境的问题,但是当我删除
存储:ephemeral
时,我仍然从服务器返回状态
401

如何在测试环境中使用ember simple auth向服务器发出经过身份验证的请求?有没有一种方法可以直接访问测试会话数据并设置
用户令牌
电子邮件
,以便rails认为我已通过身份验证

环境:


临时存储只确保会话实际上没有持久化,这样测试就不会相互影响。您所看到的可能是由Ember Simple Auth的跨源授权策略造成的-只要您不将一个源请求列入白名单,那么将不会对其进行授权,这样您的令牌就不会暴露于任意站点。请参阅。

谢谢,如果是CORS问题,simple auth/ember是否会记录错误?rails接收所有表单数据,但不接收任何auth头。我确信我理解文档:
crossOriginWhitelist
采用了一个带有
协议
主机
端口
属性的数组?我怎么能危险地把所有事情都列入白名单<代码>交叉源白名单:[{host:*,协议:'**',端口:'**}]?但是这种语法不正确。不会记录任何错误-当请求发送到未列入白名单的第三个来源时,不会添加头。查看自述文件中的示例:我将
*
列为白名单,但仍然无法获取任何身份验证标题。如果您在运行qunit测试时打开chrome控制台,我可以看到我可以记录
this.get('session')
,并且我已登录到测试中,但它不想在测试环境中添加auth头-通过查看控制台中的
http
请求进行验证。还有其他想法吗?是否有使用ember simple auth anywhere的示例集成测试?请发布您的configlooks good-您必须在代码中进行调试,检查是否实际调用了授权人的
authorizer
方法等。起点如下:
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';
  }