conjur-cli 4.20.1 → 4.21.0

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: 54829e90e9f47497bd87c30bdaa35c6004a91d64
4
- data.tar.gz: b468b645050ddf11e00e2c111e87fc32dd9d2945
3
+ metadata.gz: 3c37f9ccccef777e9cc90ab9dd9d83c167f59e8f
4
+ data.tar.gz: 00970eef162d3ff5f69b09bff7196234e61dfe97
5
5
  SHA512:
6
- metadata.gz: e6750225d94caf197718145f90077f86b3e50dde0c8d8ba49d7e63db7cdb3fa3adf72c72eef3615a722a64486e1ce72aa5669fb820c56be0065abc4adac30d78
7
- data.tar.gz: d1758ad2e32ed4a5161435edd98100399c466c85bfcff273c735fef1ec67a0ec889d5156ac184e0f555666d886912714f09171799be5be887ecda4009a1ebde6
6
+ metadata.gz: 538be1cde61f32cfe2db688d7bb399a9f44e85ca6e75ea1327e2a15cb1a1eade78a0265512b89a53fa2b9ef333828bc471c48ca18a23228fbe817d23abd8c4d9
7
+ data.tar.gz: bd3c351d0493ff5a2bbccbd5b510a76c4f28b3c3225da8c62de87f34b287ec332f7c43622be241fbdc6cf71e942e6d8408b64afacefd644f2785a465efb1781f
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ # 4.21.0
2
+
3
+ * Use user cache dir for mimetype cache
4
+ * Retrieve the whole certificate chain on conjur init
5
+
1
6
  # 4.20.1
2
7
 
3
8
  * Improve the error reporting
data/README.md CHANGED
@@ -1,12 +1,14 @@
1
1
  # Conjur
2
2
 
3
- TODO: Write a gem description
3
+ Command-line interface to Conjur.
4
+
5
+ A complete reference guide is available at [developer.conjur.net](http://developer.conjur.net/reference).
4
6
 
5
7
  ## Installation
6
8
 
7
9
  Add this line to your application's Gemfile:
8
10
 
9
- gem 'conjur'
11
+ gem 'conjur-cli', require: 'conjur/cli'
10
12
 
11
13
  And then execute:
12
14
 
@@ -14,11 +16,7 @@ And then execute:
14
16
 
15
17
  Or install it yourself as:
16
18
 
17
- $ gem install conjur
18
-
19
- ## Usage
20
-
21
- TODO: Write usage instructions here
19
+ $ gem install conjur-cli
22
20
 
23
21
  ## Contributing
24
22
 
data/conjur.gemspec CHANGED
@@ -17,12 +17,13 @@ Gem::Specification.new do |gem|
17
17
 
18
18
 
19
19
  gem.add_dependency 'activesupport'
20
- gem.add_dependency 'conjur-api', '~> 4.13.0'
20
+ gem.add_dependency 'conjur-api', '~> 4.14'
21
21
  gem.add_dependency 'gli', '>=2.8.0'
22
22
  gem.add_dependency 'highline'
23
23
  gem.add_dependency 'netrc', '~> 0.10.2'
24
24
  gem.add_dependency 'methadone'
25
25
  gem.add_dependency 'deep_merge'
26
+ gem.add_dependency 'xdg'
26
27
 
27
28
  gem.add_runtime_dependency 'cas_rest_client'
28
29
 
data/lib/conjur/cli.rb CHANGED
@@ -22,12 +22,15 @@ require 'gli'
22
22
  # need this to prevent an active support bug in some versions
23
23
  require 'active_support'
24
24
  require 'active_support/deprecation'
25
- require 'tmpdir'
25
+ require 'xdg'
26
+ require 'fileutils'
26
27
 
27
28
  # this makes mime/types gem load much faster by lazy loading
28
29
  # mime types and caching them in binary form
29
30
  ENV['RUBY_MIME_TYPES_LAZY_LOAD'] ||= 'true'
30
- ENV['RUBY_MIME_TYPES_CACHE'] ||= File.join Dir.tmpdir, 'conjur.mimetype.cache'
31
+ ENV['RUBY_MIME_TYPES_CACHE'] ||= (
32
+ XDG['CACHE'].to_path.tap(&FileUtils.method(:mkdir_p)) + 'ruby-mime-types.cache'
33
+ ).to_s
31
34
 
32
35
  module Conjur
33
36
  autoload :Config, 'conjur/config'
@@ -129,13 +129,14 @@ class Conjur::Command::Init < Conjur::Command
129
129
  sock = TCPSocket.new host, port.to_i
130
130
  ssock = SSLSocket.new sock
131
131
  ssock.connect
132
- cert = ssock.peer_cert
132
+ chain = ssock.peer_cert_chain
133
+ cert = chain.first
133
134
  fp = Digest::SHA1.digest cert.to_der
134
135
 
135
136
  # convert to hex, then split into bytes with :
136
137
  hexfp = (fp.unpack 'H*').first.upcase.scan(/../).join(':')
137
138
 
138
- ["SHA1 Fingerprint=#{hexfp}", cert.to_pem]
139
+ ["SHA1 Fingerprint=#{hexfp}", chain.map(&:to_pem).join]
139
140
  rescue
140
141
  exit_now! "Unable to retrieve certificate from #{connect_hostname}"
141
142
  ensure
@@ -1,6 +1,19 @@
1
1
  RSpec::Core::DSL.change_global_dsl do
2
2
  def describe_command *argv, &block
3
3
  describe *argv do
4
+ let(:cert_store) { double(:cert_store) }
5
+
6
+ before do
7
+ allow(cert_store).to receive(:add_file)
8
+ stub_const 'OpenSSL::SSL::SSLContext::DEFAULT_CERT_STORE', cert_store
9
+ end
10
+
11
+ let(:cert_store_options) do
12
+ {
13
+ ssl_cert_store: cert_store
14
+ }
15
+ end
16
+
4
17
  let(:invoke) do
5
18
  Conjur::CLI.error_device = $stderr
6
19
  # TODO: allow proper handling of description like "audit:send 'hello world'"
@@ -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.20.1"
22
+ VERSION = "4.21.0"
23
23
  ::Version=VERSION
24
24
  end
@@ -30,47 +30,47 @@ describe Conjur::Command::Groups, logged_in: true do
30
30
 
31
31
  describe_command "group:members:add group user:alice" do
32
32
  it "adds the role to the group" do
33
- expect(RestClient::Request).to receive(:execute).with(
33
+ expect(RestClient::Request).to receive(:execute).with({
34
34
  method: :put,
35
35
  url: "https://authz.example.com/the-account/roles/group/group/?members&member=user:alice",
36
36
  headers: {},
37
37
  payload: nil
38
- )
38
+ }.merge(cert_store_options))
39
39
  invoke
40
40
  end
41
41
  end
42
42
 
43
43
  describe_command "group:members:add -a group user:alice" do
44
44
  it "adds the role to the group with admin option" do
45
- expect(RestClient::Request).to receive(:execute).with(
45
+ expect(RestClient::Request).to receive(:execute).with({
46
46
  method: :put,
47
47
  url: "https://authz.example.com/the-account/roles/group/group/?members&member=user:alice",
48
48
  headers: {},
49
49
  payload: { admin_option: true }
50
- )
50
+ }.merge(cert_store_options))
51
51
  invoke
52
52
  end
53
53
  end
54
54
  describe_command "group:members:add -a group alice" do
55
55
  it "assumes that a nake member name is a user" do
56
- expect(RestClient::Request).to receive(:execute).with(
56
+ expect(RestClient::Request).to receive(:execute).with({
57
57
  method: :put,
58
58
  url: "https://authz.example.com/the-account/roles/group/group/?members&member=user:alice",
59
59
  headers: {},
60
60
  payload: { admin_option: true }
61
- )
61
+ }.merge(cert_store_options))
62
62
  invoke
63
63
  end
64
64
  end
65
65
 
66
66
  describe_command "group:members:add -r group alice" do
67
67
  it "revokes the admin rights" do
68
- expect(RestClient::Request).to receive(:execute).with(
68
+ expect(RestClient::Request).to receive(:execute).with({
69
69
  method: :put,
70
70
  url: "https://authz.example.com/the-account/roles/group/group/?members&member=user:alice",
71
71
  headers: {},
72
72
  payload: { admin_option: false }
73
- )
73
+ }.merge(cert_store_options))
74
74
  invoke
75
75
  end
76
76
  end
@@ -5,24 +5,24 @@ describe Conjur::Command::Hosts, logged_in: true do
5
5
 
6
6
  describe_command "host:create" do
7
7
  it "lets the server assign the id" do
8
- expect(RestClient::Request).to receive(:execute).with(
8
+ expect(RestClient::Request).to receive(:execute).with({
9
9
  method: :post,
10
10
  url: collection_url,
11
11
  headers: {},
12
12
  payload: {}
13
- ).and_return(post_response('assigned-id'))
13
+ }.merge(cert_store_options)).and_return(post_response('assigned-id'))
14
14
 
15
15
  expect { invoke }.to write({ id: 'assigned-id' }).to(:stdout)
16
16
  end
17
17
  end
18
18
  describe_command "host:create the-id" do
19
19
  it "propagates the user-assigned id" do
20
- expect(RestClient::Request).to receive(:execute).with(
20
+ expect(RestClient::Request).to receive(:execute).with({
21
21
  method: :post,
22
22
  url: collection_url,
23
23
  headers: {},
24
24
  payload: { id: 'the-id' }
25
- ).and_return(post_response('the-id'))
25
+ }.merge(cert_store_options)).and_return(post_response('the-id'))
26
26
 
27
27
  expect { invoke }.to write({ id: 'the-id' }).to(:stdout)
28
28
  end
@@ -44,7 +44,7 @@ describe Conjur::Command::Init do
44
44
  it "returns the right certificate from github" do
45
45
  fingerprint, certificate = Conjur::Command::Init.get_certificate('github.com:443')
46
46
  expect(fingerprint).to eq(GITHUB_FP)
47
- expect(certificate.strip).to eq(GITHUB_CERT.strip)
47
+ expect(certificate.strip).to include(GITHUB_CERT.strip)
48
48
  end
49
49
  end
50
50
 
@@ -57,14 +57,14 @@ describe Conjur::Command::Users, logged_in: true do
57
57
 
58
58
  context "updating password" do
59
59
  before do
60
- expect(RestClient::Request).to receive(:execute).with(
60
+ expect(RestClient::Request).to receive(:execute).with({
61
61
  method: :put,
62
62
  url: update_password_url,
63
63
  user: username,
64
64
  password: api_key,
65
65
  headers: { },
66
66
  payload: "new-password"
67
- )
67
+ }.merge(cert_store_options))
68
68
  end
69
69
 
70
70
  describe_command "user:update_password -p new-password" do
@@ -9,12 +9,12 @@ describe Conjur::Command::Variables, logged_in: true do
9
9
  describe_command "variable:create -m text/json -k password" do
10
10
  let(:id) { 'assigned-id' }
11
11
  it "lets the server assign the id" do
12
- expect(RestClient::Request).to receive(:execute).with(
12
+ expect(RestClient::Request).to receive(:execute).with({
13
13
  method: :post,
14
14
  url: collection_url,
15
15
  headers: {},
16
16
  payload: base_payload
17
- ).and_return(variable)
17
+ }.merge(cert_store_options)).and_return(variable)
18
18
 
19
19
  expect { invoke }.to write({ id: 'assigned-id' }).to(:stdout)
20
20
  end
@@ -22,12 +22,12 @@ describe Conjur::Command::Variables, logged_in: true do
22
22
 
23
23
  describe_command "variable:create -m text/json -k password the-id" do
24
24
  it "propagates the user-assigned id" do
25
- expect(RestClient::Request).to receive(:execute).with(
25
+ expect(RestClient::Request).to receive(:execute).with({
26
26
  method: :post,
27
27
  url: collection_url,
28
28
  headers: {},
29
29
  payload: base_payload.merge({ id: 'the-id' })
30
- ).and_return(variable)
30
+ }.merge(cert_store_options)).and_return(variable)
31
31
 
32
32
  expect { invoke }.to write({ id: 'the-id' }).to(:stdout)
33
33
  end
@@ -35,12 +35,12 @@ describe Conjur::Command::Variables, logged_in: true do
35
35
 
36
36
  describe_command "variable:create -m text/json -k password the-id the-value" do
37
37
  it "propagates the user-assigned id and value" do
38
- expect(RestClient::Request).to receive(:execute).with(
38
+ expect(RestClient::Request).to receive(:execute).with({
39
39
  method: :post,
40
40
  url: collection_url,
41
41
  headers: {},
42
42
  payload: base_payload.merge({ id: 'the-id', value: 'the-value' })
43
- ).and_return(variable)
43
+ }.merge(cert_store_options)).and_return(variable)
44
44
 
45
45
  expect { invoke }.to write({ id: 'the-id' }).to(:stdout)
46
46
  end
@@ -60,12 +60,12 @@ describe Conjur::Command::Variables, logged_in: true do
60
60
 
61
61
  describe_command "variable:create" do
62
62
  it "provides default values for optional parameters mime_type and kind" do
63
- expect(RestClient::Request).to receive(:execute).with(
63
+ expect(RestClient::Request).to receive(:execute).with({
64
64
  method: :post,
65
65
  url: collection_url,
66
66
  headers: {},
67
67
  payload: { mime_type: 'text/plain', kind: 'secret'}
68
- ).and_return(variable)
68
+ }.merge(cert_store_options)).and_return(variable)
69
69
  expect { invoke }.to write # invoke_silently
70
70
  end
71
71
  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.20.1
4
+ version: 4.21.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-02-17 00:00:00.000000000 Z
12
+ date: 2015-04-07 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.13.0
34
+ version: '4.14'
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.13.0
41
+ version: '4.14'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: gli
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -109,6 +109,20 @@ dependencies:
109
109
  - - '>='
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: xdg
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ type: :runtime
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
112
126
  - !ruby/object:Gem::Dependency
113
127
  name: cas_rest_client
114
128
  requirement: !ruby/object:Gem::Requirement