2012-11-21 78 views
0

我正在使用RSpec来测试rails中的控制器行为。我的期望之一是以下情况:使用RSpec在Rails应用程序中测试登录流程

  1. 用户尝试访问带有参数/home?val=123的受保护(需要登录)网址。
  2. 该用户被重定向到登录页面。
  3. 登录后,用户应该被重定向回原始请求的URL和相关的参数。

我使用设计为我的认证系统(使用omniauth),我建立了推荐的宏登录用户 和所有。

我卡上如何测试上述行为的流了一下:

describe HomeController do 
    context "user is logged out" do 
    it "redirects back to original page after signin" do 
     # user is not signed in - redirected to login page 
     get :index, { :val => '12345' } 
     current_user.should_not be_present 
     expect(response).to redirect_to(login_page_path) 

     # should now login the user and verify 
     # that request.fullpath == '/home?val=12345' 

     # ?... 
    end 
    end 

end 

是否属于即使在控制器规范?任何帮助或示例/ s将不胜感激。谢谢。

回答

1

Luacassus看起来像他有一个体面的答案,但你看过水豚请求测试?

有上Rails Casts here.

一个真正像样的教程这基本上是我们用来测试我们的注册测试。但是,我们不测试omniauth,因此它可能不是您正在寻找的。