0
我想測試認證機制,一旦成功重定向到子域,例如: 1.登錄表單位於http://example.com
2.用戶填寫表單,如果憑證正確,則重定向到http://zone.example.com
。如何在水豚RSpec測試中遵循重定向到子域?
我控制器操作是這樣的:
def create_session
if User.authorize(params[:user])
sign_in user
redirect_to root_url(subdomain: 'zone')
else
redirect_to "#{root_url}#email-login-modal?wrong_password=true"
end
end
集成測試:
context "logging in" do
before(:all) do
@password = 'test123456'
end
let(:user) {create(:user, password: @password)}
scenario "by email", js: true do
visit "/"
page.find("a[href='#email-login-modal']").click
within("#login-form") do
fill_in 'user_email', :with => user.email
fill_in 'user_password', :with => @password
find("button[type='submit']").click
end
expect(page).to have_content user.name
end
end
登錄工作在發展,但由於水豚並不遵循重定向至子站點測試失敗。
你可以嘗試用request.base_url –
謝謝@CaffeineCoder更換root_url,但我寫的控制器方法工作正常,沒有必要改變那裏的一切。唯一的問題是,水豚引擎在成功登錄(http://zone.example.com)後沒有遵循重定向到子域,而是停留在http://example.com(用戶授權正確),因爲我在調試器中驗證。 – MatFiz
我知道,這就是爲什麼我說要替換代碼並嘗試。兩者幾乎都做同樣的事情。不同之處在於,root始終爲根url(不能改變),但是base_url可以被調用,而不管URL如何改變。我懷疑這是測試失敗的原因。嘗試不會造成太大的傷害,是嗎? :) –