Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Capybara Webkit在RSpec功能规范中模拟外部SSO登录_Ruby On Rails_Rspec_Mocking_Capybara_Capybara Webkit - Fatal编程技术网

Ruby on rails 使用Capybara Webkit在RSpec功能规范中模拟外部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

我的应用程序重定向到外部方进行单点登录(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
SsoController
在我的特性规范中,我希望实际模拟出这一点,以便从用户的角度测试端到端的功能

我使用的是RSpec+Capybara,我想对以下流程进行建模-

  • 用户单击某些按钮(例如“登录”)
  • 该按钮与上面重定向到某个外部方的
    connect
    操作关联
  • RSpec根据发送过来的参数模拟响应,并将
    POST
    请求发送回我的应用程序(
    回调
    操作)
  • 进一步的业务逻辑,以登录用户并将其带到目标
我不确定如何执行第三步,尤其是在拦截呼叫、构建响应和发回内容时

谢谢


编辑:首选
POST
请求返回我的应用程序,但这不是必须的。如果是
GET
请求或重定向,我可以将我的应用程序配置为只允许在测试环境中使用这些HTTP谓词。

而不是试图在应用程序代码中模拟这一点(这在功能规格中是不鼓励的)。最干净的方法是使用可编程代理,如puffing billy-。这将允许您以任何方式响应测试浏览器对“www.external-party.com?foo=”bar\”的请求。

谢谢!这似乎很有用。