我正在使用rails 4开发rails API,我想测试它.为此,我使用的是Rspec框架.
我的API有一个身份验证方法,如下所示:
class UsersController < ApplicationController # Token authentication before_action :set_user,except: [:index,:create] before_action :authenticate,:create] before_action :authenticate_admin,only: [:index,:create] ... end
然后我有我的UsersController Rspec:
describe UsersController do render_views describe "GET /users" do it "gets all users" do @request.env["AUTHORIZATION"] = "Token token=xxxxxxxxx" @request.env["HTTP_ACCEPT"] = "application/json" @request.env["CONTENT_TYPE"] = "application/json" get :index response.status.should be(200) end end end
当我执行测试时,它总是给我一样的:
UsersController GET /users getting all users Failure/Error: response.status.should be(200) expected #<Fixnum:401> => 200 got #<Fixnum:803> => 401 ...
我使用authenticate_or_request_with_http_token方法从标头中获取令牌.
如果有人可以帮我找到跳过before_action方法或正确设置Authentication头的方法,我将非常感激.
谢谢!
解决方法
我终于解决了这个问题.
错误是:
request.env["AUTHORIZATION"]
一定是
request.env["HTTP_AUTHORIZATION"].
除此之外,我从一个未在我的测试环境中创建的用户获取了一个错误的令牌.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。