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.