conjur-cli 4.10.1 → 4.10.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5d219c046cb6b4a44c0b1754f925b0ea77882eb2
4
- data.tar.gz: 2986ef662a9d837d49e30e66b3d465d82b541099
3
+ metadata.gz: 9364641a7961f68f6327900c82a3b48df392a8ff
4
+ data.tar.gz: aa7a0645cba4fc6055263fb7893e1a87272759a1
5
5
  SHA512:
6
- metadata.gz: 4ef2f8845165add6f0e3c0988f5b919bc241194738f2561190bf2c7b159394f0b3db202efa854123dd3e28a6aae0a60add5b618844ab7feae2707f70dc44f598
7
- data.tar.gz: 88176c1f04a89cc484dc6cfc7c4f32aa7a9938d1818e5e29a44f3d9799642277929c41314234d6259120233ac080d4a93e5130d0820592cdec80a267f16deb06
6
+ metadata.gz: 885fe1eed115b3f3ca176a89cbbf50538a582f0610327a5b20bc77e8d4698bcc4781d45cb94927ddd3b2d76f3a849b718e5c7bbd3f62a267b09a9c76c294fdda
7
+ data.tar.gz: 85d230b34bd07280dc4d24c495e24bae284073c66c0e58e4d01267b918f35d0ca1a836ba71768ca71dad3879bf0c3a39792d49e480bd8a8bba5423dce9eb8e2f
data/conjur.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
17
17
 
18
18
 
19
19
  gem.add_dependency 'activesupport'
20
- gem.add_dependency 'conjur-api', '>=4.9.0'
20
+ gem.add_dependency 'conjur-api', '>=4.9.1'
21
21
  gem.add_dependency 'gli', '>=2.8.0'
22
22
  gem.add_dependency 'highline'
23
23
  gem.add_dependency 'netrc'
data/lib/conjur/authn.rb CHANGED
@@ -19,6 +19,7 @@
19
19
  # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  #
21
21
  require 'active_support/deprecation'
22
+ require 'active_support/dependencies/autoload'
22
23
  require 'conjur/api'
23
24
  require 'netrc'
24
25
 
@@ -102,4 +103,4 @@ module Conjur::Authn
102
103
  cls.new_from_key(*get_credentials(options))
103
104
  end
104
105
  end
105
- end
106
+ end
@@ -150,7 +150,7 @@ TEMPLATEDESC
150
150
  env.command :help do |c|
151
151
  c.action do |global_options,options,args|
152
152
  puts """
153
- Environment configuration (either stored in file referred by -f option or provided inline with --yaml option) should be a YAML document describing one-level Hash.
153
+ Environment configuration (either stored in file referred by -c option or provided inline with --yaml option) should be a YAML document describing one-level Hash.
154
154
  Keys of the hash are 'local names', used to refer to variable values in convenient manner. (See help for env:run and env:template for more details about how they are interpreted).
155
155
 
156
156
  Values of the hash may take one of the following forms: a) string b) string preceeded with !var tag c) string preceeded with !tmp tag.
@@ -94,10 +94,7 @@ class Conjur::Command::Init < Conjur::Command
94
94
 
95
95
  exit_now! "account is required" if account.blank?
96
96
 
97
- config = {
98
- account: account,
99
- plugins: %w(environment layer key-pair pubkeys)
100
- }
97
+ config = { account: account }
101
98
 
102
99
  config[:appliance_url] = "https://#{hostname}/api" unless hostname.blank?
103
100
 
@@ -65,7 +65,7 @@ owner of the policy role is the logged-in user (you), as always.
65
65
  policy.command :load do |c|
66
66
  acting_as_option(c)
67
67
 
68
- c.desc "Policy collection (default: #{default_collection_user}@#{default_collection_hostname})"
68
+ c.desc "Policy collection, defaulting to $USER@$HOSTNAME"
69
69
  c.arg_name "collection"
70
70
  c.flag [:collection]
71
71
 
@@ -62,11 +62,18 @@ class Conjur::Command::Resources < Conjur::Command
62
62
  resource.desc "Give a privilege on a resource"
63
63
  resource.arg_name "resource-id role privilege"
64
64
  resource.command :permit do |c|
65
+ c.desc "allow transfer to other roles"
66
+ c.switch [:g, :grantable]
65
67
  c.action do |global_options,options,args|
66
68
  id = full_resource_id( require_arg(args, "resource-id") )
67
69
  role = require_arg(args, "role")
68
70
  privilege = require_arg(args, "privilege")
69
- api.resource(id).permit privilege, role
71
+ unless options[:g]
72
+ api.resource(id).permit privilege, role
73
+ else
74
+ api.resource(id).permit privilege, role, grant_option: true
75
+ end
76
+
70
77
  puts "Permission granted"
71
78
  end
72
79
  end
@@ -173,4 +180,4 @@ class Conjur::Command::Resources < Conjur::Command
173
180
  end
174
181
  end
175
182
  end
176
- end
183
+ end
@@ -74,7 +74,7 @@ class Conjur::Command::Variables < Conjur::Command
74
74
  end
75
75
  end
76
76
 
77
- var.desc "Access varialbe values"
77
+ var.desc "Access variable values"
78
78
  var.command :values do |values|
79
79
  values.desc "Add a value"
80
80
  values.arg_name "variable ( value | STDIN )"
data/lib/conjur/config.rb CHANGED
@@ -55,9 +55,17 @@ module Conjur
55
55
  require 'conjur/configuration'
56
56
  keys = Config.keys.dup
57
57
  keys.delete(:plugins)
58
+
59
+ cfg = Conjur.configuration
58
60
  keys.each do |k|
61
+ begin
62
+ next if cfg.send(k)
63
+ rescue
64
+ # we use try..rescue because Conjur.configuration
65
+ # provides no API to see if key is set
66
+ end
59
67
  value = Config[k]
60
- Conjur.configuration.set k, value if value
68
+ cfg.set k, value if value
61
69
  end
62
70
 
63
71
  if Conjur.log
@@ -79,6 +79,8 @@ module Conjur
79
79
  YAML.add_tag("!tmp", ConjurTempfile)
80
80
  definition = YAML.load(yaml)
81
81
  raise "Definition should be a Hash" unless definition.kind_of?(Hash)
82
+ # convert fixnums to literals -- to make definitions of e.g. ports more convenient
83
+ definition.keys.select { |k| definition[k].kind_of? Fixnum }.each { |k| definition[k]="#{definition[k]}" }
82
84
  bad_types = definition.values.select { |v| not (v.kind_of?(String) or v.kind_of?(CustomTag)) }.map {|v| v.class}.uniq
83
85
  raise "Definition can not include values of types: #{bad_types}" unless bad_types.empty?
84
86
  definition
@@ -1,3 +1,4 @@
1
+ require 'conjur/identifier_manipulation'
1
2
 
2
3
  module Conjur
3
4
  module DSL
@@ -176,7 +177,7 @@ module Conjur
176
177
 
177
178
  # TODO: find a way to pass annotations as part of top-level options hash
178
179
  # https://basecamp.com/1949725/projects/4268938-api-version-4-x/todos/84965324-low-dsl-design
179
- annotations = options.delete(:annotations)
180
+ annotations = options.delete(:annotations) || {}
180
181
 
181
182
  unless (obj = api.send(find_method, id)) && obj.exists?
182
183
  options = expand_options(options)
@@ -19,6 +19,6 @@
19
19
  # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  #
21
21
  module Conjur
22
- VERSION = "4.10.1"
22
+ VERSION = "4.10.3"
23
23
  ::Version=VERSION
24
24
  end
@@ -110,7 +110,6 @@ describe Conjur::Command::Init do
110
110
 
111
111
  expect(YAML.load(File.read(File.join(tmpdir, ".conjurrc")))).to eq({
112
112
  account: 'the-account',
113
- plugins: %w(environment layer key-pair pubkeys),
114
113
  appliance_url: "https://localhost/api",
115
114
  cert_file: "#{tmpdir}/conjur-the-account.pem"
116
115
  }.stringify_keys)
@@ -80,6 +80,13 @@ describe Conjur::Command::Resources, logged_in: true do
80
80
  it { expect { invoke }.to write "Permission granted" }
81
81
  end
82
82
 
83
+ describe_command "resource:permit -g #{KIND}:#{ID} #{ROLE} #{PRIVILEGE}" do
84
+ it 'calls resource.permit() with grant option' do
85
+ resource_instance.should_receive(:permit).with(PRIVILEGE, ROLE, grant_option: true)
86
+ invoke_silently
87
+ end
88
+ end
89
+
83
90
  describe_command "resource:deny #{KIND}:#{ID} #{ROLE} #{PRIVILEGE}" do
84
91
  before(:each) { resource_instance.stub(:deny).and_return(true) }
85
92
  it_behaves_like "it obtains resource by id"
data/spec/config_spec.rb CHANGED
@@ -26,19 +26,32 @@ describe Conjur::Config do
26
26
  end
27
27
  end
28
28
 
29
+ let(:load!) { Conjur::Config.load([ File.expand_path('conjurrc', File.dirname(__FILE__)) ]) }
30
+ let(:cert_path) { File.expand_path('conjur-ci.pem', File.dirname(__FILE__)) }
31
+
29
32
  describe "#load" do
30
33
  it "resolves the cert_file" do
31
- Conjur::Config.load([ File.expand_path('conjurrc', File.dirname(__FILE__)) ])
34
+ load!
32
35
 
33
- Conjur::Config[:cert_file].should == File.expand_path('conjur-ci.pem', File.dirname(__FILE__))
36
+ Conjur::Config[:cert_file].should == cert_path
34
37
  end
35
38
  end
36
39
  describe "#apply" do
40
+ before { OpenSSL::SSL::SSLContext::DEFAULT_CERT_STORE.stub(:add_file) }
41
+
37
42
  let(:cert_file) { "/path/to/cert.pem" }
38
43
  it "trusts the cert_file" do
39
44
  Conjur::Config.class_variable_set("@@attributes", { 'cert_file' => cert_file })
40
45
  OpenSSL::SSL::SSLContext::DEFAULT_CERT_STORE.should_receive(:add_file).with cert_file
41
46
  Conjur::Config.apply
42
47
  end
48
+
49
+ it "shadows rc with envars" do
50
+ url = 'https://other-conjur.example.com'
51
+ ENV['CONJUR_APPLIANCE_URL'] = url
52
+ load!
53
+ Conjur::Config.apply
54
+ expect(Conjur.configuration.appliance_url).to eq url
55
+ end
43
56
  end
44
57
  end
data/spec/conjurrc CHANGED
@@ -1 +1,2 @@
1
- cert_file: ./conjur-ci.pem
1
+ cert_file: ./conjur-ci.pem
2
+ appliance_url: https://conjur.example.com
data/spec/env_spec.rb CHANGED
@@ -62,9 +62,9 @@ describe Conjur::Env do
62
62
  expect { Conjur::Env.new(yaml: "[ 1,2,3 ]") }.to raise_error "Definition should be a Hash"
63
63
  end
64
64
 
65
- it "fails if values are not literal, !tmp or !var" do
65
+ it "fails if values are not literal, number, !tmp or !var" do
66
66
  expect { Conjur::Env.new(yaml: "{a: literal, b: !tmp tempfile, c: !var conjurvar, d: { x: another literal }}") }.to raise_error /^Definition can not include values of types/
67
- expect { Conjur::Env.new(yaml: "{a: literal, b: !tmp tempfile, c: !var conjurvar}") }.to_not raise_error
67
+ expect { Conjur::Env.new(yaml: "{a: literal, b: 123, c: !tmp tempfile, d: !var conjurvar}") }.to_not raise_error
68
68
  end
69
69
 
70
70
  it 'does not allow empty values for !tmp and !var' do
@@ -80,6 +80,12 @@ describe Conjur::Env do
80
80
  result["b"].should be_a_kind_of(Conjur::Env::ConjurTempfile)
81
81
  result["c"].should be_a_kind_of(Conjur::Env::ConjurVariable)
82
82
  end
83
+
84
+ it "Converts numbers to string literals" do
85
+ result = Conjur::Env.new(yaml: "{a: 123}").instance_variable_get("@definition")
86
+ result["a"].should == "123"
87
+ end
88
+
83
89
  end
84
90
 
85
91
  describe "#obtain", logged_in: true do
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.10.1
4
+ version: 4.10.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafał Rzepecki
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-06 00:00:00.000000000 Z
12
+ date: 2014-07-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - '>='
33
33
  - !ruby/object:Gem::Version
34
- version: 4.9.0
34
+ version: 4.9.1
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - '>='
40
40
  - !ruby/object:Gem::Version
41
- version: 4.9.0
41
+ version: 4.9.1
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: gli
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -311,7 +311,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
311
311
  version: '0'
312
312
  requirements: []
313
313
  rubyforge_project:
314
- rubygems_version: 2.0.3
314
+ rubygems_version: 2.2.2
315
315
  signing_key:
316
316
  specification_version: 4
317
317
  summary: Conjur command line interface