Upstream sync
This commit is contained in:
78
spec/controllers/api/users_controller_spec.rb
Normal file
78
spec/controllers/api/users_controller_spec.rb
Normal file
@@ -0,0 +1,78 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Api::UsersController, type: :controller do
|
||||
before do
|
||||
ENV['CUSTOM_API_TOKEN'] = "custom_token"
|
||||
end
|
||||
describe '#create' do
|
||||
context 'Invalid token' do
|
||||
it 'Returns 401 (Unauthorized) status if token is not valid' do
|
||||
|
||||
post :create
|
||||
|
||||
expect(response).not_to be_successful
|
||||
expect(response).to have_http_status(401)
|
||||
end
|
||||
end
|
||||
|
||||
context 'Valid token' do
|
||||
before :each do
|
||||
controller.request.env['HTTP_AUTHORIZATION'] = 'Bearer custom_token'
|
||||
end
|
||||
|
||||
it 'Returns Server error if user param is missing' do
|
||||
user_count = User.all.count
|
||||
|
||||
expect do
|
||||
post :create
|
||||
end.to raise_exception ActionController::ParameterMissing
|
||||
|
||||
expect(User.all.count).to eq user_count
|
||||
end
|
||||
|
||||
it 'Returns Server Error if email or password is missing' do
|
||||
user_count = User.all.count
|
||||
|
||||
expect do
|
||||
post :create, params: { user: { email: "a@b.com" } }
|
||||
end.to raise_exception ActionController::ParameterMissing
|
||||
|
||||
expect do
|
||||
post :create, params: { user: { password: "123" } }
|
||||
end.to raise_exception ActionController::ParameterMissing
|
||||
|
||||
expect(User.all.count).to eq user_count
|
||||
end
|
||||
|
||||
it 'Returns Server Error if body contains not permitted params' do
|
||||
user_count = User.all.count
|
||||
|
||||
expect do
|
||||
post :create, params: { user: { email: "a@b.com", password: "123", admin: true } }
|
||||
end.to raise_exception ActionController::UnpermittedParameters
|
||||
|
||||
expect(User.all.count).to eq user_count
|
||||
end
|
||||
|
||||
it 'Creates user if body contains correct params' do
|
||||
expect do
|
||||
post :create, params: { user: { email: "a@b.com", password: "123" } }
|
||||
end.to change(User, :count).by(1)
|
||||
|
||||
expect(response).to be_successful
|
||||
end
|
||||
|
||||
it 'Nothing changes if existing email is used' do
|
||||
create(:user, email: "a@b.com")
|
||||
|
||||
expect do
|
||||
post :create, params: { user: { email: "a@b.com", password: "123" } }
|
||||
end.not_to change(User, :count)
|
||||
|
||||
expect(response).to be_successful
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user