2012-04-17 12 views
3

私は、接続の永続セッションに依存するミドルウェアのユニットテストを作成しています。 (すなわち、connect-mongo)。Node.jsセッション固有ミドルウェアのユニットテスト

私は偽のセッションを作成したいと思いますが、どのように理解できないようです。

ブラウザにconnect.sidのCookieがあります。私のセッションコレクションの_idと暗号化されていると見なします。ここで

は、私が試したものです:

私は、サーバー(Chromeの開発ツールパネルからキーをコピーした)にそれを送信するには、次の要求を使用し、その後、サーバーにcookieParserミドルウェアとセッションストアに追加しました:

var jar = request.jar(), 
    cookie = request.cookie('connect.sid=<REALLYLONGKEY>'); 
jar.add(cookie); 
request({url : 'http://localhost:8585/',jar : jar},this.callback); 

サーバー側で正しくCookieを設定してセッションが機能していることを確認しました。

しかし、私が望んでいたように、クッキーからセッションへの魔法の変換は起こりませんでした - これを行う正しい方法は何ですか?

答えて

1

サーバー上にCookieを設定すると、そのIDのセッションが存在する場合にのみ機能します。誰が最初にセッションを作成しましたか?

私は自分のサーバーで何をしたのか分かります。私は、クライアント側をシミュレートし、サーバーにリクエストを送信するテストを作成したかったのです。私はクライアントを認証する方法が必要でした。私のサーバーはGoogle OAuthに基づく認証を許可しました。しかし、私はクライアントにGoogleアカウントにサインインするよう教えるという手間を惜しまずにいました。

私の解決策は、ユーザー名だけを使用して、サーバーにサインインする代替の方法を実装することでした。この機能はテスト中にのみ有効になり、本番用には無効になります。私のテストクライアントは、問題なくサインインできるようになりました。彼らはサインインの結果としてクッキー 'connect.sid'を受け取り、それを後続のリクエストでサーバーに返します。

私もリクエストのためにcookie jarを作成するためにrequest.jar()を使用しました。しかし、これは同時に複数のクライアントをシミュレートし、各クライアントごとに別々のCookie jarが必要な場合にのみ必要であることに注意してください。

関連する問題