ruby-on-rails – Rails中的Rspec授权

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails中的Rspec授权前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用rails 4开发rails API,我想测试它.为此,我使用的是Rspec框架.

我的API有一个身份验证方法,如下所示:

  1. class UsersController < ApplicationController
  2. # Token authentication
  3. before_action :set_user,except: [:index,:create]
  4. before_action :authenticate,:create]
  5. before_action :authenticate_admin,only: [:index,:create]
  6.  
  7. ...
  8. end

然后我有我的UsersController Rspec:

  1. describe UsersController do
  2. render_views
  3. describe "GET /users" do
  4. it "gets all users" do
  5. @request.env["AUTHORIZATION"] = "Token token=xxxxxxxxx"
  6. @request.env["HTTP_ACCEPT"] = "application/json"
  7. @request.env["CONTENT_TYPE"] = "application/json"
  8. get :index
  9. response.status.should be(200)
  10. end
  11. end
  12. end

当我执行测试时,它总是给我一样的:

  1. UsersController GET /users getting all users
  2. Failure/Error: response.status.should be(200)
  3.  
  4. expected #<Fixnum:401> => 200
  5. got #<Fixnum:803> => 401
  6. ...

我使用authenticate_or_request_with_http_token方法从标头中获取令牌.

如果有人可以帮我找到跳过before_action方法或正确设置Authentication头的方法,我将非常感激.

谢谢!

解决方法

我终于解决了这个问题.

错误是:

  1. request.env["AUTHORIZATION"]

一定是

  1. request.env["HTTP_AUTHORIZATION"].

除此之外,我从一个未在我的测试环境中创建的用户获取了一个错误的令牌.

猜你在找的Ruby相关文章