2017-04-18 1 views
0

Behat으로 XML 및 JSON REST API를 테스트하고 있습니다. 인증을 위해 Sentinel을 사용합니다. 이제 Behat을 통해 사용자에게 로그인하고 로그인 세션의 상태를 테스트하면 API는 부정적 응답 (예 : 로그인하지 않은 사용자)을 반환합니다. AJAX 요청을 사용하여 브라우저에서 똑같은 작업을 수동으로 수행하면 모든 것이 올바르게 작동합니다. 따라서 최종 결과는 좋지만 시나리오는 실패합니다. 이 문제를 극복하는 방법에 대한 제안?Behat과의 로그인 세션 테스트

UPDATE :

내가 Slim, Twig, EloquentSentinel를 기반으로하는 응용 프로그램의 설정에 좀 더 정교한 수 있습니다.

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은 정규 클라이언트 역할을합니다.

+0

가능하면 인증 방법 및 사용중인 오류, 사용중인 유효성 검사에 대한 코드를 추가하십시오. 가능하면 다른 사람들이 당신에게 구체적인 답을 줄 수 있습니다. 질문의 실제 형식은 그다지 구체적이지 않습니다. – lauda

+0

설치에 대한 추가 정보를 추가했습니다. 그것은 스트립 다운 버전이지만 기본적으로 그것이하는 일입니다. – wout

답변

0

설정에 대한 자세한 정보를 제공해 주시겠습니까? behat.yml 및 버전, 확장?