Ruby on rails 使用Capybara Webkit在RSpec功能规范中模拟外部SSO登录
我的应用程序重定向到外部方进行单点登录(SSO) 登录后,该外部方会将该用户重定向回我的应用程序的回调路径 控制器实现如下:Ruby on rails 使用Capybara Webkit在RSpec功能规范中模拟外部SSO登录,ruby-on-rails,rspec,mocking,capybara,capybara-webkit,Ruby On Rails,Rspec,Mocking,Capybara,Capybara Webkit,我的应用程序重定向到外部方进行单点登录(SSO) 登录后,该外部方会将该用户重定向回我的应用程序的回调路径 控制器实现如下: SsoController < ApplicationController def connect # do stuff # Redirect to external party with some params redirect_to "www.external-party.com?foo=\"bar\"" end def
SsoController < ApplicationController
def connect
# do stuff
# Redirect to external party with some params
redirect_to "www.external-party.com?foo=\"bar\""
end
def callback
# Receive response from external party
response = params[:response]
# do stuff
end
end
SsoController
在我的特性规范中,我希望实际模拟出这一点,以便从用户的角度测试端到端的功能
我使用的是RSpec+Capybara,我想对以下流程进行建模-
- 用户单击某些按钮(例如“登录”)
- 该按钮与上面重定向到某个外部方的
操作关联connect
- RSpec根据发送过来的参数模拟响应,并将
请求发送回我的应用程序(POST
操作)回调
- 进一步的业务逻辑,以登录用户并将其带到目标
编辑:首选
POST
请求返回我的应用程序,但这不是必须的。如果是GET
请求或重定向,我可以将我的应用程序配置为只允许在测试环境中使用这些HTTP谓词。而不是试图在应用程序代码中模拟这一点(这在功能规格中是不鼓励的)。最干净的方法是使用可编程代理,如puffing billy-。这将允许您以任何方式响应测试浏览器对“www.external-party.com?foo=”bar\”的请求。谢谢!这似乎很有用。