Есть модуль
authenticable.rb:
module Authenticable
def current_user
@current_user ||= User.find_by(auth_token: request.headers['Authorization'])
end
def authenticate_with_token!
render json: { errors: "Not authenticated" },
status: :unauthorized unless user_signed_in?
end
def user_signed_in?
current_user.present?
end
end
В своем коде я его использую для предотвращения несанкционированного доступа, примерно так:
# app/controllers/api/v1/appication_controller.rb
class Api::V1::ApplicationController < ActionController::Base
protect_from_forgery with: :null_session
include Authenticable
end
# app/controllers/api/v1/users_controller.rb
class Api::V1::UsersController < Api::V1::ApplicationController
respond_to :json
before_filter :authenticate_with_token!, only: [:update, :destroy]
....
.....
end
Есть тест
authenticable_spec.rb:
require 'rails_helper'
class Authentication < ActionController::Base
include Authenticable
end
describe Authenticable do
let(:authentication) { Authentication.new }
subject { authentication }
describe "#authenticate_with_token" do
before do
authentication.stub(:current_user).and_return(nil)
??????
end
it "render a json error message" do
expect(json_response[:errors]).to eql "Not authenticated"
end
it { response.status.should eq 401 }
end
Что мне нужно написать вместо ??????, чтобы тесты работали?