summaryrefslogtreecommitdiff
path: root/spec/factories/audit_events.rb
blob: 5497648273cb56f0604ca1754cfce2c98cb2b67f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# frozen_string_literal: true

FactoryBot.define do
  factory :audit_event, class: 'AuditEvent', aliases: [:user_audit_event] do
    user

    transient { target_user { create(:user) } }

    entity_type { 'User' }
    entity_id   { target_user.id }
    entity_path { target_user.full_path }
    target_details { target_user.name }
    ip_address { IPAddr.new '127.0.0.1' }
    author_name { 'Jane Doe' }
    details do
      {
        change: 'email address',
        from: 'admin@gitlab.com',
        to: 'maintainer@gitlab.com',
        author_name: user.name,
        target_id: target_user.id,
        target_type: 'User',
        target_details: target_user.name,
        ip_address: '127.0.0.1',
        entity_path: target_user.full_path
      }
    end

    trait :project_event do
      transient { target_project { create(:project) } }

      entity_type { 'Project' }
      entity_id   { target_project.id }
      entity_path { target_project.full_path }
      target_details { target_project.name }
      ip_address { IPAddr.new '127.0.0.1' }
      details do
        {
          change: 'packages_enabled',
          from: true,
          to: false,
          author_name: user.name,
          target_id: target_project.id,
          target_type: 'Project',
          target_details: target_project.name,
          ip_address: '127.0.0.1',
          entity_path: target_project.full_path
        }
      end
    end

    trait :group_event do
      transient { target_group { create(:group) } }

      entity_type { 'Group' }
      entity_id   { target_group.id }
      entity_path { target_group.full_path }
      target_details { target_group.name }
      ip_address { IPAddr.new '127.0.0.1' }
      details do
        {
          change: 'project_creation_level',
          from: nil,
          to: 'Developers + Maintainers',
          author_name: user.name,
          target_id: target_group.id,
          target_type: 'Group',
          target_details: target_group.name,
          ip_address: '127.0.0.1',
          entity_path: target_group.full_path
        }
      end
    end

    factory :project_audit_event, traits: [:project_event]
    factory :group_audit_event, traits: [:group_event]
  end
end