From 47bf07fd939c264863b4bef3fedd46103f0b610c Mon Sep 17 00:00:00 2001 From: HombreLaser Date: Fri, 3 Mar 2023 21:25:47 -0600 Subject: AƱade specs faltantes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spec/controllers/user_accounts_controller_spec.rb | 1 + .../delete_sessions_controller_spec.rb | 15 +++++++++++++++ .../user_accounts_controller/show_user_accounts_spec.rb | 12 ++++++++++++ spec/support/shared_examples/requests/get_request.rb | 11 +++++++++++ spec/support/shared_examples/requests/post_request.rb | 2 ++ 5 files changed, 41 insertions(+) create mode 100644 spec/requests/sessions_controller/delete_sessions_controller_spec.rb create mode 100644 spec/requests/user_accounts_controller/show_user_accounts_spec.rb create mode 100644 spec/support/shared_examples/requests/get_request.rb (limited to 'spec') diff --git a/spec/controllers/user_accounts_controller_spec.rb b/spec/controllers/user_accounts_controller_spec.rb index d5eefca..6d67426 100644 --- a/spec/controllers/user_accounts_controller_spec.rb +++ b/spec/controllers/user_accounts_controller_spec.rb @@ -4,4 +4,5 @@ require 'rails_helper' RSpec.describe Api::UserAccountsController, type: :controller do it { should route(:post, '/api/user_accounts').to(action: :create) } + it { should route(:get, '/api/account').to(action: :show) } end diff --git a/spec/requests/sessions_controller/delete_sessions_controller_spec.rb b/spec/requests/sessions_controller/delete_sessions_controller_spec.rb new file mode 100644 index 0000000..bc669fc --- /dev/null +++ b/spec/requests/sessions_controller/delete_sessions_controller_spec.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'DELETE /api/logout', type: :request do + let(:user) { create(:user_account) } + let(:token) { jwt(user) } + + it "returns status 204 and deletes the user's session key" do + delete('/api/logout', headers: { 'Authorization' => "Bearer #{token['token']}" }) + expect(response).to have_http_status(204) + user.reload + expect(user.session_key).to be_nil + end +end diff --git a/spec/requests/user_accounts_controller/show_user_accounts_spec.rb b/spec/requests/user_accounts_controller/show_user_accounts_spec.rb new file mode 100644 index 0000000..f79802a --- /dev/null +++ b/spec/requests/user_accounts_controller/show_user_accounts_spec.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +RSpec.describe 'GET /api/account', type: :request do + let(:user) { create(:user_account) } + let(:token) { jwt(user) } + + it_behaves_like 'a GET request' do + let(:headers) { { 'Authorization' => "Bearer #{token['token']}"} } + let(:route) { '/api/account' } + let(:expected_text) { [user.email, user.first_name, user.last_name, user.role] } + end +end diff --git a/spec/support/shared_examples/requests/get_request.rb b/spec/support/shared_examples/requests/get_request.rb new file mode 100644 index 0000000..c402196 --- /dev/null +++ b/spec/support/shared_examples/requests/get_request.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +RSpec.shared_examples 'a GET request' do + context 'for an existing resource' do + it 'returns a 200 status and the requested resource(s)'do + get(route, headers:) + expect(response).to have_http_status(200) + expect(response.body).to include_strings(expected_text) + end + end +end diff --git a/spec/support/shared_examples/requests/post_request.rb b/spec/support/shared_examples/requests/post_request.rb index a253281..b7226d0 100644 --- a/spec/support/shared_examples/requests/post_request.rb +++ b/spec/support/shared_examples/requests/post_request.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + RSpec.shared_examples 'a POST request' do let(:headers) { { 'CONTENT_TYPE' => 'application/json' } } -- cgit v1.2.3