Sha256: f85fb7c2b9c3b2864362fcb42c2ae8cbc9e94aeb88a817cfbaf16edbd663e494

Contents?: true

Size: 1.96 KB

Versions: 15

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

  it_should_behave_like "it takes an environment name and an app name and an account name"
  it_should_behave_like "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"}}})
      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

15 entries across 15 versions & 1 rubygems

Version Path
engineyard-1.4.0 spec/ey/rollback_spec.rb
engineyard-1.3.33 spec/ey/rollback_spec.rb
engineyard-1.3.32 spec/ey/rollback_spec.rb
engineyard-1.3.31 spec/ey/rollback_spec.rb
engineyard-1.3.30 spec/ey/rollback_spec.rb
engineyard-1.3.29 spec/ey/rollback_spec.rb
engineyard-1.3.28 spec/ey/rollback_spec.rb
engineyard-1.3.25 spec/ey/rollback_spec.rb
engineyard-1.3.22 spec/ey/rollback_spec.rb
engineyard-1.3.21 spec/ey/rollback_spec.rb
engineyard-1.3.20 spec/ey/rollback_spec.rb
engineyard-1.3.19 spec/ey/rollback_spec.rb
engineyard-1.3.18 spec/ey/rollback_spec.rb
engineyard-1.3.17 spec/ey/rollback_spec.rb
engineyard-1.3.16 spec/ey/rollback_spec.rb