Initial commit

This commit is contained in:
Yaser
2026-08-13 19:56:46 +03:30
commit de1d57a67b
474 changed files with 43185 additions and 0 deletions

View 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