feat: Audit log APIs (#6434)
- Adds the appropriate APIs for Audit Logs. ref: #6015
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe 'Enterprise Audit API', type: :request do
|
||||
let!(:account) { create(:account) }
|
||||
let!(:inbox) { create(:inbox, account: account) }
|
||||
let!(:admin) { create(:user, account: account, role: :administrator) }
|
||||
|
||||
describe 'GET /api/v1/accounts/{account.id}/audit_logs' do
|
||||
context 'when it is an un-authenticated user' do
|
||||
it 'does not fetch audit logs associated with the account' do
|
||||
get "/api/v1/accounts/#{account.id}/audit_logs",
|
||||
as: :json
|
||||
expect(response).to have_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when it is an authenticated normal user' do
|
||||
let(:user) { create(:user, account: account) }
|
||||
|
||||
it 'fetches audit logs associated with the account' do
|
||||
get "/api/v1/accounts/#{account.id}/audit_logs",
|
||||
headers: user.create_new_auth_token,
|
||||
as: :json
|
||||
expect(response).to have_http_status(:unauthorized)
|
||||
end
|
||||
end
|
||||
|
||||
# check for response in parse
|
||||
context 'when it is an authenticated admin user' do
|
||||
it 'fetches audit logs associated with the account' do
|
||||
get "/api/v1/accounts/#{account.id}/audit_logs",
|
||||
headers: admin.create_new_auth_token,
|
||||
as: :json
|
||||
|
||||
expect(response).to have_http_status(:success)
|
||||
json_response = JSON.parse(response.body)
|
||||
expect(json_response[0]['auditable_type']).to eql('Inbox')
|
||||
expect(json_response[0]['action']).to eql('create')
|
||||
expect(json_response[0]['audited_changes']['name']).to eql(inbox.name)
|
||||
expect(json_response[0]['associated_id']).to eql(account.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -10,6 +10,13 @@ RSpec.describe Account do
|
||||
|
||||
let!(:account) { create(:account) }
|
||||
|
||||
describe 'audit logs' do
|
||||
it 'returns audit logs' do
|
||||
# checking whether associated_audits method is present
|
||||
expect(account.associated_audits.present?).to be false
|
||||
end
|
||||
end
|
||||
|
||||
it 'returns max limits from global config when enterprise version' do
|
||||
expect(account.usage_limits).to eq(
|
||||
{
|
||||
|
||||
29
spec/enterprise/models/automation_rule_spec.rb
Normal file
29
spec/enterprise/models/automation_rule_spec.rb
Normal file
@@ -0,0 +1,29 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe AutomationRule do
|
||||
let!(:automation_rule) { create(:automation_rule, name: 'automation rule 1') }
|
||||
|
||||
describe 'audit log' do
|
||||
context 'when automation rule is created' do
|
||||
it 'has associated audit log created' do
|
||||
expect(Audited::Audit.where(auditable_type: 'AutomationRule', action: 'create').count).to eq 1
|
||||
end
|
||||
end
|
||||
|
||||
context 'when automation rule is updated' do
|
||||
it 'has associated audit log created' do
|
||||
automation_rule.update(name: 'automation rule 2')
|
||||
expect(Audited::Audit.where(auditable_type: 'AutomationRule', action: 'update').count).to eq 1
|
||||
end
|
||||
end
|
||||
|
||||
context 'when automation rule is deleted' do
|
||||
it 'has associated audit log created' do
|
||||
automation_rule.destroy!
|
||||
expect(Audited::Audit.where(auditable_type: 'AutomationRule', action: 'destroy').count).to eq 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -3,8 +3,9 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Inbox do
|
||||
let!(:inbox) { create(:inbox) }
|
||||
|
||||
describe 'member_ids_with_assignment_capacity' do
|
||||
let!(:inbox) { create(:inbox) }
|
||||
let!(:inbox_member_1) { create(:inbox_member, inbox: inbox) }
|
||||
let!(:inbox_member_2) { create(:inbox_member, inbox: inbox) }
|
||||
let!(:inbox_member_3) { create(:inbox_member, inbox: inbox) }
|
||||
@@ -35,4 +36,26 @@ RSpec.describe Inbox do
|
||||
expect(inbox.member_ids_with_assignment_capacity).to eq(inbox.members.ids)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'audit log' do
|
||||
context 'when inbox is created' do
|
||||
it 'has associated audit log created' do
|
||||
expect(Audited::Audit.where(auditable_type: 'Inbox', action: 'create').count).to eq 1
|
||||
end
|
||||
end
|
||||
|
||||
context 'when inbox is updated' do
|
||||
it 'has associated audit log created' do
|
||||
inbox.update(auto_assignment_config: { max_assignment_limit: 2 })
|
||||
expect(Audited::Audit.where(auditable_type: 'Inbox', action: 'update').count).to eq 1
|
||||
end
|
||||
end
|
||||
|
||||
context 'when inbox is deleted' do
|
||||
it 'has associated audit log created' do
|
||||
inbox.destroy!
|
||||
expect(Audited::Audit.where(auditable_type: 'Inbox', action: 'destroy').count).to eq 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
30
spec/enterprise/models/webhook_spec.rb
Normal file
30
spec/enterprise/models/webhook_spec.rb
Normal file
@@ -0,0 +1,30 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Webhook do
|
||||
let(:account) { create(:account) }
|
||||
let!(:webhook) { create(:webhook, account: account) }
|
||||
|
||||
describe 'audit log' do
|
||||
context 'when webhook is created' do
|
||||
it 'has associated audit log created' do
|
||||
expect(Audited::Audit.where(auditable_type: 'Webhook', action: 'create').count).to eq 1
|
||||
end
|
||||
end
|
||||
|
||||
context 'when webhook is updated' do
|
||||
it 'has associated audit log created' do
|
||||
webhook.update(url: 'https://example.com')
|
||||
expect(Audited::Audit.where(auditable_type: 'Webhook', action: 'update').count).to eq 1
|
||||
end
|
||||
end
|
||||
|
||||
context 'when webhook is deleted' do
|
||||
it 'has associated audit log created' do
|
||||
webhook.destroy!
|
||||
expect(Audited::Audit.where(auditable_type: 'Webhook', action: 'destroy').count).to eq 1
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user