2012-04-17 105 views
3

我正在为依赖连接中持久会话的中间件编写单元测试。 (即connect-mongo)。针对会话特定中间件的Node.js单元测试

我想创建一个假会话,但似乎无法弄清楚如何。

我在我的浏览器中有一个connect.sid cookie,我假设它与某些加密方式中会话集合中的_id相关。

这里是我的尝试:

我在cookieParser中间件和会话存储到服务器添加,然后用下面的请求发送到服务器(复制从Chrome的开发工具面板上的键):

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

在服务器端正确设置了Cookie,并且验证了会话正在工作。

但是,从cookie到会话的魔术转换并没有像我所希望的那样发生 - 正确的方法是什么?

回答

1

如果存在具有该ID的会话,则只能在服务器上设置cookie。谁首先创建了会话?

我可以告诉你我在我的服务器上做了什么。我想创建模拟客户端并将请求发送到服务器的测试。我需要一种方法来验证客户端。我的服务器允许基于Google OAuth进行身份验证。但是,我不想经历教导客户登录Google帐户的麻烦。

我的解决方案是实现另一种方法登录到我的服务器 - 只使用用户名。此功能仅在测试期间启用并禁用生产。我的测试客户现在可以无问题地登录。他们在登录后收到Cookie“connect.sid”,并在随后的请求中将其发送回服务器。

我也使用request.jar()为我的请求创建cookie jar。但是,我应该注意到,这只有在您同时模拟多个客户端并且需要为每个客户端单独使用一个cookie jar时才有必要。