Sha256: 640c2a6257675a27077dbe678238631bbb9c6904a6657a691ed830d70661313f

Contents?: true

Size: 1.66 KB

Versions: 5

Compression:

Stored size: 1.66 KB

Contents

require 'test_helper'

module Shipit
  class HookTest < ActiveSupport::TestCase
    setup do
      @stack = shipit_stacks(:shipit)
      @hook = shipit_hooks(:shipit_deploys)
    end

    test "#url must be valid" do
      @hook.url = 'file:/ad"fa/adfa'
      refute @hook.valid?
      assert_equal ['Url is not a valid URL'], @hook.errors.full_messages
    end

    test "#url must not be localhost" do
      @hook.url = 'file:///etc/passwd'
      refute @hook.valid?
      assert_equal ['Url is not a valid URL'], @hook.errors.full_messages
    end

    test "#events is accessible as an array" do
      assert_equal %w(deploy rollback), @hook.events
    end

    test "#events can only contain a defined set of values" do
      @hook.events = %w(foo)
      refute @hook.valid?
      assert_equal ["Events is not a strict subset of #{Hook::EVENTS.inspect}"], @hook.errors.full_messages
    end

    test ".emit enqueues an EmitEventJob with the proper payload" do
      assert_enqueued_with(job: EmitEventJob) do
        Hook.emit(:deploy, @stack, foo: 42)
      end
    end

    test ".deliver schedules a delivery for each matching hook" do
      assert_difference -> { Delivery.count }, 2 do
        Hook.deliver(:deploy, @stack, 'foo' => 42)
      end

      delivery = Delivery.last

      assert_equal @hook.url, delivery.url
      assert_equal 'application/x-www-form-urlencoded', delivery.content_type
      assert_equal 'foo=42', delivery.payload
      assert_equal 'scheduled', delivery.status
    end

    test ".scoped? returns true if the hook has a stack_id" do
      @hook.stack_id = nil
      refute @hook.scoped?

      @hook.stack_id = 42
      assert @hook.scoped?
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
shipit-engine-0.6.4 test/models/hook_test.rb
shipit-engine-0.6.3 test/models/hook_test.rb
shipit-engine-0.6.2 test/models/hook_test.rb
shipit-engine-0.6.1 test/models/hook_test.rb
shipit-engine-0.6.0 test/models/hook_test.rb