在测试中使用ember-simple-auth-ephemeral存储进行经过身份验证的请求

时间:2014-12-01 01:28:06

标签: ruby-on-rails ember.js devise ember-simple-auth

我有一个使用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-tokenemail,以便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';
  }

1 个答案:

答案 0 :(得分:1)

短暂存储只能确保会话实际上不会持续存在,以便测试不会相互影响。您看到的内容可能是由Ember Simple Auth的交叉来源授权政策引起的 - 只要您不对原始请求列入白名单,就会向其授权,这样您的令牌就不会被曝光到任意网站。请参阅API docs