2017-04-13 15 views
0

ログインにAuth0を使用するAngularアプリケーション(バージョン2.x.x)があります(Googleアカウントのみ受け付けています)。Auth0を使用して分度器e2eテストでどのように連続したアカウントにログインしますか?

私はユーザセッションがアクティブなときにアプリケーションの部分をテストする必要があるプロクターe2eテストスイートを持っています。これらのアクションを使用できるようにするには、ユーザーがログインするか、トークンをlocalStorageで使用可能にする必要があります。私は、例えば、分度器配列内の複数のスイートを実行したい:

describe('Accounts',() => { 
    login(user); 
    it('should show the dashboard',() => { 
    browser.sleep(4000); 
    const url = browser.getCurrentUrl(); 
    expect(url).toEqual('http://localhost:4200/dashboard'); 
    }); 
    logout(); 
    login(user2); 
    it('should show the dashboard 2',() => { 
    browser.sleep(4000); 
    const url = browser.getCurrentUrl(); 
    expect(url).toEqual('http://localhost:4200/dashboard'); 
    }); 
    logout(); 
}); 

Loginlogoutはヘルパー関数です。 LoginはGoogleフォームを経由してメールとアドレスを追加します。成功すると、json WebトークンがlocalStorageに追加されます。 LogoutはlocalStorageをクリアし、ユーザーをAuth0ロックに戻します。

Auth0がキャッシュにいくつかのものを格納しているため、2番目のテストは失敗します。 Loginbrowser.getで始まりますが、2番目の仕様には目立った変更はありません。 2回目のログインで「あなたのアカウントではありません」ボタンをクリックすると、以前ログインしたアカウントでAuth0がログインします。これは、Chromeのシークレットモードではない場合とは異なります。その場合、ログインできるアカウントのリストが表示されます。私が望むのは、私がlogin関数を呼び出すたびに入力フィールドを取得することです。

また、browser.getがおそらく呼び出された後、私はのlocalStorageにJWTを設定することもできますが、私はstartSessionはJWTを生成し、localStorage.setItem('token', token)でのlocalStorageに追加するヘル​​パー関数ですbrowser.executeScript(startSession(user.email))を呼び出す場合、分度器は「言うのlocalStorageは定義されていません"、または" window is undefined "(window.localStorageを指定した場合)。

すべてのテストが個別に実行されていますが、すべてのテストを順番に実行できる継続的な統合プラットフォームに移行したいと考えています。

キャッシュをクリアしようとしました。ユーザーをログアウトしたにもかかわらず、以前にログインしたアカウントが(シークレットのみで)覚えています。

どうすればよいですか?

シークレットセッションを再開するにはどうすればよいですか?

どのように動的JWTをlocalStorageに注入しますか?

Auth0に保存されているものをクリアするにはどうすればよいですか?

他にもあります

答えて

0

私の現在のログアウト方法はlocalStorageをクリアするだけです。 SSO(シングルサインアウト)Cookieがクリアされないため、これでは不十分です。これらのクッキーはwindow.cookieから入手できません。ただし、ユーザーをhttps://your-project.auth0.com/logout?federatedにリダイレクトすると、すべてのCookieが消去され、Googleアカウントにログインするよう指示されます。

これらのセッションをクリアするログアウト用のAuth0ドキュメントにリンクします。

https://auth0.com/docs/logout#set-the-allowed-logout-urls-at-the-account-level

興味深いことに、私は通常、Chromeで、このブラウザの動作を取得できませんでした。私はFirefoxとGoogleのシークレットをチェックしたときにしか得られませんでした。

関連する問題