Как смоделировать или настроить current_user в sinatra, используя Pundit для модульного тестирования? - PullRequest
0 голосов
/ 13 марта 2020

В моем файле 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 
...