class Chef::Audit::AuditEventProxy

Public Class Methods

events=(events) click to toggle source

TODO I don't like this, but I don't see another way to pass this in see rspec files configuration.rb#L671 and formatters.rb#L129

# File lib/chef/audit/audit_event_proxy.rb, line 28
def self.events=(events)
  @@events = events
end

Public Instance Methods

events() click to toggle source
# File lib/chef/audit/audit_event_proxy.rb, line 32
def events
  @@events
end
example_group_started(notification) click to toggle source
# File lib/chef/audit/audit_event_proxy.rb, line 36
def example_group_started(notification)
  if notification.group.parent_groups.size == 1
    # top level `control_group` block
    desc = notification.group.description
    Chef::Log.trace("Entered `control_group` block named #{desc}")
    events.control_group_started(desc)
  end
end
stop(notification) click to toggle source
# File lib/chef/audit/audit_event_proxy.rb, line 45
def stop(notification)
  Chef::Log.info("Successfully executed all `control_group` blocks and contained examples")
  notification.examples.each do |example|
    control_group_name, control_data = build_control_from(example)
    e = example.exception
    if e
      events.control_example_failure(control_group_name, control_data, e)
    else
      events.control_example_success(control_group_name, control_data)
    end
  end
end

Private Instance Methods

build_control_from(example) click to toggle source
# File lib/chef/audit/audit_event_proxy.rb, line 60
def build_control_from(example)
  described_class = example.metadata[:described_class]
  if described_class
    resource_type = described_class.class.name.split(":")[-1]
    resource_name = described_class.name
  end

  # The following code builds up the context - the list of wrapping `describe` or `control` blocks
  describe_groups = []
  group = example.metadata[:example_group]
  # If the innermost block has a resource instead of a string, don't include it in context
  describe_groups.unshift(group[:description]) if described_class.nil?
  group = group[:parent_example_group]
  until group.nil?
    describe_groups.unshift(group[:description])
    group = group[:parent_example_group]
  end

  # We know all of our examples each live in a top-level `control_group` block - get this name now
  outermost_group_desc = describe_groups.shift

  [outermost_group_desc, {
      :name => example.description,
      :desc => example.full_description,
      :resource_type => resource_type,
      :resource_name => resource_name,
      :context => describe_groups,
      :line_number => example.metadata[:line_number],
  }]
end