Sha256: f06abe5b6bc2d1e81fd7aa9c0ee3ac7d7951b795673cc6b1e860e952488c9fbf

Contents?: true

Size: 1.81 KB

Versions: 6

Compression:

Stored size: 1.81 KB

Contents

require 'test_helper'

class Api::DeploysControllerTest < ActionController::TestCase
  setup do
    authenticate!
    @user = users(:walrus)
    @stack = stacks(:shipit)
    @commit = commits(:fifth)
  end

  test "#create triggers a new deploy for the stack" do
    assert_difference -> { @stack.deploys.count }, +1 do
      post :create, stack_id: @stack.to_param, sha: @commit.sha
    end
    assert_response :accepted
    assert_json 'status', 'pending'
  end

  test "#create use the claimed user as author" do
    request.headers['X-Shipit-User'] = @user.login
    post :create, stack_id: @stack.to_param, sha: @commit.sha
    deploy = Deploy.last
    deploy.user == @user
  end

  test "#create renders a 422 if the sha isn't found" do
    post :create, stack_id: @stack.to_param, sha: '123443543545'
    assert_response :unprocessable_entity
    assert_json 'errors', 'sha' => ['Unknown revision']
  end

  test "#create renders a 422 if the sha format is invalid" do
    post :create, stack_id: @stack.to_param, sha: '1'
    assert_response :unprocessable_entity
    assert_json 'errors', 'sha' => ['is too short (minimum is 6 characters)']
  end

  test "#create refuses to deploy locked stacks" do
    @stack.update!(lock_reason: 'Something broken')

    assert_no_difference -> { @stack.deploys.count } do
      post :create, stack_id: @stack.to_param, sha: @commit.sha
    end
    assert_response :unprocessable_entity
    assert_json 'errors.force', ["Can't deploy a locked stack"]
  end

  test "#create accepts to deploy locked stacks if force mode is enabled" do
    @stack.update!(lock_reason: 'Something broken')

    assert_difference -> { @stack.deploys.count }, +1 do
      post :create, stack_id: @stack.to_param, sha: @commit.sha, force: true
    end
    assert_response :accepted
    assert_json 'status', 'pending'
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
shipit-engine-0.2.3 test/controllers/api/deploys_controller_test.rb
shipit-engine-0.2.2 test/controllers/api/deploys_controller_test.rb
shipit-engine-0.2.1 test/controllers/api/deploys_controller_test.rb
shipit-engine-0.2.0 test/controllers/api/deploys_controller_test.rb
shipit-engine-0.1.0 test/controllers/api/deploys_controller_test.rb
shipit-engine-0.0.1.pre test/controllers/api/deploys_controller_test.rb