Sha256: c6f1b0be929ddd710d1676da6fa324bcf67e31902b7ed59a792277d770bef7fe

Contents?: true

Size: 1.7 KB

Versions: 2

Compression:

Stored size: 1.7 KB

Contents

require 'helper'
require 'net/http'

class MackerelWebhookInputTest < Test::Unit::TestCase
  def setup
    Fluent::Test.setup
  end

  PORT = unused_port
  CONFIG = %[
    port #{PORT}
    tag mwebhook
  ]

  def create_driver(conf=CONFIG, tag='test')
    Fluent::Test::OutputTestDriver.new(Fluent::WebhookMackerelInput, tag).configure(conf)
  end

  def test_configure
    assert_raise(Fluent::ConfigError) {
      d = create_driver('')
    }
    d = create_driver
    assert_equal 'mwebhook', d.instance.tag
    assert_equal PORT, d.instance.port
    assert_equal '/', d.instance.mount
    assert_equal '0.0.0.0', d.instance.bind
  end

  def test_basic
    d = create_driver

    time = Time.parse("2011-01-02 13:14:15 UTC").to_i
    Fluent::Engine.now = time

    d.expect_emit "mwebhook.alert", time, {
      :event  => 'alert',
      'host'   => {
        'id'  => 'abcabc'
      },
      'alert'  => {
        'url' => 'http://',
      },
    }

    payload = {
      'event'  => 'alert',
      'host'   => {
        'id'  => 'abcabc'
      },
      'alert'  => {
        'url' => 'http://',
      },
    }

    d.run do
      d.expected_emits.each {|tag, time, record|
        res = post("/", payload.to_json)
        assert_equal "204", res.code
      }
    end
  end

  def test_405
    create_driver.run do
      http = Net::HTTP.new("127.0.0.1", PORT)
      req = Net::HTTP::Get.new('/')
      res = http.request(req)

      assert_equal "405", res.code
    end
  end

  def post(path, params, header = {})
    http = Net::HTTP.new("127.0.0.1", PORT)
    req = Net::HTTP::Post.new(path, header)
    if params.is_a?(String)
      req.body = params
    else
      req.set_form_data(params)
    end
    http.request(req)
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fluent-plugin-webhook-mackerel-0.1.0 test/plugin/test_in_webhook_mackerel.rb
fluent-plugin-webhook-mackerel-0.0.1 test/plugin/test_in_webhook_mackerel.rb