2012-04-17 2 views
3

연결의 지속적인 세션에 의존하는 미들웨어에 대한 단위 테스트를 작성하고 있습니다. (즉 연결 - 몽고).Node.js 세션 별 미들웨어에 대한 단위 테스트

가짜 세션을 만들고 싶지만 그 방법을 알 수없는 것 같습니다.

내 세션 콜렉션의 _id와 암호화 된 방식으로 연관되어 있다고 가정하는 브라우저에 connect.sid 쿠키가 있습니다. 여기

내가 시도 내용은 다음과 같습니다

내가 cookieParser 미들웨어와 서버에 세션 저장소에 추가 한 후 (크롬의 개발 도구 패널에서 키 복사) 서버에 그것을 보내 다음과 같은 요청을 사용 :

정확하게 서버 쪽에서 쿠키를 설정하고 세션이 작동하는지 확인했습니다.

그러나 내가 원하는 바대로 쿠키에서 세션으로의 마법 변환이 발생하지 않았습니다. 올바른 방법은 무엇입니까?

답변

1

서버에 쿠키를 설정하면 해당 ID를 가진 세션이있는 경우에만 작동합니다. 누가 처음에 세션을 만들었습니까?

내 서버에서 내가 한 일을 알려줄 수 있습니다. 나는 클라이언트 측을 시뮬레이션하고 서버에 요청을 보내는 테스트를 만들고 싶었다. 클라이언트를 인증 할 방법이 필요했습니다. 내 서버가 Google OAuth를 기반으로 인증을 허용했습니다. 그러나 나는 고객에게 Google 계정에 로그인하도록 교육하는 문제를 겪고 싶지 않았습니다.

내 솔루션은 내 서버에 로그인하기위한 대체 방법을 구현하는 것이 었습니다. 사용자 이름 외에는 아무것도 사용하지 않았습니다. 이 기능은 테스트 중에 만 활성화되며 프로덕션 환경에서는 비활성화됩니다. 테스트 클라이언트가 이제 문제없이 로그인 할 수 있습니다. 로그인 결과로 쿠키 'connect.sid'를 수신하고 후속 요청에서 서버로 다시 보냅니다.

내 요청에 대한 쿠키 항아리를 만들 때 역시 request.jar()를 사용했습니다. 그러나 이것은 하나 이상의 클라이언트를 동시에 시뮬레이션하고 각 클라이언트마다 별도의 쿠키 항아리가 필요한 경우에만 필요하다는 점에 유의해야합니다.