2012-05-07 2 views
0

omniauth 콜백을 수동으로 트리거 할 수있는 방법이 있습니까?수동으로 omniauth 콜백 트리거

내가 말하는 것은 json의 twitter에서 oauth 응답을 받았다는 것입니다.이 데이터를 omniauth 콜백 URL에 POST/GET 할 수 있습니까? 그렇다면 json 데이터를 다시 구조화해야하는 특정 형식이 있습니까?

이 줄에서 뭔가를하고 있지만 omniauth 콜백에서 request.env['omniauth.auth']을 채울 수 없습니다. 여기

는 요청 사양

before(:each) do 
    # response returned from twitter is in spec/fixtures/oauth_twitter_response.json 
    twitter_oauth_response = File.join(Rails.root.to_s, 'spec', 'fixtures', 'oauth_twitter_response.json') 
    data = File.read(twitter_oauth_response) 
    @twitter_data = JSON.parse(data) 
end 

it 'should post the twitter data to omniauth callback' do 
    post 'users/auth/twitter/callback', {}, {:env => {"omniauth.auth" => @twitter_data}} 
end 

이 전혀 가능하다면 어떤 생각인가?

+0

는이 https://github.com/intridea/omniauth/wiki/Integration-Testing 나는이를 추가 할 –

답변

1

가능합니다. 당신이 놓친 유일한 것은 당신이 문제가있는 것입니다 - omniauth.auth으로 설정하십시오. 이처럼 수행

controller.stub!(:env).and_return('omniauth.auth' => @twitter_data) 
+0

를 사용할 수 있을까? 내가'post '사용자/..'를 당신이 제공 한 사용자로 대체해야합니까? 죄송합니다, 저는 rspec을 처음 사용합니다 ... 위의 코드가 요청 사양에 포함된다는 것을 잊어 버렸습니다. 또한 클라이언트 응용 프로그램이 json 데이터를 콜백 URL에 게시 할 수 있습니까? 예를 들어, json 데이터를 ajax를 통해 콜백 URL에 게시하고'request.env [ 'omniauth.auth']'가 채워질 수 있습니까? – Madhusudhan

+0

rspec의'before : each' 블록에 넣고 싶습니다. 나는 당신이 '클라이언트 응용 프로그램'을 말할 때 당신이 무엇을 의미하는지 확신하지 못합니다 ... 이것은 단지 시험을위한 것입니다. – x1a4

관련 문제