Sha256: 6461c8a9879d5b5431e6a4e0bd7bbab1ad1488c0403b4b1a00950a57d1619847

Contents?: true

Size: 1.64 KB

Versions: 1

Compression:

Stored size: 1.64 KB

Contents

class Sysdig::Mock
  def self.reset!
    super

    @id = 0
  end

  def self.data
    @@data ||= Hash.new { |h,url|
      h[url] = {
        :alerts => {},
        :user_notifications => {
          "email" => {
            "enabled"    => false,
            "recipients" => []
          },
          "sns" => {
            "enabled" => false,
            "topics"  => []
          },
          "pagerDuty" => {
            "enabled"     => false,
            "integrated"  => false,
            "resolveOnOk" => false,
            "connectUrl"  => "https://connect.pagerduty.com/connect?vendor=x&callback=https://app.sysdigcloud.com/api/pagerDuty/callback/y/z"
          }
        }
      }
    }
  end

  attr_reader :url, :logger

  def initialize(options={})
    @url     = options[:url]    || "https://langley.engineyard.com"
    @logger  = options[:logger] || Logger.new(nil)
  end

  def url_for(*pieces)
    File.join(self.url, *pieces)
  end

  def response(options={})
    status  = options[:status] || 200
    body    = options[:body]
    headers = {
      "Content-Type"  => "application/json; charset=utf-8"
    }.merge(options[:headers] || {})

    logger.debug "MOCKED RESPONSE: #{status}"
    logger.debug('response') { headers.map { |k, v| "#{k}: #{v.inspect}" }.join("\n") }
    logger.debug caller[0]
    logger.debug('response.body') { body }

    Sysdig::Response.new(
      :status  => status,
      :headers => headers,
      :body    => body,
      :request => {
        :method  => :mocked,
        :url     => caller[1],
      }
    ).raise!
  end

  def data
    self.class.data[self.url]
  end

  def serial_id
    @id ||= 0
    @id += 1
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sysdig-0.2.0 lib/sysdig/mock.rb