我正在尝试通过创建一个POST用于新用户会话的帮助程序来启动新的用户会话.这就是我所拥有的
def login(user)
post user_session_path, :login => user.username, :password => user.password
end
Run Code Online (Sandbox Code Playgroud)
并为用户
user = Factory.create(:user)
Run Code Online (Sandbox Code Playgroud)
我在RSpec中进行了测试,将用户定向到需要身份验证的页面.使用帮助程序,我希望创建一个新的用户会话.但是,运行规范时,它告诉我当前页面是登录屏幕.这表示在没有用户会话访问受限资源时,未创建新用户会话,并且用户被重定向到登录屏幕.查看测试日志,就是这种情况.
同时查看日志,也就是说POST操作是未经授权的.
Started POST "/login" for 127.0.0.1 at 2012-02-04 13:34:59 -0800
Processing by SessionsController#create as HTML
Parameters: {"login"=>"foo12", "password"=>"[FILTERED]"}
Completed 401 Unauthorized in 1ms
Processing by SessionsController#new as HTML
Parameters: {"login"=>"foo12", "password"=>"[FILTERED]"}
Rendered devise/shared/_links.erb (1.4ms)
Completed 200 OK in 15ms (Views: 12.7ms | ActiveRecord: 0.0ms)
Run Code Online (Sandbox Code Playgroud)
我尝试通过浏览器手动使用登录页面,并且能够创建一个会话就好了.我还与Capybara编写了一个测试,访问登录页面,填写用户凭据并提交.这将创建一个没有问题的新用户会话.
pag*_*ibe 27
我通过包括Warden :: Test :: Helpers(它设计在幕后使用)得到了这个工作
require 'spec_helper'
include Warden::Test::Helpers
describe "...Whatever..." do
before(:each) do
@user = Factory.create(:user)
login_as @user, :scope => :user
end
...
Run Code Online (Sandbox Code Playgroud)
从这里找到了解决方案:http://blog.joshmcarthur.com/2011/06/11/integration-tests-with-devise-and-rspec/
| 归档时间: |
|
| 查看次数: |
4848 次 |
| 最近记录: |