diff options
author | Stan Hu <stanhu@gmail.com> | 2018-10-18 12:50:21 -0700 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2018-10-18 15:59:12 -0700 |
commit | 143d0e26664e85be9382d1b1f8e99ead96e5d642 (patch) | |
tree | 304f621e9a8fc1fc12849212cd59a1d7b79f2456 /spec/services | |
parent | 5edf87d0ac699575421ec96cbc0fc91ea0c3c078 (diff) | |
download | gitlab-ce-143d0e26664e85be9382d1b1f8e99ead96e5d642.tar.gz |
Add support for JSON logging for audit events
This will add audit_json.log that writes one line per audit event. For
example:
{
"severity":"INFO",
"time":"2018-10-17T17:38:22.523Z",
"author_id":3,
"entity_id":2,
"entity_type":"Project",
"change":"visibility",
"from":"Private",
"to":"Public",
"author_name":"John Doe4",
"target_id":2,
"target_type":"Project",
"target_details":"namespace2/project2"
}
Diffstat (limited to 'spec/services')
-rw-r--r-- | spec/services/audit_event_service_spec.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/spec/services/audit_event_service_spec.rb b/spec/services/audit_event_service_spec.rb new file mode 100644 index 00000000000..32fd98e6ef9 --- /dev/null +++ b/spec/services/audit_event_service_spec.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe AuditEventService do + let(:project) { create(:project) } + let(:user) { create(:user) } + let(:project_member) { create(:project_member, user: user) } + let(:service) { described_class.new(user, project, { action: :destroy }) } + let(:logger) { instance_double(Gitlab::AuditJsonLogger) } + + describe '#security_event' do + before do + expect(service).to receive(:file_logger).and_return(logger) + end + + it 'creates an event and logs to a file' do + expect(logger).to receive(:info).with(author_id: user.id, + entity_id: project.id, + entity_type: "Project", + action: :destroy) + + expect { service.security_event }.to change(SecurityEvent, :count).by(1) + end + end +end |