lono 4.2.1 → 4.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +3 -0
 - data/lib/lono/version.rb +1 -1
 - data/lono.gemspec +5 -3
 - metadata +3 -79
 - data/spec/fixtures/cfn.json +0 -369
 - data/spec/fixtures/cfn/stack-events-complete.json +0 -1080
 - data/spec/fixtures/cfn/stack-events-in-progress.json +0 -1080
 - data/spec/fixtures/cfn/stack-events-update-rollback-complete.json +0 -1086
 - data/spec/fixtures/lono_project/.gitignore +0 -1
 - data/spec/fixtures/lono_project/Gemfile +0 -3
 - data/spec/fixtures/lono_project/Guardfile +0 -12
 - data/spec/fixtures/lono_project/app/definitions/base.rb +0 -10
 - data/spec/fixtures/lono_project/app/definitions/base/more.rb +0 -7
 - data/spec/fixtures/lono_project/app/definitions/development.rb +0 -1
 - data/spec/fixtures/lono_project/app/definitions/production.rb +0 -1
 - data/spec/fixtures/lono_project/app/helpers/custom_helper.rb +0 -5
 - data/spec/fixtures/lono_project/app/partials/security_group.yml +0 -10
 - data/spec/fixtures/lono_project/app/partials/user_data/bootstrap.sh +0 -11
 - data/spec/fixtures/lono_project/app/templates/example.yml +0 -50
 - data/spec/fixtures/lono_project/config/params/base/example.txt +0 -3
 - data/spec/fixtures/lono_project/config/params/development/example.txt +0 -1
 - data/spec/fixtures/lono_project/config/params/production/example.txt +0 -1
 - data/spec/fixtures/lono_project/config/settings.yml +0 -31
 - data/spec/fixtures/lono_project/config/variables/base.rb +0 -3
 - data/spec/fixtures/lono_project/config/variables/development.rb +0 -1
 - data/spec/fixtures/lono_project/config/variables/production.rb +0 -1
 - data/spec/fixtures/params/baseonly/params/base/network.txt +0 -1
 - data/spec/fixtures/params/envonly/params/development/network.txt +0 -1
 - data/spec/fixtures/params/overlay/params/base/network.txt +0 -1
 - data/spec/fixtures/params/overlay/params/development/network.txt +0 -1
 - data/spec/fixtures/raw_templates/aws-waf-security-automations.template +0 -1575
 - data/spec/lib/lono/cfn/status_spec.rb +0 -77
 - data/spec/lib/lono/cfn_spec.rb +0 -38
 - data/spec/lib/lono/cli_spec.rb +0 -44
 - data/spec/lib/lono/completion_spec.rb +0 -17
 - data/spec/lib/lono/inspect_spec.rb +0 -11
 - data/spec/lib/lono/param/generator_spec.rb +0 -56
 - data/spec/lib/lono/param_spec.rb +0 -13
 - data/spec/lib/lono/setting_spec.rb +0 -47
 - data/spec/lib/lono/template/dsl_spec.rb +0 -59
 - data/spec/lib/lono/template_spec.rb +0 -21
 - data/spec/spec_helper.rb +0 -62
 
| 
         @@ -1,77 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            describe Lono::Cfn::Status do
         
     | 
| 
       2 
     | 
    
         
            -
              let(:status) do
         
     | 
| 
       3 
     | 
    
         
            -
                status = Lono::Cfn::Status.new("test-stack")
         
     | 
| 
       4 
     | 
    
         
            -
                allow(status).to receive(:cfn).and_return(cfn)
         
     | 
| 
       5 
     | 
    
         
            -
                status
         
     | 
| 
       6 
     | 
    
         
            -
              end
         
     | 
| 
       7 
     | 
    
         
            -
              let(:cfn) do
         
     | 
| 
       8 
     | 
    
         
            -
                service = double("service").as_null_object
         
     | 
| 
       9 
     | 
    
         
            -
                allow(service).to receive(:describe_stacks).and_return(stack_status)
         
     | 
| 
       10 
     | 
    
         
            -
                allow(service).to receive(:describe_stack_events).and_return(stack_events)
         
     | 
| 
       11 
     | 
    
         
            -
                service
         
     | 
| 
       12 
     | 
    
         
            -
              end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
              context "in progress" do
         
     | 
| 
       15 
     | 
    
         
            -
                let(:stack_status) { "UPDATE_IN_PROGRESS" }
         
     | 
| 
       16 
     | 
    
         
            -
                let(:stack_events) { JSON.load(IO.read("spec/fixtures/cfn/stack-events-in-progress.json")) }
         
     | 
| 
       17 
     | 
    
         
            -
                it "lists events since user initiated event" do
         
     | 
| 
       18 
     | 
    
         
            -
                  status.refresh_events
         
     | 
| 
       19 
     | 
    
         
            -
                  i = status.find_index(:start)
         
     | 
| 
       20 
     | 
    
         
            -
                  expect(i).to eq 15
         
     | 
| 
       21 
     | 
    
         
            -
                  # uncomment to view and debug
         
     | 
| 
       22 
     | 
    
         
            -
                  # status.show_events
         
     | 
| 
       23 
     | 
    
         
            -
                  # puts "****"
         
     | 
| 
       24 
     | 
    
         
            -
                  # status.show_events # show not show anything
         
     | 
| 
       25 
     | 
    
         
            -
                end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                it "lists events since last shown event" do
         
     | 
| 
       28 
     | 
    
         
            -
                  # first display
         
     | 
| 
       29 
     | 
    
         
            -
                  status.refresh_events
         
     | 
| 
       30 
     | 
    
         
            -
                  i = status.find_index(:start)
         
     | 
| 
       31 
     | 
    
         
            -
                  expect(i).to eq 15
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                  # move the last event back in time 4 events, so should print 3 events
         
     | 
| 
       34 
     | 
    
         
            -
                  status.instance_variable_set(:@last_shown_event_id, "TargetGroup-ec634c43-b887-4bde-a525-7c69782865a6")
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                  captured_events = []
         
     | 
| 
       37 
     | 
    
         
            -
                  allow(status).to receive(:print_event) do |e|
         
     | 
| 
       38 
     | 
    
         
            -
                    captured_events << "#{e["resource_type"]} #{e["resource_status"]}"
         
     | 
| 
       39 
     | 
    
         
            -
                  end
         
     | 
| 
       40 
     | 
    
         
            -
                  status.show_events
         
     | 
| 
       41 
     | 
    
         
            -
                  expect(captured_events).to eq([
         
     | 
| 
       42 
     | 
    
         
            -
                    "AWS::ElasticLoadBalancingV2::LoadBalancer DELETE_IN_PROGRESS",
         
     | 
| 
       43 
     | 
    
         
            -
                    "AWS::ElasticLoadBalancingV2::LoadBalancer DELETE_COMPLETE",
         
     | 
| 
       44 
     | 
    
         
            -
                    "AWS::EC2::SecurityGroup DELETE_IN_PROGRESS",
         
     | 
| 
       45 
     | 
    
         
            -
                  ])
         
     | 
| 
       46 
     | 
    
         
            -
                end
         
     | 
| 
       47 
     | 
    
         
            -
              end
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
              context "complete" do
         
     | 
| 
       50 
     | 
    
         
            -
                let(:stack_status) { "UPDATE_COMPLETE" }
         
     | 
| 
       51 
     | 
    
         
            -
                let(:stack_events) { JSON.load(IO.read("spec/fixtures/cfn/stack-events-complete.json")) }
         
     | 
| 
       52 
     | 
    
         
            -
                it "lists events all the way to completion" do
         
     | 
| 
       53 
     | 
    
         
            -
                  status.refresh_events
         
     | 
| 
       54 
     | 
    
         
            -
                  i = status.find_index(:start)
         
     | 
| 
       55 
     | 
    
         
            -
                  expect(i).to eq 17
         
     | 
| 
       56 
     | 
    
         
            -
                  # uncomment to view and debug
         
     | 
| 
       57 
     | 
    
         
            -
                  # status.show_events
         
     | 
| 
       58 
     | 
    
         
            -
                end
         
     | 
| 
       59 
     | 
    
         
            -
              end
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
              context "update_rollback" do
         
     | 
| 
       62 
     | 
    
         
            -
                let(:stack_status) { "UPDATE_ROLLBACK_COMPLETE" }
         
     | 
| 
       63 
     | 
    
         
            -
                let(:stack_events) { JSON.load(IO.read("spec/fixtures/cfn/stack-events-update-rollback-complete.json")) }
         
     | 
| 
       64 
     | 
    
         
            -
                it "lists events all the way to update rollback complete" do
         
     | 
| 
       65 
     | 
    
         
            -
                  status.refresh_events
         
     | 
| 
       66 
     | 
    
         
            -
                  expect(status.success?).to be false
         
     | 
| 
       67 
     | 
    
         
            -
                  expect(status.update_rollback?).to be true
         
     | 
| 
       68 
     | 
    
         
            -
                  expect(status.rollback_error_message).to include("STATIC_NAME")
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
                  # i = status.find_index(:start)
         
     | 
| 
       71 
     | 
    
         
            -
                  # expect(i).to eq 17
         
     | 
| 
       72 
     | 
    
         
            -
                  # uncomment to view and debug
         
     | 
| 
       73 
     | 
    
         
            -
                  # status.show_events
         
     | 
| 
       74 
     | 
    
         
            -
                end
         
     | 
| 
       75 
     | 
    
         
            -
              end
         
     | 
| 
       76 
     | 
    
         
            -
            end
         
     | 
| 
       77 
     | 
    
         
            -
             
     | 
    
        data/spec/lib/lono/cfn_spec.rb
    DELETED
    
    | 
         @@ -1,38 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            describe Lono::Cfn do
         
     | 
| 
       2 
     | 
    
         
            -
              before(:all) do
         
     | 
| 
       3 
     | 
    
         
            -
                @args = "--noop"
         
     | 
| 
       4 
     | 
    
         
            -
              end
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              describe "lono cfn" do
         
     | 
| 
       7 
     | 
    
         
            -
                it "create stack" do
         
     | 
| 
       8 
     | 
    
         
            -
                  out = execute("#{@env} exe/lono cfn create example #{@args}")
         
     | 
| 
       9 
     | 
    
         
            -
                  expect(out).to include("Creating")
         
     | 
| 
       10 
     | 
    
         
            -
                end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                it "update stack" do
         
     | 
| 
       13 
     | 
    
         
            -
                  out = execute("#{@env} exe/lono cfn update example #{@args}")
         
     | 
| 
       14 
     | 
    
         
            -
                  expect(out).to include("Updating")
         
     | 
| 
       15 
     | 
    
         
            -
                end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                it "delete stack" do
         
     | 
| 
       18 
     | 
    
         
            -
                  out = execute("#{@env} exe/lono cfn delete example #{@args}")
         
     | 
| 
       19 
     | 
    
         
            -
                  expect(out).to include("Deleted")
         
     | 
| 
       20 
     | 
    
         
            -
                end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                it "preview stack" do
         
     | 
| 
       23 
     | 
    
         
            -
                  out = execute("#{@env} exe/lono cfn preview example #{@args}")
         
     | 
| 
       24 
     | 
    
         
            -
                  expect(out).to include("CloudFormation preview")
         
     | 
| 
       25 
     | 
    
         
            -
                end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                it "diff stack" do
         
     | 
| 
       28 
     | 
    
         
            -
                  out = execute("#{@env} exe/lono cfn diff example #{@args}")
         
     | 
| 
       29 
     | 
    
         
            -
                  expect(out).to include("diff")
         
     | 
| 
       30 
     | 
    
         
            -
                end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                it "download stack" do
         
     | 
| 
       33 
     | 
    
         
            -
                  out = execute("#{@env} exe/lono cfn download example #{@args}")
         
     | 
| 
       34 
     | 
    
         
            -
                  expect(out).to include("Download")
         
     | 
| 
       35 
     | 
    
         
            -
                end
         
     | 
| 
       36 
     | 
    
         
            -
              end
         
     | 
| 
       37 
     | 
    
         
            -
            end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
    
        data/spec/lib/lono/cli_spec.rb
    DELETED
    
    | 
         @@ -1,44 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            describe Lono::CLI do
         
     | 
| 
       2 
     | 
    
         
            -
              context "general" do
         
     | 
| 
       3 
     | 
    
         
            -
                it "new generate new project" do
         
     | 
| 
       4 
     | 
    
         
            -
                  # using another name for the lono project because we call
         
     | 
| 
       5 
     | 
    
         
            -
                  # exe/lono new lono_project for all specs via the RSpec.config already
         
     | 
| 
       6 
     | 
    
         
            -
                  # NOTE: LONO_ROOT modified in the spec_helper.rb
         
     | 
| 
       7 
     | 
    
         
            -
                  execute("exe/lono new test_project --no-bundle")
         
     | 
| 
       8 
     | 
    
         
            -
                  exist = File.exist?("tmp/test_project/config/settings.yml")
         
     | 
| 
       9 
     | 
    
         
            -
                  expect(exist).to be true
         
     | 
| 
       10 
     | 
    
         
            -
                  FileUtils.rm_rf("tmp/test_project")
         
     | 
| 
       11 
     | 
    
         
            -
                end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
                it "import should download template" do
         
     | 
| 
       14 
     | 
    
         
            -
                  out = execute("exe/lono import spec/fixtures/raw_templates/aws-waf-security-automations.template --name waf")
         
     | 
| 
       15 
     | 
    
         
            -
                  expect(out).to match(/=> Imported CloudFormation template/)
         
     | 
| 
       16 
     | 
    
         
            -
                end
         
     | 
| 
       17 
     | 
    
         
            -
              end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
              # Ensure the example starter project is always able to produce output/templates.
         
     | 
| 
       20 
     | 
    
         
            -
              context "project generated from lono new command" do
         
     | 
| 
       21 
     | 
    
         
            -
                before(:all) do
         
     | 
| 
       22 
     | 
    
         
            -
                  # hack to so we don't have to change LONO_ROOT
         
     | 
| 
       23 
     | 
    
         
            -
                  @project = ENV['LONO_ROOT']
         
     | 
| 
       24 
     | 
    
         
            -
                  FileUtils.mv(@project, "#{@project}.temp") if File.exist?(@project)
         
     | 
| 
       25 
     | 
    
         
            -
                end
         
     | 
| 
       26 
     | 
    
         
            -
                after(:all) do
         
     | 
| 
       27 
     | 
    
         
            -
                  FileUtils.rm_rf(@project)
         
     | 
| 
       28 
     | 
    
         
            -
                  # move temp back for the rest of the tests
         
     | 
| 
       29 
     | 
    
         
            -
                  FileUtils.mv("#{@project}.temp", @project) if File.exist?("#{@project}.temp")
         
     | 
| 
       30 
     | 
    
         
            -
                end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                it "generate should build templates" do
         
     | 
| 
       33 
     | 
    
         
            -
                  # NOTE: LONO_ROOT modified in the spec_helper.rb
         
     | 
| 
       34 
     | 
    
         
            -
                  execute("exe/lono new lono_project --no-bundle")
         
     | 
| 
       35 
     | 
    
         
            -
                  execute("exe/lono generate")
         
     | 
| 
       36 
     | 
    
         
            -
                  success = $?.exitstatus == 0
         
     | 
| 
       37 
     | 
    
         
            -
                  expect(success).to be true
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                  exist = File.exist?("#{Lono.root}/config/settings.yml")
         
     | 
| 
       40 
     | 
    
         
            -
                  expect(exist).to be true
         
     | 
| 
       41 
     | 
    
         
            -
                end
         
     | 
| 
       42 
     | 
    
         
            -
              end
         
     | 
| 
       43 
     | 
    
         
            -
            end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
         @@ -1,17 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            describe Lono::CLI do
         
     | 
| 
       2 
     | 
    
         
            -
              describe "lono completion" do
         
     | 
| 
       3 
     | 
    
         
            -
                commands = {
         
     | 
| 
       4 
     | 
    
         
            -
                  # "new" => "name", # options is the completion because it's a Thor::Group
         
     | 
| 
       5 
     | 
    
         
            -
                  "generate" => "--clean",
         
     | 
| 
       6 
     | 
    
         
            -
                  "cfn" =>  "create",
         
     | 
| 
       7 
     | 
    
         
            -
                  "cfn create" =>  "name",
         
     | 
| 
       8 
     | 
    
         
            -
                  "param" => "generate",
         
     | 
| 
       9 
     | 
    
         
            -
                }
         
     | 
| 
       10 
     | 
    
         
            -
                commands.each do |command, expected_word|
         
     | 
| 
       11 
     | 
    
         
            -
                  it "#{command}" do
         
     | 
| 
       12 
     | 
    
         
            -
                    out = execute("exe/lono completion #{command}")
         
     | 
| 
       13 
     | 
    
         
            -
                    expect(out).to include(expected_word) # only checking for one word for simplicity
         
     | 
| 
       14 
     | 
    
         
            -
                  end
         
     | 
| 
       15 
     | 
    
         
            -
                end
         
     | 
| 
       16 
     | 
    
         
            -
              end
         
     | 
| 
       17 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,11 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            describe Lono::Inspector do
         
     | 
| 
       2 
     | 
    
         
            -
              it "lono xgraph" do
         
     | 
| 
       3 
     | 
    
         
            -
                out = execute("exe/lono xgraph example --noop")
         
     | 
| 
       4 
     | 
    
         
            -
                expect(out).to include("Generating dependencies tree")
         
     | 
| 
       5 
     | 
    
         
            -
              end
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
              it "lono summary" do
         
     | 
| 
       8 
     | 
    
         
            -
                out = execute("exe/lono summary example")
         
     | 
| 
       9 
     | 
    
         
            -
                expect(out).to include("Summary")
         
     | 
| 
       10 
     | 
    
         
            -
              end
         
     | 
| 
       11 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,56 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            describe Lono::Param::Generator do
         
     | 
| 
       2 
     | 
    
         
            -
              context "layering" do
         
     | 
| 
       3 
     | 
    
         
            -
                def generate(context)
         
     | 
| 
       4 
     | 
    
         
            -
                  path = "spec/fixtures/params/#{context}/params/development/network.txt"
         
     | 
| 
       5 
     | 
    
         
            -
                  param = Lono::Param::Generator.new("network",
         
     | 
| 
       6 
     | 
    
         
            -
                    path: path,
         
     | 
| 
       7 
     | 
    
         
            -
                    mute: true,
         
     | 
| 
       8 
     | 
    
         
            -
                  )
         
     | 
| 
       9 
     | 
    
         
            -
                  json = param.generate
         
     | 
| 
       10 
     | 
    
         
            -
                  data = JSON.load(json)
         
     | 
| 
       11 
     | 
    
         
            -
                  param_value = data.first["ParameterValue"]
         
     | 
| 
       12 
     | 
    
         
            -
                end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                context "overlay params" do
         
     | 
| 
       15 
     | 
    
         
            -
                  it "should combine params" do
         
     | 
| 
       16 
     | 
    
         
            -
                    param_value = generate("overlay")
         
     | 
| 
       17 
     | 
    
         
            -
                    expect(param_value).to eq "2"
         
     | 
| 
       18 
     | 
    
         
            -
                  end
         
     | 
| 
       19 
     | 
    
         
            -
                end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                context "only base param" do
         
     | 
| 
       22 
     | 
    
         
            -
                  it "should generate prod param from base param" do
         
     | 
| 
       23 
     | 
    
         
            -
                    param_value = generate("baseonly")
         
     | 
| 
       24 
     | 
    
         
            -
                    expect(param_value).to eq "foo"
         
     | 
| 
       25 
     | 
    
         
            -
                  end
         
     | 
| 
       26 
     | 
    
         
            -
                end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                context "only env param" do
         
     | 
| 
       29 
     | 
    
         
            -
                  it "should generate prod param from env param" do
         
     | 
| 
       30 
     | 
    
         
            -
                    param_value = generate("envonly")
         
     | 
| 
       31 
     | 
    
         
            -
                    expect(param_value).to eq "bar"
         
     | 
| 
       32 
     | 
    
         
            -
                  end
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
              end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
              # Load the variables defined in config/variables/* to make available the params/*.txt files
         
     | 
| 
       37 
     | 
    
         
            -
              #
         
     | 
| 
       38 
     | 
    
         
            -
              # Example:
         
     | 
| 
       39 
     | 
    
         
            -
              #
         
     | 
| 
       40 
     | 
    
         
            -
              #   config/variables/base/variables.rb:
         
     | 
| 
       41 
     | 
    
         
            -
              #     @ami = "ami-base-main"
         
     | 
| 
       42 
     | 
    
         
            -
              #
         
     | 
| 
       43 
     | 
    
         
            -
              #   params/base/example.txt:
         
     | 
| 
       44 
     | 
    
         
            -
              #     Ami=<%= @ami %>
         
     | 
| 
       45 
     | 
    
         
            -
              #
         
     | 
| 
       46 
     | 
    
         
            -
              context "shared variables access" do
         
     | 
| 
       47 
     | 
    
         
            -
                it "should have access to shared variables" do
         
     | 
| 
       48 
     | 
    
         
            -
                  # quickest to write test by shelling out
         
     | 
| 
       49 
     | 
    
         
            -
                  out = execute("exe/lono generate")
         
     | 
| 
       50 
     | 
    
         
            -
                  text = IO.read("#{Lono.root}/output/params/example.json")
         
     | 
| 
       51 
     | 
    
         
            -
                  data = JSON.load(text)
         
     | 
| 
       52 
     | 
    
         
            -
                  param = data.select { |i| i["ParameterKey"] == "Ami" }.first
         
     | 
| 
       53 
     | 
    
         
            -
                  expect(param["ParameterValue"]).to eq "ami-base-main"
         
     | 
| 
       54 
     | 
    
         
            -
                end
         
     | 
| 
       55 
     | 
    
         
            -
              end
         
     | 
| 
       56 
     | 
    
         
            -
            end
         
     | 
    
        data/spec/lib/lono/param_spec.rb
    DELETED
    
    
| 
         @@ -1,47 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            describe Lono::Param::Generator do
         
     | 
| 
       2 
     | 
    
         
            -
              let(:setting) do
         
     | 
| 
       3 
     | 
    
         
            -
                setting = Lono::Setting.new(check_lono_project=false)
         
     | 
| 
       4 
     | 
    
         
            -
                allow(setting).to receive(:data).and_return(data)
         
     | 
| 
       5 
     | 
    
         
            -
                setting
         
     | 
| 
       6 
     | 
    
         
            -
              end
         
     | 
| 
       7 
     | 
    
         
            -
              context "simple string" do
         
     | 
| 
       8 
     | 
    
         
            -
                let(:data) do
         
     | 
| 
       9 
     | 
    
         
            -
                  {
         
     | 
| 
       10 
     | 
    
         
            -
                    "s3_folder" => "s3-bucket/simple/string/example"
         
     | 
| 
       11 
     | 
    
         
            -
                  }
         
     | 
| 
       12 
     | 
    
         
            -
                end
         
     | 
| 
       13 
     | 
    
         
            -
                it "should return simple string value" do
         
     | 
| 
       14 
     | 
    
         
            -
                  value = setting.s3_folder
         
     | 
| 
       15 
     | 
    
         
            -
                  expect(value).to eq "s3-bucket/simple/string/example"
         
     | 
| 
       16 
     | 
    
         
            -
                end
         
     | 
| 
       17 
     | 
    
         
            -
              end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
              context "options hash" do
         
     | 
| 
       20 
     | 
    
         
            -
                let(:data) do
         
     | 
| 
       21 
     | 
    
         
            -
                  {
         
     | 
| 
       22 
     | 
    
         
            -
                    "s3_folder" => {
         
     | 
| 
       23 
     | 
    
         
            -
                      "default" => "s3-bucket/default/path",
         
     | 
| 
       24 
     | 
    
         
            -
                      "aws_profile1" => "s3-bucket/aws_profile1/path",
         
     | 
| 
       25 
     | 
    
         
            -
                    }
         
     | 
| 
       26 
     | 
    
         
            -
                  }
         
     | 
| 
       27 
     | 
    
         
            -
                end
         
     | 
| 
       28 
     | 
    
         
            -
                it "should return default value when AWS_PROFILE not set" do
         
     | 
| 
       29 
     | 
    
         
            -
                  saved = ENV['AWS_PROFILE']
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                  value = setting.s3_folder
         
     | 
| 
       32 
     | 
    
         
            -
                  expect(value).to eq "s3-bucket/default/path"
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                  ENV['AWS_PROFILE'] = saved
         
     | 
| 
       35 
     | 
    
         
            -
                end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                it "should return AWS_PROFILE value when AWS_PROFILE set" do
         
     | 
| 
       38 
     | 
    
         
            -
                  saved = ENV['AWS_PROFILE']
         
     | 
| 
       39 
     | 
    
         
            -
                  ENV['AWS_PROFILE'] = "aws_profile1"
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                  value = setting.s3_folder
         
     | 
| 
       42 
     | 
    
         
            -
                  expect(value).to eq "s3-bucket/aws_profile1/path"
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                  ENV['AWS_PROFILE'] = saved
         
     | 
| 
       45 
     | 
    
         
            -
                end
         
     | 
| 
       46 
     | 
    
         
            -
              end
         
     | 
| 
       47 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,59 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            describe Lono::Template::DSL do
         
     | 
| 
       2 
     | 
    
         
            -
              context "tmp/lono_project" do
         
     | 
| 
       3 
     | 
    
         
            -
                it "#evaluate_templates" do
         
     | 
| 
       4 
     | 
    
         
            -
                  dsl = Lono::Template::DSL.new(
         
     | 
| 
       5 
     | 
    
         
            -
                    quiet: true
         
     | 
| 
       6 
     | 
    
         
            -
                  )
         
     | 
| 
       7 
     | 
    
         
            -
                  dsl.evaluate_templates
         
     | 
| 
       8 
     | 
    
         
            -
                  templates = dsl.instance_variable_get(:@templates)
         
     | 
| 
       9 
     | 
    
         
            -
                  template_names = templates.map { |h| h[:name] }
         
     | 
| 
       10 
     | 
    
         
            -
                  expect(template_names).to include("example")
         
     | 
| 
       11 
     | 
    
         
            -
                end
         
     | 
| 
       12 
     | 
    
         
            -
              end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
              context "lono generate" do
         
     | 
| 
       15 
     | 
    
         
            -
                before(:each) do
         
     | 
| 
       16 
     | 
    
         
            -
                  dsl = Lono::Template::DSL.new(quiet: true)
         
     | 
| 
       17 
     | 
    
         
            -
                  dsl.run
         
     | 
| 
       18 
     | 
    
         
            -
                end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                it "should generate cloudformation template" do
         
     | 
| 
       21 
     | 
    
         
            -
                  template = YAML.load_file("#{Lono.root}/output/templates/example.yml")
         
     | 
| 
       22 
     | 
    
         
            -
                  expect(template['Description']).to include "AWS CloudFormation Sample Template"
         
     | 
| 
       23 
     | 
    
         
            -
                end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                # <%= partial("security_group", desc: "whatever", port: 22)
         
     | 
| 
       26 
     | 
    
         
            -
                it "partial local variables become instance variables in partial view" do
         
     | 
| 
       27 
     | 
    
         
            -
                  template = YAML.load_file("#{Lono.root}/output/templates/example.yml")
         
     | 
| 
       28 
     | 
    
         
            -
                  desc = template['Resources']['InstanceSecurityGroup']['Properties']['GroupDescription']
         
     | 
| 
       29 
     | 
    
         
            -
                  expect(desc).to eq 'Enable SSH access via port 22'
         
     | 
| 
       30 
     | 
    
         
            -
                end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                it "partials should have access to variables" do
         
     | 
| 
       33 
     | 
    
         
            -
                  text = IO.read("#{Lono.root}/output/templates/example.yml")
         
     | 
| 
       34 
     | 
    
         
            -
                  expect(text).to include("override_test=overridden-by-development")
         
     | 
| 
       35 
     | 
    
         
            -
                end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                it "should have access to custom helpers" do
         
     | 
| 
       38 
     | 
    
         
            -
                  text = IO.read("#{Lono.root}/output/templates/example.yml")
         
     | 
| 
       39 
     | 
    
         
            -
                  expect(text).to include("custom_helper value")
         
     | 
| 
       40 
     | 
    
         
            -
                end
         
     | 
| 
       41 
     | 
    
         
            -
              end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
              context "yaml parse error" do
         
     | 
| 
       44 
     | 
    
         
            -
                let(:dsl) do
         
     | 
| 
       45 
     | 
    
         
            -
                  Lono::Template::DSL.new(quiet: true)
         
     | 
| 
       46 
     | 
    
         
            -
                end
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                it "show exact line of error code when yaml is invalid" do
         
     | 
| 
       49 
     | 
    
         
            -
                  IO.write("tmp/bad.yml", <<EOL)
         
     | 
| 
       50 
     | 
    
         
            -
            test: 1
         
     | 
| 
       51 
     | 
    
         
            -
            foo
         
     | 
| 
       52 
     | 
    
         
            -
              test
         
     | 
| 
       53 
     | 
    
         
            -
            EOL
         
     | 
| 
       54 
     | 
    
         
            -
                  out = dsl.validate("tmp/bad.yml")
         
     | 
| 
       55 
     | 
    
         
            -
                  expect(out).to include("2 foo")
         
     | 
| 
       56 
     | 
    
         
            -
                end
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
              end
         
     | 
| 
       59 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,21 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            describe Lono do
         
     | 
| 
       2 
     | 
    
         
            -
              describe "bashify" do
         
     | 
| 
       3 
     | 
    
         
            -
                it "should convert cfn user_data to bash script" do
         
     | 
| 
       4 
     | 
    
         
            -
                  path = "spec/fixtures/cfn.json"
         
     | 
| 
       5 
     | 
    
         
            -
                  out = execute("exe/lono template bashify #{path}")
         
     | 
| 
       6 
     | 
    
         
            -
                  expect(out).to match /bash -lexv/
         
     | 
| 
       7 
     | 
    
         
            -
                end
         
     | 
| 
       8 
     | 
    
         
            -
              end
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              describe "cli specs" do
         
     | 
| 
       11 
     | 
    
         
            -
                it "should generate templates" do
         
     | 
| 
       12 
     | 
    
         
            -
                  out = execute("exe/lono template generate --clean")
         
     | 
| 
       13 
     | 
    
         
            -
                  expect(out).to match /Generating CloudFormation templates/
         
     | 
| 
       14 
     | 
    
         
            -
                end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                it "should upload templates" do
         
     | 
| 
       17 
     | 
    
         
            -
                  out = execute("exe/lono template upload --noop")
         
     | 
| 
       18 
     | 
    
         
            -
                  expect(out).to match /Templates uploaded to s3/
         
     | 
| 
       19 
     | 
    
         
            -
                end
         
     | 
| 
       20 
     | 
    
         
            -
              end
         
     | 
| 
       21 
     | 
    
         
            -
            end
         
     | 
    
        data/spec/spec_helper.rb
    DELETED
    
    | 
         @@ -1,62 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ENV['TEST'] = '1'
         
     | 
| 
       2 
     | 
    
         
            -
            # Ensures aws api never called. Fixture home folder does not contain ~/.aws/credentails
         
     | 
| 
       3 
     | 
    
         
            -
            ENV['HOME'] = "spec/fixtures/home"
         
     | 
| 
       4 
     | 
    
         
            -
            # We'll always re-generate a new lono project in tmp. It can be:
         
     | 
| 
       5 
     | 
    
         
            -
            #
         
     | 
| 
       6 
     | 
    
         
            -
            #   1. copied from spec/fixtures/lono_project
         
     | 
| 
       7 
     | 
    
         
            -
            #   2. generated from `lono new`
         
     | 
| 
       8 
     | 
    
         
            -
            #
         
     | 
| 
       9 
     | 
    
         
            -
            # This is done because changing LONO_ROOT for specs was a mess.
         
     | 
| 
       10 
     | 
    
         
            -
            ENV['LONO_ROOT'] = "tmp/lono_project" # this gets kept
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            require "pp"
         
     | 
| 
       13 
     | 
    
         
            -
            require "byebug"
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
            # require "bundler"
         
     | 
| 
       16 
     | 
    
         
            -
            # Bundler.require(:development)
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
            root = File.expand_path("../", File.dirname(__FILE__))
         
     | 
| 
       19 
     | 
    
         
            -
            require "#{root}/lib/lono"
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
            module Helper
         
     | 
| 
       22 
     | 
    
         
            -
              def execute(cmd)
         
     | 
| 
       23 
     | 
    
         
            -
                puts "Running: #{cmd}" if show_command?
         
     | 
| 
       24 
     | 
    
         
            -
                out = `#{cmd}`
         
     | 
| 
       25 
     | 
    
         
            -
                puts out if show_command?
         
     | 
| 
       26 
     | 
    
         
            -
                out
         
     | 
| 
       27 
     | 
    
         
            -
              end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
              # Added SHOW_COMMAND because DEBUG is also used by other libraries like
         
     | 
| 
       30 
     | 
    
         
            -
              # bundler and it shows its internal debugging logging also.
         
     | 
| 
       31 
     | 
    
         
            -
              def show_command?
         
     | 
| 
       32 
     | 
    
         
            -
                ENV['DEBUG'] || ENV['SHOW_COMMAND']
         
     | 
| 
       33 
     | 
    
         
            -
              end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
              def ensure_tmp_exists
         
     | 
| 
       36 
     | 
    
         
            -
                FileUtils.mkdir_p("tmp")
         
     | 
| 
       37 
     | 
    
         
            -
              end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
              # Copies spec/fixtures/lono_project to tmp/lono_project,
         
     | 
| 
       40 
     | 
    
         
            -
              # Main fixture we'll use because it's faster
         
     | 
| 
       41 
     | 
    
         
            -
              def copy_lono_project
         
     | 
| 
       42 
     | 
    
         
            -
                destroy_lono_project # just in case KEEP_TMP_PROJECT is used
         
     | 
| 
       43 
     | 
    
         
            -
                FileUtils.cp_r("spec/fixtures/lono_project", "tmp/lono_project")
         
     | 
| 
       44 
     | 
    
         
            -
              end
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
              def destroy_lono_project
         
     | 
| 
       47 
     | 
    
         
            -
                # Only use KEEP_TMP_PROJECT if you are testing exactly 1 spec for debugging
         
     | 
| 
       48 
     | 
    
         
            -
                # or it'll affect other tests.
         
     | 
| 
       49 
     | 
    
         
            -
                FileUtils.rm_rf(Lono.root)
         
     | 
| 
       50 
     | 
    
         
            -
              end
         
     | 
| 
       51 
     | 
    
         
            -
            end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
            RSpec.configure do |c|
         
     | 
| 
       54 
     | 
    
         
            -
              c.include Helper
         
     | 
| 
       55 
     | 
    
         
            -
              c.before(:all) do
         
     | 
| 
       56 
     | 
    
         
            -
                ensure_tmp_exists
         
     | 
| 
       57 
     | 
    
         
            -
                copy_lono_project
         
     | 
| 
       58 
     | 
    
         
            -
              end
         
     | 
| 
       59 
     | 
    
         
            -
              c.after(:all) do
         
     | 
| 
       60 
     | 
    
         
            -
                destroy_lono_project unless ENV['KEEP_TMP_PROJECT']
         
     | 
| 
       61 
     | 
    
         
            -
              end
         
     | 
| 
       62 
     | 
    
         
            -
            end
         
     |