conjur-cli 4.22.0 → 4.23.0
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 +10 -0
- data/features/conjurize.feature +1 -1
- data/lib/conjur/authn.rb +14 -1
- data/lib/conjur/command/dsl_command.rb +2 -3
- data/lib/conjur/command/plugin.rb +1 -1
- data/lib/conjur/config.rb +7 -7
- data/lib/conjur/conjurize.rb +5 -5
- data/lib/conjur/dsl/runner.rb +10 -4
- data/lib/conjur/version.rb +1 -1
- data/spec/authn_spec.rb +44 -16
- data/spec/config_spec.rb +1 -1
- data/spec/dsl/runner_spec.rb +73 -48
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: cf3b61260f8129d53e15aaca659af65769bdd729
         | 
| 4 | 
            +
              data.tar.gz: b40c45ae844b63e70d1975b2fc2934806562a8b3
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 0105965b5726d5449fe576a034f7b4f90627d0277d44d9f7c5f95744052fe9a012a037d28ca70f1ba1deef793a5aa0c71bcf9546e221769348aaca60faf37a29
         | 
| 7 | 
            +
              data.tar.gz: d0b1bd9f7f6b094bc846439914d4fbcb852b6b3d6a20a195dd24bc7f2bc6e69b781c4494d3def7d51d188620aabf7432d668fd6c1bd5c51bcdf9ad16d1df8fbb
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,3 +1,13 @@ | |
| 1 | 
            +
            # Unreleased
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            # 4.23.0
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * Don't check if netrc is world-readable on Windows, since the answer is not reliable
         | 
| 6 | 
            +
            * Use new [conjur](https://supermarket.chef.io/cookbooks/conjur) cookbook for conjurize
         | 
| 7 | 
            +
            * Fix faulty initialization of plugins list, if it's nil, in the .conjurrc
         | 
| 8 | 
            +
            * Log DSL commands to stderr, even if CONJURAPI_LOG is not explicitly configured
         | 
| 9 | 
            +
            * In policy DSL, allow creation of records without an explicit `id`. In this case, the current scope is used as the `id`.
         | 
| 10 | 
            +
             | 
| 1 11 | 
             
            # 4.22.0
         | 
| 2 12 |  | 
| 3 13 | 
             
            * New 'plugin' subcommand to manage CLI plugins
         | 
    
        data/features/conjurize.feature
    CHANGED
    
    | @@ -112,7 +112,7 @@ curl -L https://www.opscode.com/chef/install.sh | bash | |
| 112 112 | 
             
            """
         | 
| 113 113 | 
             
                And the output should match:
         | 
| 114 114 | 
             
                """
         | 
| 115 | 
            -
                chef-solo -r https:\/\/github.com\/conjur-cookbooks\/conjur | 
| 115 | 
            +
                chef-solo -r https:\/\/github.com\/conjur-cookbooks\/conjur\/releases\/download/v\d\.\d\.\d/conjur-v\d\.\d\.\d.tar.gz -o conjur
         | 
| 116 116 | 
             
                """
         | 
| 117 117 |  | 
| 118 118 | 
             
              Scenario: conjurize with arbitrary cookbook
         | 
    
        data/lib/conjur/authn.rb
    CHANGED
    
    | @@ -66,7 +66,7 @@ module Conjur::Authn | |
| 66 66 | 
             
                  else
         | 
| 67 67 | 
             
                    path = Netrc.default_path
         | 
| 68 68 | 
             
                  end
         | 
| 69 | 
            -
                   | 
| 69 | 
            +
                  fail_if_world_readable path
         | 
| 70 70 | 
             
                  Netrc.read(*args)
         | 
| 71 71 | 
             
                end
         | 
| 72 72 |  | 
| @@ -126,5 +126,18 @@ module Conjur::Authn | |
| 126 126 | 
             
                  end
         | 
| 127 127 | 
             
                  cls.new_from_key(*get_credentials(options))
         | 
| 128 128 | 
             
                end
         | 
| 129 | 
            +
                
         | 
| 130 | 
            +
                protected
         | 
| 131 | 
            +
                
         | 
| 132 | 
            +
                def fail_if_world_readable path
         | 
| 133 | 
            +
                  if !windows? && File.world_readable?(path)
         | 
| 134 | 
            +
                    fail "netrc (#{path}) shouldn't be world-readable" 
         | 
| 135 | 
            +
                  end
         | 
| 136 | 
            +
                end
         | 
| 137 | 
            +
                
         | 
| 138 | 
            +
                # see http://stackoverflow.com/questions/4871309/what-is-the-correct-way-to-detect-if-ruby-is-running-on-windows
         | 
| 139 | 
            +
                def windows?
         | 
| 140 | 
            +
                  RbConfig::CONFIG["host_os"] =~ /mswin|mingw|cygwin/
         | 
| 141 | 
            +
                end
         | 
| 129 142 | 
             
              end
         | 
| 130 143 | 
             
            end
         | 
| @@ -126,7 +126,7 @@ def modify_plugin_list(op, plugin_name) | |
| 126 126 | 
             
                  config_exists = true
         | 
| 127 127 | 
             
                  config = YAML.load(IO.read(f)).stringify_keys rescue {}
         | 
| 128 128 |  | 
| 129 | 
            -
                  config['plugins'] ||=  | 
| 129 | 
            +
                  config['plugins'] ||= []
         | 
| 130 130 | 
             
                  config['plugins'] += [plugin_name] if op == 'add'
         | 
| 131 131 | 
             
                  config['plugins'] -= [plugin_name] if op == 'remove'
         | 
| 132 132 | 
             
                  config['plugins'].uniq!
         | 
    
        data/lib/conjur/config.rb
    CHANGED
    
    | @@ -87,14 +87,14 @@ module Conjur | |
| 87 87 | 
             
                    end
         | 
| 88 88 |  | 
| 89 89 | 
             
                    if Conjur.log
         | 
| 90 | 
            -
                       | 
| 91 | 
            -
             | 
| 92 | 
            -
                        Conjur | 
| 90 | 
            +
                      require 'conjur/api'
         | 
| 91 | 
            +
                      host = begin
         | 
| 92 | 
            +
                        Conjur::Authn::API.host
         | 
| 93 93 | 
             
                      rescue RuntimeError
         | 
| 94 | 
            -
                         | 
| 95 | 
            -
             | 
| 96 | 
            -
             | 
| 97 | 
            -
                         | 
| 94 | 
            +
                        nil
         | 
| 95 | 
            +
                      end
         | 
| 96 | 
            +
                      if host
         | 
| 97 | 
            +
                        Conjur.log << "Using authn host #{Conjur::Authn::API.host}\n"
         | 
| 98 98 | 
             
                      end
         | 
| 99 99 | 
             
                    end
         | 
| 100 100 |  | 
    
        data/lib/conjur/conjurize.rb
    CHANGED
    
    | @@ -3,11 +3,11 @@ require 'json' | |
| 3 3 | 
             
            require 'open-uri'
         | 
| 4 4 | 
             
            require 'conjur/version.rb'
         | 
| 5 5 |  | 
| 6 | 
            -
            def  | 
| 7 | 
            -
              url = 'https://api.github.com/repos/conjur-cookbooks/conjur | 
| 6 | 
            +
            def latest_conjur_release
         | 
| 7 | 
            +
              url = 'https://api.github.com/repos/conjur-cookbooks/conjur/releases'
         | 
| 8 8 | 
             
              resp = open(url)
         | 
| 9 9 | 
             
              json = JSON.parse(resp.read)
         | 
| 10 | 
            -
              latest = json[0]['assets'].select {|asset| asset['name'] =~ /conjur- | 
| 10 | 
            +
              latest = json[0]['assets'].select {|asset| asset['name'] =~ /conjur-v\d.\d.\d.tar.gz/}[0]
         | 
| 11 11 | 
             
              latest['browser_download_url']
         | 
| 12 12 | 
             
            end
         | 
| 13 13 |  | 
| @@ -51,8 +51,8 @@ DESC | |
| 51 51 | 
             
                  chef_executable = options[:"chef-executable"]
         | 
| 52 52 |  | 
| 53 53 | 
             
                  if options[:ssh]
         | 
| 54 | 
            -
                    conjur_run_list ||= "conjur | 
| 55 | 
            -
                    conjur_cookbook_url ||=  | 
| 54 | 
            +
                    conjur_run_list ||= "conjur"
         | 
| 55 | 
            +
                    conjur_cookbook_url ||= latest_conjur_release()
         | 
| 56 56 | 
             
                  end
         | 
| 57 57 |  | 
| 58 58 | 
             
                  sudo = lambda{|str|
         | 
    
        data/lib/conjur/dsl/runner.rb
    CHANGED
    
    | @@ -112,12 +112,12 @@ module Conjur | |
| 112 112 | 
             
                    instance_eval(*args)
         | 
| 113 113 | 
             
                  end
         | 
| 114 114 |  | 
| 115 | 
            -
                  def resource kind, id, options = {}, &block
         | 
| 115 | 
            +
                  def resource kind, id = nil, options = {}, &block
         | 
| 116 116 | 
             
                    id = full_resource_id([kind, qualify_id(id, kind) ].join(':'))
         | 
| 117 117 | 
             
                    find_or_create :resource, id, options, &block
         | 
| 118 118 | 
             
                  end
         | 
| 119 119 |  | 
| 120 | 
            -
                  def role kind, id, options = {}, &block
         | 
| 120 | 
            +
                  def role kind, id = nil, options = {}, &block
         | 
| 121 121 | 
             
                    id = full_resource_id([ kind, qualify_id(id, kind) ].join(':'))
         | 
| 122 122 | 
             
                    find_or_create :role, id, options, &block
         | 
| 123 123 | 
             
                  end
         | 
| @@ -146,11 +146,12 @@ module Conjur | |
| 146 146 | 
             
                  protected
         | 
| 147 147 |  | 
| 148 148 | 
             
                  def qualify_id id, kind
         | 
| 149 | 
            -
                    if id[0] == "/"
         | 
| 149 | 
            +
                    if id && id[0] == "/"
         | 
| 150 150 | 
             
                      id[1..-1]
         | 
| 151 151 | 
             
                    else
         | 
| 152 152 | 
             
                      case kind.to_sym
         | 
| 153 153 | 
             
                      when :user
         | 
| 154 | 
            +
                        raise "User id is required" unless id
         | 
| 154 155 | 
             
                        [ id, current_user_scope ].compact.join('@')
         | 
| 155 156 | 
             
                      else
         | 
| 156 157 | 
             
                        [ current_scope, id ].compact.join('/')
         | 
| @@ -175,6 +176,11 @@ module Conjur | |
| 175 176 | 
             
                      lambda { args.length == 1 },
         | 
| 176 177 | 
             
                      lambda { args.length == 2 && args[1].is_a?(Hash) }
         | 
| 177 178 | 
             
                    ]
         | 
| 179 | 
            +
                    if current_scope
         | 
| 180 | 
            +
                      # If there is a scope, it's valid to create a record without an id, because the
         | 
| 181 | 
            +
                      # scope name will be used as the id.
         | 
| 182 | 
            +
                      valid_prototypes << lambda { args.length == 0 }
         | 
| 183 | 
            +
                    end
         | 
| 178 184 | 
             
                    !valid_prototypes.find{|p| p.call}.nil?      
         | 
| 179 185 | 
             
                  end
         | 
| 180 186 |  | 
| @@ -213,7 +219,7 @@ module Conjur | |
| 213 219 |  | 
| 214 220 | 
             
                  def do_object obj, &block
         | 
| 215 221 | 
             
                    begin
         | 
| 216 | 
            -
                      api_keys[obj.roleid] = obj.api_key if obj.api_key 
         | 
| 222 | 
            +
                      api_keys[obj.roleid] = obj.api_key if obj.respond_to?(:api_key) && obj.api_key 
         | 
| 217 223 | 
             
                    rescue
         | 
| 218 224 | 
             
                    end
         | 
| 219 225 |  | 
    
        data/lib/conjur/version.rb
    CHANGED
    
    
    
        data/spec/authn_spec.rb
    CHANGED
    
    | @@ -27,26 +27,54 @@ describe Conjur::Authn do | |
| 27 27 | 
             
                  Conjur::Authn.get_credentials
         | 
| 28 28 | 
             
                end
         | 
| 29 29 | 
             
              end
         | 
| 30 | 
            -
             | 
| 30 | 
            +
              
         | 
| 31 31 | 
             
              describe "netrc" do
         | 
| 32 | 
            -
                 | 
| 33 | 
            -
             | 
| 34 | 
            -
                   | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
                     | 
| 32 | 
            +
                describe "fail_if_world_readable" do
         | 
| 33 | 
            +
                  let(:path) { "the-path" }
         | 
| 34 | 
            +
                  around { |example|
         | 
| 35 | 
            +
                    host_os = RbConfig::CONFIG["host_os"]
         | 
| 36 | 
            +
                    RbConfig::CONFIG["host_os"] = os
         | 
| 37 | 
            +
                    begin
         | 
| 38 | 
            +
                      example.run
         | 
| 39 | 
            +
                    ensure 
         | 
| 40 | 
            +
                      RbConfig::CONFIG["host_os"] = host_os
         | 
| 41 | 
            +
                    end
         | 
| 42 | 
            +
                  }
         | 
| 43 | 
            +
                  context "on Windows" do
         | 
| 44 | 
            +
                    let(:os) { "mswin" }
         | 
| 45 | 
            +
                    it "bypasses the readability check" do
         | 
| 46 | 
            +
                      Conjur::Authn.send :fail_if_world_readable, path
         | 
| 47 | 
            +
                    end
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
                  context "on Linux" do
         | 
| 50 | 
            +
                    let(:os) { "linux" }
         | 
| 51 | 
            +
                    it "raises an error if the file is world readable" do
         | 
| 52 | 
            +
                      expect(File).to receive(:world_readable?).with(path).and_return(true)
         | 
| 53 | 
            +
                      expect { Conjur::Authn.send :fail_if_world_readable, path }.to raise_error("netrc (the-path) shouldn't be world-readable")
         | 
| 54 | 
            +
                    end
         | 
| 42 55 | 
             
                  end
         | 
| 43 56 | 
             
                end
         | 
| 44 57 |  | 
| 45 | 
            -
                context " | 
| 46 | 
            -
                  let(: | 
| 47 | 
            -
                   | 
| 48 | 
            -
                     | 
| 49 | 
            -
             | 
| 58 | 
            +
                context "loading" do
         | 
| 59 | 
            +
                  let(:netrc) { nil }
         | 
| 60 | 
            +
                  before do
         | 
| 61 | 
            +
                    allow(Conjur::Config).to receive(:[]).with(:netrc_path).and_return path
         | 
| 62 | 
            +
                  end
         | 
| 63 | 
            +
                  
         | 
| 64 | 
            +
                  context "with specified netrc_path" do
         | 
| 65 | 
            +
                    let(:path) { "/a/dummy/netrc/path" }
         | 
| 66 | 
            +
                    it "consults Conjur::Config for netrc_path" do
         | 
| 67 | 
            +
                      expect(Netrc).to receive(:read).with(path).and_return netrc = double("netrc")
         | 
| 68 | 
            +
                      expect(Conjur::Authn.netrc).to eq(netrc)
         | 
| 69 | 
            +
                    end
         | 
| 70 | 
            +
                  end
         | 
| 71 | 
            +
              
         | 
| 72 | 
            +
                  context "without specified netrc_path" do
         | 
| 73 | 
            +
                    let(:path) { nil }
         | 
| 74 | 
            +
                    it "uses default netrc path" do
         | 
| 75 | 
            +
                      expect(Netrc).to receive(:read).with(no_args).and_return netrc = double("netrc")
         | 
| 76 | 
            +
                      expect(Conjur::Authn.netrc).to eq(netrc)
         | 
| 77 | 
            +
                    end
         | 
| 50 78 | 
             
                  end
         | 
| 51 79 | 
             
                end
         | 
| 52 80 | 
             
              end
         | 
    
        data/spec/config_spec.rb
    CHANGED
    
    | @@ -114,7 +114,7 @@ describe Conjur::Config do | |
| 114 114 | 
             
                }
         | 
| 115 115 |  | 
| 116 116 | 
             
                context "ssl_certificate string" do
         | 
| 117 | 
            -
                  let(:ssl_certificate){ 'the | 
| 117 | 
            +
                  let(:ssl_certificate){ 'the-certificate' }
         | 
| 118 118 | 
             
                  let(:certificate){ double('Certificate') }
         | 
| 119 119 | 
             
                  before{
         | 
| 120 120 | 
             
                      Conjur::Config.class_variable_set('@@attributes', {'ssl_certificate' => ssl_certificate})
         | 
    
        data/spec/dsl/runner_spec.rb
    CHANGED
    
    | @@ -6,63 +6,88 @@ describe Conjur::DSL::Runner, logged_in: true do | |
| 6 6 |  | 
| 7 7 | 
             
              let(:filename) { nil }
         | 
| 8 8 | 
             
              let(:runner) { Conjur::DSL::Runner.new script, filename }
         | 
| 9 | 
            -
              let(:script) { "user 'alice'" }
         | 
| 10 | 
            -
              let(:alice) {
         | 
| 11 | 
            -
                Conjur::User.new("alice").tap do |user|
         | 
| 12 | 
            -
                  user.attributes = { "api_key" => "the-api-key" }    
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
              }
         | 
| 15 9 | 
             
              before {
         | 
| 16 10 | 
             
                allow(Conjur).to receive(:account).and_return "the-account"
         | 
| 17 11 | 
             
                allow(runner).to receive(:api).and_return api
         | 
| 18 12 | 
             
              }
         | 
| 19 | 
            -
               | 
| 20 | 
            -
                 | 
| 21 | 
            -
                 | 
| 22 | 
            -
             | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
              it "should store the api_key in the context keyed by roleid" do
         | 
| 27 | 
            -
                expect(api).to receive(:user).with("alice").and_return double("alice-exists", exists?: false)
         | 
| 28 | 
            -
                expect(api).to receive(:create_user).with(id: "alice").and_return alice
         | 
| 29 | 
            -
                
         | 
| 30 | 
            -
                runner.execute
         | 
| 31 | 
            -
                
         | 
| 32 | 
            -
                expect(runner.context['api_keys']).to eq({
         | 
| 33 | 
            -
                  "the-account:user:alice" => "the-api-key"
         | 
| 34 | 
            -
                })
         | 
| 35 | 
            -
              end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
              it "doesn't store default env and stack in context" do
         | 
| 38 | 
            -
                expect(runner.context).to_not have_key 'env'
         | 
| 39 | 
            -
                expect(runner.context).to_not have_key 'stack'
         | 
| 40 | 
            -
              end
         | 
| 41 | 
            -
             | 
| 42 | 
            -
              context "with non-default stack and env" do
         | 
| 43 | 
            -
                let(:runner) do
         | 
| 44 | 
            -
                  Conjur::Config.merge env: 'baz', stack: 'bar'
         | 
| 45 | 
            -
                  Conjur::Config.apply
         | 
| 46 | 
            -
                  Conjur::DSL::Runner.new '', nil
         | 
| 13 | 
            +
              context "nil record ids" do
         | 
| 14 | 
            +
                subject { runner.execute }
         | 
| 15 | 
            +
                context "creating a user" do
         | 
| 16 | 
            +
                  let(:script) { "user" }
         | 
| 17 | 
            +
                  it "isn't allowed" do
         | 
| 18 | 
            +
                    expect{ subject }.to raise_error
         | 
| 19 | 
            +
                  end
         | 
| 47 20 | 
             
                end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
                   | 
| 51 | 
            -
             | 
| 21 | 
            +
                context "creating a resource" do
         | 
| 22 | 
            +
                  let(:script) { "scope 'kitchen' do; resource 'food'; end" }
         | 
| 23 | 
            +
                  it "creates resource with id matching the scope" do
         | 
| 24 | 
            +
                    expect(api).to receive(:resource).with("the-account:food:kitchen").and_return double("kitchen-exists", :exists? => true)
         | 
| 25 | 
            +
                    subject
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
                context "creating a layer" do
         | 
| 29 | 
            +
                  let(:script) { "scope 'kitchen' do; layer; end" }
         | 
| 30 | 
            +
                  it "creates layer with id matching the scope" do
         | 
| 31 | 
            +
                    expect(api).to receive(:layer).with("kitchen").and_return double("kitchen-exists", :exists? => true)
         | 
| 32 | 
            +
                    subject
         | 
| 33 | 
            +
                  end
         | 
| 52 34 | 
             
                end
         | 
| 53 35 | 
             
              end
         | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
                let(: | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
                   | 
| 36 | 
            +
              context "creating user:alice" do
         | 
| 37 | 
            +
                let(:script) { "user 'alice'" }
         | 
| 38 | 
            +
                let(:alice) {
         | 
| 39 | 
            +
                  Conjur::User.new("alice").tap do |user|
         | 
| 40 | 
            +
                    user.attributes = { "api_key" => "the-api-key" }    
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
                }
         | 
| 43 | 
            +
                it "should populate the root ownerid" do
         | 
| 44 | 
            +
                  expect(api).to receive(:user).with("alice").and_return double("alice-exists", exists?: false)
         | 
| 45 | 
            +
                  expect(api).to receive(:create_user).with(id: "alice", ownerid: "user:bob").and_return alice
         | 
| 60 46 |  | 
| 61 | 
            -
                   | 
| 47 | 
            +
                  runner.owner = "user:bob"
         | 
| 48 | 
            +
                  runner.execute
         | 
| 62 49 | 
             
                end
         | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
                  expect( | 
| 50 | 
            +
                it "should store the api_key in the context keyed by roleid" do
         | 
| 51 | 
            +
                  expect(api).to receive(:user).with("alice").and_return double("alice-exists", exists?: false)
         | 
| 52 | 
            +
                  expect(api).to receive(:create_user).with(id: "alice").and_return alice
         | 
| 53 | 
            +
                  
         | 
| 54 | 
            +
                  runner.execute
         | 
| 55 | 
            +
                  
         | 
| 56 | 
            +
                  expect(runner.context['api_keys']).to eq({
         | 
| 57 | 
            +
                    "the-account:user:alice" => "the-api-key"
         | 
| 58 | 
            +
                  })
         | 
| 59 | 
            +
                end
         | 
| 60 | 
            +
              
         | 
| 61 | 
            +
                it "doesn't store default env and stack in context" do
         | 
| 62 | 
            +
                  expect(runner.context).to_not have_key 'env'
         | 
| 63 | 
            +
                  expect(runner.context).to_not have_key 'stack'
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
              
         | 
| 66 | 
            +
                context "with non-default stack and env" do
         | 
| 67 | 
            +
                  let(:runner) do
         | 
| 68 | 
            +
                    Conjur::Config.merge env: 'baz', stack: 'bar'
         | 
| 69 | 
            +
                    Conjur::Config.apply
         | 
| 70 | 
            +
                    Conjur::DSL::Runner.new '', nil
         | 
| 71 | 
            +
                  end
         | 
| 72 | 
            +
              
         | 
| 73 | 
            +
                  it "stores them in context" do
         | 
| 74 | 
            +
                    expect(runner.context['env']).to eq 'baz'
         | 
| 75 | 
            +
                    expect(runner.context['stack']).to eq 'bar'
         | 
| 76 | 
            +
                  end
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
              
         | 
| 79 | 
            +
                context "with appliance url" do
         | 
| 80 | 
            +
                  let(:appliance_url) { "https://conjur.example.com/api" }
         | 
| 81 | 
            +
                  let(:runner) do
         | 
| 82 | 
            +
                    Conjur::Config.merge appliance_url: appliance_url
         | 
| 83 | 
            +
                    Conjur::Config.apply
         | 
| 84 | 
            +
                    
         | 
| 85 | 
            +
                    Conjur::DSL::Runner.new '', nil
         | 
| 86 | 
            +
                  end
         | 
| 87 | 
            +
              
         | 
| 88 | 
            +
                  it "stores appliance url in the context" do
         | 
| 89 | 
            +
                    expect(runner.context['appliance_url']).to eq appliance_url
         | 
| 90 | 
            +
                  end
         | 
| 66 91 | 
             
                end
         | 
| 67 92 | 
             
              end
         | 
| 68 93 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: conjur-cli
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 4. | 
| 4 | 
            +
              version: 4.23.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Rafal Rzepecki
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2015-04 | 
| 12 | 
            +
            date: 2015-05-04 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: activesupport
         |