On Friday, 17 August 2018 15:32:23 UTC+2, belgoros wrote:
>
> What's wrong with the following request spec example (using 
> FactoryBotRails):
>
> RSpec.describe "Users", type: :request do
>   let(:user)    { create(:user) }
>   let(:headers) { valid_headers(user.username) }
>
>
>   describe 'PATCH /users/logout' do
>     before { patch users_logout_path, params: {}, headers: headers }
>
>
>     it 'nullifies user token' do
>       expect(user.token).to be_nil
>       expect(response).to have_http_status(204)
>     end
>   end
> end
>
> Here is helper method in support/controller_spec_helper.rb
>
> def valid_headers(username)
>     {
>       'Authorization' => "Bearer #{token_generator(username)}",
>       'Content-Type' => 'application/json'
>     }
>   end
>
>
> def token_generator(username)
>     JsonWebToken.encode(sub: username)
> end
>
> Here is the controller code:
>
> #UsersController
>
> def logout
>     @current_user.update_attribute(:token, nil)
>     head :no_content
> end
>
> I checked `@current_user` after updating his token, it was `nil`. Why it 
> is nit the case in the spec example ?
>

Here is how @current_user is implemented:

#ApplicationController


class ApplicationController < ActionController::API
    before_action :authorize_request
  attr_reader :current_user


  private


    def authorize_request
      @current_user = (AuthorizeApiRequest.new(request.headers).call)[:user]
    end 
end


-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/fbe84cde-e241-426c-a598-256d1285a557%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to