2016-03-08 4 views
0

J'essaie de mettre à niveau une application CLI Ember pour utiliser Simple Auth 1.0. Mes tests d'acceptation ne fonctionnent plus. J'ai configuré la suite de tests pour l'exécuter sur un serveur Rails qui est une copie de mon API. Pour me connecter je faisais ceci:Ember Simple Auth 1.0 dans les tests d'acceptation

visit("/") 
fillIn(".identification-field", "[email protected]"); 
fillIn(".password-field", "testpassword"); 
click(".btn.login-submit"); 

andThen(function(){ 
    equal(currentSession(application).get('user_email'), "[email protected]"); 
}); 

Cela a fonctionné avec simple-auth 0.7.3 mais pas avec 1.0.0. J'ai ajouté d'autres méthodes ma voie d'application pour configurer la session comme suit:

_populateCurrentUser: function() { 
    var user_id = this.get('session.data.user_id'); 
    var user_email = this.get('session.data.user_email'); 
    var _this = this; 
    return this.store.find('user', user_id).then(function(user){ 
    _this.get('currentUser').set('content', user); 

    // Below is for backward-compatibility 
    _this.get('session').set('currentUser', user); 
    _this.get('session').set('user_id', user_id); 
    _this.get('session').set('user_email', user_email); 
    user; 
    }); 
} 

sessionAuthenticated: function(){ 
    this._populateCurrentUser(); 
    this._super(); 
} 

beforeModel: function() { 
    if (this.get('session.isAuthenticated')) { 
    return this._populateCurrentUser(); 
    } 
} 

Ceci est basé sur le guide suivant: http://miguelcamba.com/blog/2015/06/18/how-to-inject-the-current-user-using-ember-simple-auth/

Cela fonctionne parfaitement quand je lance l'application, mais me brise suite de tests. Maintenant, quand je me connecte, la session ne semble pas être remplie - La méthode _populateCurrentUser échoue parce que this.get ('session.data.user_id') n'est pas défini.

Quelqu'un peut-il vous aider? Peut-être est-ce dû à l'utilisation automatique du magasin de session éphémère dans 1.0 mais si oui, je ne suis pas sûr de savoir comment contourner cela?

Un grand merci

Répondre

2

Avec Ember Simple Auth 1.0 données de session que le authentificateur résout avec est stocké dans data.authenticated de sorte que vous auriez besoin de changer var user_id = this.get('session.data.user_id'); à var user_id = this.get('session.data.authenticated.user_id'); etc.

+0

Brillant, je vous remercie! Je dois avoir manqué cela dans les docs, merci pour la réponse rapide – AdamP