Sha256: 15d5fcdc1d00959eb5a1db4402fd3f854c3e94bb193b41e17bfdabb895c8aad3

Contents?: true

Size: 1.96 KB

Versions: 19

Compression:

Stored size: 1.96 KB

Contents

require 'spec_helper'

describe "ey rollback" do
  given "integration"

  def command_to_run(opts)
    cmd = ["rollback"]
    cmd << "-e" << opts[:environment] if opts[:environment]
    cmd << "-a" << opts[:app]         if opts[:app]
    cmd << "-c" << opts[:account]     if opts[:account]
    cmd << "--verbose"                if opts[:verbose]
    cmd
  end

  def verify_ran(scenario)
    @out.should match(/Rolling back.*#{scenario[:application]}.*#{scenario[:environment]}/)
    @err.should be_empty
    @ssh_commands.last.should match(/engineyard-serverside.*deploy rollback.*--app #{scenario[:application]}/)
  end

  include_examples "it takes an environment name and an app name and an account name"
  include_examples "it invokes engineyard-serverside"

  it "passes along the web server stack to engineyard-serverside" do
    api_scenario "one app, one environment"
    ey %w[rollback]
    @ssh_commands.last.should =~ /--stack nginx_mongrel/
  end

  context "--extra-deploy-hook-options" do
    before(:all) do
      api_scenario "one app, one environment"
    end

    def extra_deploy_hook_options
      if @ssh_commands.last =~ /--config (.*?)(?: -|$)/
        # the echo strips off the layer of shell escaping, leaving us
        # with pristine JSON
        JSON.parse `echo #{$1}`
      end
    end

    it "passes the extra configuration to engineyard-serverside" do
      ey %w[rollback --extra-deploy-hook-options some:stuff more:crap]
      extra_deploy_hook_options.should_not be_nil
      extra_deploy_hook_options['some'].should == 'stuff'
      extra_deploy_hook_options['more'].should == 'crap'
    end

    context "when ey.yml is present" do
      before do
        write_yaml({"environments" => {"giblets" => {"beer" => "stout"}}}, 'ey.yml')
      end

      after { File.unlink("ey.yml") }

      it "overrides what's in ey.yml" do
        ey %w[rollback --extra-deploy-hook-options beer:esb]
        extra_deploy_hook_options['beer'].should == 'esb'
      end
    end
  end

end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
engineyard-1.4.29 spec/ey/rollback_spec.rb
engineyard-1.4.28 spec/ey/rollback_spec.rb
engineyard-1.4.27 spec/ey/rollback_spec.rb
engineyard-1.4.24 spec/ey/rollback_spec.rb
engineyard-1.4.23 spec/ey/rollback_spec.rb
engineyard-1.4.22 spec/ey/rollback_spec.rb
engineyard-1.4.21 spec/ey/rollback_spec.rb
engineyard-1.4.20 spec/ey/rollback_spec.rb
engineyard-1.4.19 spec/ey/rollback_spec.rb
engineyard-1.4.18 spec/ey/rollback_spec.rb
engineyard-1.4.17 spec/ey/rollback_spec.rb
engineyard-1.4.16 spec/ey/rollback_spec.rb
engineyard-1.4.15 spec/ey/rollback_spec.rb
engineyard-1.4.14 spec/ey/rollback_spec.rb
engineyard-1.4.13 spec/ey/rollback_spec.rb
engineyard-1.4.11 spec/ey/rollback_spec.rb
engineyard-1.4.10 spec/ey/rollback_spec.rb
engineyard-1.4.9 spec/ey/rollback_spec.rb
engineyard-1.4.8 spec/ey/rollback_spec.rb