2012-05-07 162 views
0

有沒有什麼辦法可以手動觸發omniauth回調?手動觸發omniauth回調

我的意思是說,我得到了在json中的twitter的oauth響應,然後我可以POST/GET數據到omniauth回調url嗎?如果是這樣,是否有任何特定的格式我應該重新構造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'users/..''嗎?對不起,我是rspec的新手...我忘記提到上面的代碼在請求規範中。也有可能客戶端應用程序將json數據發佈到回調url?比如說,我可以通過ajax將json數據發佈到回調url,並且'request.env ['omniauth.auth']'會被填充? – Madhusudhan

+0

你想把它放在rspec的'之前:每個'塊中。當你說'客戶端應用'時,我不確定你的意思......這只是爲了測試。 – x1a4