2012-07-20 2 views
3

Doorkeeper를 사용하여 OAuth2 제공 업체를 구축하려고하는데 기존의 모든 플로우를 테스트하고 싶었지만 첫 번째 시도에서 멈추었습니다.Doorkeeper 액세스 토큰

인증 코드 흐름을 테스트하려고합니다. 인증 코드를 얻는 데는 문제가 없지만 일단 액세스 토큰을 얻으려고하면 문제가 발생합니다. 다음은 몇 가지 단계입니다.

 describe 'when sends an access token request' do 

     let(:access_params) do 
      { grant_type: 'authorization_code', 
      code:   authorization_code, 
      redirect_uri: application.redirect_uri } 
     end 

     let(:access_uri) { '/oauth/token' } 

     before { page.driver.post access_uri, access_params } 

     it 'returns valid json' do 
      pp page.source 
     end 

마지막 액세스 토큰이있는 json을 기대했지만이 오류가 발생했습니다. 나는 클라이언트와 매개 변수를 꽤 잘 조사했다. 모두 나에게 잘 보입니다.

 {"error":"invalid_client","error_description":"Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method."} 

누락 된 부분을 이해하는 데 도움을 줄 수 있습니까? 감사합니다.

+0

이러한 흐름을 테스트해야하는 이유는 무엇입니까? OAuth 플로우는 문지기에서 꽤 잘 테스트되었습니다. –

+0

저는 코드를 아주 잘 파고있었습니다. 그래도 내 논리의 일부가 문제를 일으킬 수 있으므로 이러한 기능을 확인해야합니다. 중요한 일들을 수행하는 엔진을 사용할 때 주요 사용 시나리오에 대한 통합 테스트를 구축하는 것이 좋습니다. –

답변

2

마침내 작업을 마쳤습니다. 클라이언트가 기본 인증을 사용하여 스스로를 식별해야하는 OAuth2 사양에 대한 한 가지 중요한 부분을 놓쳤습니다. 나는 게시물 앞에 그것을 추가하고 그것을 해결 꽤 잘했다.

before do 
    page.driver.browser.authorize application.uid, application.secret 
    page.driver.post access_uri, access_params 
    end