В моем файле app.rb
есть следующие настройки для current_user
class Application < Sinatra::Base
include Pundit
use JWTAuthorization
def current_user
env[:user]
end
delete '/users/:user_id' do
user = User.find(params[:user_id])
no_data! unless user
authorize user, :edit?
user.destroy
response = {status: 200, data:'success, user deleted.'}
json response
end
end
Проблема в том, что мне нужно настроить current_user
для моего модульного тестирования. В противном случае тест выдаст ошибку внутри authorize user, :edit?
или любого другого Pundit
кода авторизации, потому что current_user
вернет nill
. Как я могу настроить env[:user]
внутри моего spe c?
Есть ли способ, которым я могу смоделировать env[:user]
со значением, используя rspe c или использовать rack_env={}
для настройки?
Это то, что я до сих пор пробовал в моем файле spe c безуспешно:
before(:each) do
@user = User.create(name: 'Oswaldinho',email: 'waldinho@com.com',role: 'user')
end
it 'deletes an existing user ' do
delete "/users/#{@user.id}", params={}, rack_env={user: @user}
expect(last_response).to be_ok
end