我的应用程序重定向到单一登录(SSO)的外部方。
登录后,该外部方会将该用户重定向回我应用的回叫路线。
这在控制器中实现如下:
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
在我的功能规格中,我真的很喜欢这个被嘲笑,所以我可以从用户的角度测试端到端的功能。
我使用RSpec + Capybara,我想为以下流程建模 -
connect
操作相关联,该操作会重定向到某个外部参与方POST
请求发送回我的应用(callback
操作)我不确定如何进行第3步,尤其是在拦截呼叫,构建响应和发布回传物时
谢谢!
编辑:首选POST
请求返回我的应用,但不是必须的。如果它是GET
请求或重定向,我可以将我的应用配置为仅在测试环境中允许这些HTTP谓词。
答案 0 :(得分:2)
而不是试图在应用程序代码中模拟这一点(在功能规范中不鼓励),最简单的方法就是使用像puffing billy这样的可编程代理 - https://github.com/oesmith/puffing-billy。这将让您回复测试浏览器向&#34; www.external-party.com提出请求?foo = \&#34; bar \&#34;&#34;以任何你想要的方式。