Behat으로 XML 및 JSON REST API를 테스트하고 있습니다. 인증을 위해 Sentinel을 사용합니다. 이제 Behat을 통해 사용자에게 로그인하고 로그인 세션의 상태를 테스트하면 API는 부정적 응답 (예 : 로그인하지 않은 사용자)을 반환합니다. AJAX 요청을 사용하여 브라우저에서 똑같은 작업을 수동으로 수행하면 모든 것이 올바르게 작동합니다. 따라서 최종 결과는 좋지만 시나리오는 실패합니다. 이 문제를 극복하는 방법에 대한 제안?Behat과의 로그인 세션 테스트
UPDATE :
내가 Slim, Twig, Eloquent 및 Sentinel를 기반으로하는 응용 프로그램의 설정에 좀 더 정교한 수 있습니다.
API에는 사용자 세션을 만들거나 표시 (예 또는 아니요) 및 삭제할 경로가 있습니다. 따라서 사용자 로그인은 /session.json
또는 /session.xml
으로 이메일 주소와 비밀번호를 게시하여 수행됩니다. 뒤에서 컨트롤러는 기본적으로 Sentinel::authenticate(...)
을 호출합니다.
브라우저에서 모두 정상적으로 작동합니다. /session.json
에 대한 GET 요청을 수행하면 사용자가 올바르게 로그인 된 것을 볼 수 있습니다. Behat과 동일한 단계를 수행하면 POST 요청시 올바른 반환 값을 얻을 수 있으므로 Sentinel에 사용자가 로그인했다는 메시지가 표시됩니다. 그러나 GET 요청은 사용자가 로그인하지 않았 음을 알려줍니다.
실제로 요청을 수행 할 Requests 라이브러리를 사용하는 상황에서
Scenario Outline: Logging in a user
Given I have a user with "<email>" and "<password>"
And I use the "<format>" format
When I log in the user with "<email>" and "<password>"
Then the "success" message should be "session.active"
Examples:
| email | password | format |
| [email protected] | 32165487 | xml |
| [email protected] | 89056734 | json |
: 당신은 아이디어의 Behat 시나리오는 다음과 같이 보인다. 그래서 Behat은 정규 클라이언트 역할을합니다.
가능하면 인증 방법 및 사용중인 오류, 사용중인 유효성 검사에 대한 코드를 추가하십시오. 가능하면 다른 사람들이 당신에게 구체적인 답을 줄 수 있습니다. 질문의 실제 형식은 그다지 구체적이지 않습니다. – lauda
설치에 대한 추가 정보를 추가했습니다. 그것은 스트립 다운 버전이지만 기본적으로 그것이하는 일입니다. – wout