Initial commit
This commit is contained in:
144
spec/api/v2/admin/permissions_spec.rb
Normal file
144
spec/api/v2/admin/permissions_spec.rb
Normal file
@@ -0,0 +1,144 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
describe API::V2::Admin::Permissions do
|
||||
include_context 'bearer authentication'
|
||||
|
||||
let!(:create_admin_permission) { create(:permission, role: 'superadmin', action: 'accept', verb: 'get') }
|
||||
let!(:test_user) { create(:user, role: 'superadmin') }
|
||||
let!(:create_member_permission) { create(:permission, role: 'member') }
|
||||
|
||||
describe 'GET /api/v2/admin/permissions' do
|
||||
context 'successful response' do
|
||||
it 'returns all permissions' do
|
||||
get '/api/v2/admin/permissions', headers: auth_header
|
||||
|
||||
result = JSON.parse(response.body)
|
||||
expect(response).to be_successful
|
||||
expect(result.count).to eq(Permission.count)
|
||||
end
|
||||
|
||||
it 'returns paginated permissions' do
|
||||
get '/api/v2/admin/permissions', params: { limit: 1, page: 1 }, headers: auth_header
|
||||
result = JSON.parse(response.body)
|
||||
|
||||
expect(response).to be_successful
|
||||
expect(response.headers.fetch('Total')).to eq '2'
|
||||
expect(result.size).to eq 1
|
||||
expect(result.first['role']).to eq 'superadmin'
|
||||
|
||||
get '/api/v2/admin/permissions', params: { limit: 1, page: 2 }, headers: auth_header
|
||||
result = JSON.parse(response.body)
|
||||
|
||||
expect(response).to be_successful
|
||||
expect(response.headers.fetch('Total')).to eq '2'
|
||||
expect(result.size).to eq 1
|
||||
expect(result.first['role']).to eq 'member'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST /api/v2/admin/permissions' do
|
||||
context 'unsuccessful response' do
|
||||
it 'returns error while invalid verb creating' do
|
||||
post '/api/v2/admin/permissions', params: { role: 'admin', action: 'drop', verb: 'options', path: 'api/v2' }, headers: auth_header
|
||||
result = JSON.parse(response.body)
|
||||
|
||||
expect(response.code).to eq '422'
|
||||
expect(result['errors']).to eq(['admin.permissions.invalid_verb'])
|
||||
end
|
||||
|
||||
it 'returns error while invalid action creating' do
|
||||
post '/api/v2/admin/permissions', params: { role: 'admin', action: 'delete', verb: 'put', path: 'api/v2' }, headers: auth_header
|
||||
result = JSON.parse(response.body)
|
||||
|
||||
expect(response.code).to eq '422'
|
||||
expect(result['errors']).to eq(['admin.permissions.invalid_action'])
|
||||
end
|
||||
|
||||
it 'returns error while invalid role creating' do
|
||||
post '/api/v2/admin/permissions', params: { role: 'supertrader', action: 'accept', verb: 'put', path: 'api/v2' }, headers: auth_header
|
||||
result = JSON.parse(response.body)
|
||||
|
||||
expect(response.code).to eq '422'
|
||||
expect(result['errors']).to eq(['admin.permission.role_doesnt_exist'])
|
||||
end
|
||||
|
||||
it 'returns error while empty action creating' do
|
||||
post '/api/v2/admin/permissions', params: { role: 'supertrader', action: '', verb: 'put', path: 'api/v2' }, headers: auth_header
|
||||
result = JSON.parse(response.body)
|
||||
|
||||
expect(response.code).to eq '422'
|
||||
expect(result['errors']).to eq(['admin.permission.empty_action'])
|
||||
end
|
||||
end
|
||||
|
||||
context 'successful response' do
|
||||
let(:do_request) { post '/api/v2/admin/permissions', params: { role: 'superadmin', action: 'accept', verb: 'put', path: 'api/v2/admin' }, headers: auth_header }
|
||||
it 'creates new permission' do
|
||||
expect { do_request }.to change { Permission.count }.by(1)
|
||||
expect(response).to be_successful
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE /api/v2/admin/permissions' do
|
||||
context 'successful response' do
|
||||
let(:do_request) { delete '/api/v2/admin/permissions', params: { id: create_member_permission.id }, headers: auth_header }
|
||||
|
||||
it 'delete permission' do
|
||||
expect { do_request }.to change { Permission.count }.by(-1)
|
||||
expect(response).to be_successful
|
||||
end
|
||||
end
|
||||
|
||||
context 'unsuccessful response' do
|
||||
it 'return error while permission doesnt exist' do
|
||||
delete '/api/v2/admin/permissions', params: { id: 0 }, headers: auth_header
|
||||
result = JSON.parse(response.body)
|
||||
expect(response.code).to eq '404'
|
||||
expect(result['errors']).to eq(['admin.permission.doesnt_exist'])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PUT /api/v2/admin/permissions' do
|
||||
context 'successful response' do
|
||||
let(:permission) { Permission.find_by(id: create_admin_permission.id) }
|
||||
|
||||
it 'returns updated path for permission' do
|
||||
put '/api/v2/admin/permissions', params: { id: create_admin_permission.id , path: 'api/v2/admin' }, headers: auth_header
|
||||
|
||||
expect(response).to be_successful
|
||||
expect(permission.path).to eq 'api/v2/admin'
|
||||
end
|
||||
|
||||
it 'returns updated verb for permission' do
|
||||
put '/api/v2/admin/permissions', params: { id: create_admin_permission.id , verb: 'PUT' }, headers: auth_header
|
||||
|
||||
expect(response).to be_successful
|
||||
expect(permission.verb).to eq 'PUT'
|
||||
end
|
||||
|
||||
it 'returns updated fileds for permission' do
|
||||
put '/api/v2/admin/permissions', params: { id: create_admin_permission.id , verb: 'POST', action: 'all', path: 'api/v2' }, headers: auth_header
|
||||
|
||||
expect(response).to be_successful
|
||||
expect(permission.verb).to eq 'POST'
|
||||
expect(permission.action).to eq 'ALL'
|
||||
expect(permission.path).to eq 'api/v2'
|
||||
end
|
||||
end
|
||||
|
||||
context 'unsuccessful response' do
|
||||
it 'return error while permission doesnt exist' do
|
||||
put '/api/v2/admin/permissions', params: { id: 0, action: 'accept' }, headers: auth_header
|
||||
|
||||
result = JSON.parse(response.body)
|
||||
|
||||
expect(response.code).to eq '404'
|
||||
expect(result['errors']).to eq(['admin.permission.doesnt_exist'])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user