diff options
-rw-r--r-- | spec/requests/authentications_spec.rb | 2 | ||||
-rw-r--r-- | spec/requests/post_user_accounts_spec.rb | 21 | ||||
-rw-r--r-- | spec/support/sessions_helper.rb | 12 | ||||
-rw-r--r-- | spec/support/shared_examples/requests/post_request.rb | 4 |
4 files changed, 36 insertions, 3 deletions
diff --git a/spec/requests/authentications_spec.rb b/spec/requests/authentications_spec.rb index 71ffa19..3b1da3e 100644 --- a/spec/requests/authentications_spec.rb +++ b/spec/requests/authentications_spec.rb @@ -5,7 +5,7 @@ require 'rails_helper' RSpec.describe 'POST /api/authenticate', type: :request do it_behaves_like 'a POST request' do let(:route) { '/api/authenticate' } - let(:expected_error_message) { 'Credenciales incorrectas' } + let(:expected_error_messages) { ['Credenciales incorrectas'] } let(:desired_error_status) { 401 } let(:expected_text) { %w[token refresh] } let(:user) { create(:user_account) } diff --git a/spec/requests/post_user_accounts_spec.rb b/spec/requests/post_user_accounts_spec.rb new file mode 100644 index 0000000..4370af8 --- /dev/null +++ b/spec/requests/post_user_accounts_spec.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe 'POST /api/user_accounts', type: :request do + it_behaves_like 'a POST request' do + let(:route) { '/api/user_accounts' } + let(:expected_error_messages) do + ["Password can't be blank", 'Email is invalid', "First name can't be blank", "Last name can't be blank", + "Role can't be blank"] + end + let(:desired_error_status) { 422 } + let(:expected_text) { %w[token refresh] } + let(:user) { create(:user_account) } + let(:params) do + { user_account: JSON.parse(user.to_json).except('session_key', 'created_at', 'updated_at', 'id', + 'password_digest').merge({ password: user.password }) } + end + let(:wrong_params) { { user_account: { email: 'notanemail', password: '' } } } + end +end diff --git a/spec/support/sessions_helper.rb b/spec/support/sessions_helper.rb new file mode 100644 index 0000000..eeb12d8 --- /dev/null +++ b/spec/support/sessions_helper.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +require 'rails_helper' + +# Module to generate JWTs for use in specs. +module SessionsHelper + def jwt(user) + user_params = { credentials: { email: user.email, password: user.password } } + post('/api/authenticate', user_params.to_json) + JSON.parse(response.body)['token'] + end +end
\ No newline at end of file diff --git a/spec/support/shared_examples/requests/post_request.rb b/spec/support/shared_examples/requests/post_request.rb index 6ea2a86..a253281 100644 --- a/spec/support/shared_examples/requests/post_request.rb +++ b/spec/support/shared_examples/requests/post_request.rb @@ -11,9 +11,9 @@ RSpec.shared_examples 'a POST request' do context 'with incorrect parameters' do it 'returns a client side error http status and a error message' do - post('/api/authenticate', params: wrong_params.to_json, headers:) + post(route, params: wrong_params.to_json, headers:) expect(response).to have_http_status(desired_error_status) - expect(response.body).to include(expected_error_message) + expect(response.body).to include_strings(expected_error_messages) end end end |