cred_hubble 0.0.1.pre → 0.1.0.pre
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/.gitignore +1 -0
- data/.rubocop.yml +7 -1
- data/.travis.yml +3 -1
- data/README.md +353 -13
- data/cred_hubble.gemspec +3 -0
- data/lib/cred_hubble.rb +3 -2
- data/lib/cred_hubble/client.rb +119 -13
- data/lib/cred_hubble/http/client.rb +39 -4
- data/lib/cred_hubble/resources/certificate_credential.rb +25 -0
- data/lib/cred_hubble/resources/credential.rb +32 -0
- data/lib/cred_hubble/resources/credential_collection.rb +21 -0
- data/lib/cred_hubble/resources/credential_factory.rb +41 -0
- data/lib/cred_hubble/resources/immutable_resource.rb +2 -2
- data/lib/cred_hubble/resources/json_credential.rb +13 -0
- data/lib/cred_hubble/resources/password_credential.rb +13 -0
- data/lib/cred_hubble/resources/permission.rb +10 -0
- data/lib/cred_hubble/resources/permission_collection.rb +21 -0
- data/lib/cred_hubble/resources/resource.rb +10 -0
- data/lib/cred_hubble/resources/resources.rb +15 -0
- data/lib/cred_hubble/resources/{base_resource.rb → rest_resource.rb} +6 -2
- data/lib/cred_hubble/resources/rsa_credential.rb +24 -0
- data/lib/cred_hubble/resources/ssh_credential.rb +39 -0
- data/lib/cred_hubble/resources/user_credential.rb +39 -0
- data/lib/cred_hubble/resources/value_credential.rb +13 -0
- data/lib/cred_hubble/version.rb +1 -1
- data/spec/cred_hubble/client_spec.rb +487 -3
- data/spec/cred_hubble/http/client_spec.rb +347 -53
- data/spec/cred_hubble/resources/certificate_credential_spec.rb +49 -0
- data/spec/cred_hubble/resources/credential_collection_spec.rb +59 -0
- data/spec/cred_hubble/resources/credential_factory_spec.rb +154 -0
- data/spec/cred_hubble/resources/credential_spec.rb +10 -0
- data/spec/cred_hubble/resources/json_credential_spec.rb +52 -0
- data/spec/cred_hubble/resources/password_credential_spec.rb +41 -0
- data/spec/cred_hubble/resources/permission_collection_spec.rb +87 -0
- data/spec/cred_hubble/resources/permission_spec.rb +36 -0
- data/spec/cred_hubble/resources/rsa_credential_spec.rb +46 -0
- data/spec/cred_hubble/resources/ssh_credential_spec.rb +73 -0
- data/spec/cred_hubble/resources/user_credential_spec.rb +72 -0
- data/spec/cred_hubble/resources/value_credential_spec.rb +42 -0
- data/spec/support/shared_examples/resource_examples.rb +49 -0
- metadata +57 -5
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe CredHubble::Resources::RsaCredential do
|
4
|
+
let(:json_response) do
|
5
|
+
'{
|
6
|
+
"id": "15811465-8538-460d-9682-5514d44439fd",
|
7
|
+
"name": "/rsa-key-1",
|
8
|
+
"type": "rsa",
|
9
|
+
"value": {
|
10
|
+
"public_key": "-----BEGIN PUBLIC KEY-----\n... PUBLIC KEY ...\n-----END PUBLIC KEY-----",
|
11
|
+
"private_key": "-----BEGIN RSA PRIVATE KEY-----\n... RSA PRIVATE KEY ...\n-----END RSA PRIVATE KEY-----"
|
12
|
+
},
|
13
|
+
"version_created_at": "1990-05-18T01:01:01Z"
|
14
|
+
}'
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '.from_json' do
|
18
|
+
subject { CredHubble::Resources::RsaCredential }
|
19
|
+
|
20
|
+
context 'when the JSON includes the required attributes' do
|
21
|
+
it 'instantiates a new RsaCredential object' do
|
22
|
+
credential = subject.from_json(json_response)
|
23
|
+
|
24
|
+
expect(credential).to be_a(CredHubble::Resources::RsaCredential)
|
25
|
+
expect(credential.value.public_key)
|
26
|
+
.to eq("-----BEGIN PUBLIC KEY-----\n... PUBLIC KEY ...\n-----END PUBLIC KEY-----")
|
27
|
+
expect(credential.value.private_key)
|
28
|
+
.to eq("-----BEGIN RSA PRIVATE KEY-----\n... RSA PRIVATE KEY ...\n-----END RSA PRIVATE KEY-----")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
it_behaves_like 'a Credential resource'
|
33
|
+
it_behaves_like 'a JSON deserializing resource'
|
34
|
+
end
|
35
|
+
|
36
|
+
describe '#type' do
|
37
|
+
it 'returns "rsa"' do
|
38
|
+
subject.type = 'attempting-to-overwrite'
|
39
|
+
expect(subject.type).to eq('rsa')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '#to_json' do
|
44
|
+
it_behaves_like 'a JSON serializing resource'
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe CredHubble::Resources::SshCredential do
|
4
|
+
let(:json_response) do
|
5
|
+
'{
|
6
|
+
"id": "15811465-8538-460d-9682-5514d44439fd",
|
7
|
+
"name": "/ssh-key-1",
|
8
|
+
"type": "ssh",
|
9
|
+
"value": {
|
10
|
+
"public_key": "ssh-rsa AAAAB3NzaC1y...",
|
11
|
+
"private_key": "-----BEGIN RSA PRIVATE KEY-----\n... RSA PRIVATE KEY ...\n-----END RSA PRIVATE KEY-----",
|
12
|
+
"public_key_fingerprint": "9db6ee01f7963db4e8c9966f3c425fd3feeadc148f37b428ddce2a458bd50da6"
|
13
|
+
},
|
14
|
+
"version_created_at": "1990-05-16T01:01:01Z"
|
15
|
+
}'
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '.from_json' do
|
19
|
+
subject { CredHubble::Resources::SshCredential }
|
20
|
+
|
21
|
+
context 'when the JSON includes the required attributes' do
|
22
|
+
it 'instantiates a new SshCredential object' do
|
23
|
+
credential = subject.from_json(json_response)
|
24
|
+
|
25
|
+
expect(credential).to be_a(CredHubble::Resources::SshCredential)
|
26
|
+
expect(credential.value.public_key).to eq('ssh-rsa AAAAB3NzaC1y...')
|
27
|
+
expect(credential.value.private_key)
|
28
|
+
.to eq("-----BEGIN RSA PRIVATE KEY-----\n... RSA PRIVATE KEY ...\n-----END RSA PRIVATE KEY-----")
|
29
|
+
expect(credential.value.public_key_fingerprint)
|
30
|
+
.to eq('9db6ee01f7963db4e8c9966f3c425fd3feeadc148f37b428ddce2a458bd50da6')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
it_behaves_like 'a Credential resource'
|
35
|
+
it_behaves_like 'a JSON deserializing resource'
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#type' do
|
39
|
+
it 'returns "ssh"' do
|
40
|
+
subject.type = 'attempting-to-overwrite'
|
41
|
+
expect(subject.type).to eq('ssh')
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '#to_json' do
|
46
|
+
it_behaves_like 'a JSON serializing resource'
|
47
|
+
end
|
48
|
+
|
49
|
+
describe '#attributes_for_put' do
|
50
|
+
context 'when value is present' do
|
51
|
+
it 'does not include the public_key_fingerprint' do
|
52
|
+
credential = CredHubble::Resources::SshCredential.from_json(json_response)
|
53
|
+
expect(credential.attributes_for_put[:value]).to_not have_key(:public_key_fingerprint)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context 'when value is not present' do
|
58
|
+
let(:json_response) do
|
59
|
+
'{
|
60
|
+
"id": "15811465-8538-460d-9682-5514d44439fd",
|
61
|
+
"name": "/root-ssh-user",
|
62
|
+
"type": "ssh",
|
63
|
+
"version_created_at": "1990-03-29T01:07:01Z"
|
64
|
+
}'
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'does not include a value' do
|
68
|
+
credential = CredHubble::Resources::SshCredential.from_json(json_response)
|
69
|
+
expect(credential.attributes_for_put[:value]).to be_nil
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe CredHubble::Resources::UserCredential do
|
4
|
+
let(:json_response) do
|
5
|
+
'{
|
6
|
+
"id": "15811465-8538-460d-9682-5514d44439fd",
|
7
|
+
"name": "/admin-user",
|
8
|
+
"type": "user",
|
9
|
+
"value": {
|
10
|
+
"username": "admin",
|
11
|
+
"password": "2582aaf15ec84e3fa3ba682152663a52",
|
12
|
+
"password_hash": "8efbef4cec28f228fa948daaf4893ac3638fbae81358ff9020be1d7a9a509fc6:1234"
|
13
|
+
},
|
14
|
+
"version_created_at": "1990-05-18T01:01:01Z"
|
15
|
+
}'
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '.from_json' do
|
19
|
+
subject { CredHubble::Resources::UserCredential }
|
20
|
+
|
21
|
+
context 'when the JSON includes the required attributes' do
|
22
|
+
it 'instantiates a new UserCredential object' do
|
23
|
+
credential = subject.from_json(json_response)
|
24
|
+
|
25
|
+
expect(credential).to be_a(CredHubble::Resources::UserCredential)
|
26
|
+
expect(credential.value.username).to eq('admin')
|
27
|
+
expect(credential.value.password).to eq('2582aaf15ec84e3fa3ba682152663a52')
|
28
|
+
expect(credential.value.password_hash)
|
29
|
+
.to eq('8efbef4cec28f228fa948daaf4893ac3638fbae81358ff9020be1d7a9a509fc6:1234')
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
it_behaves_like 'a Credential resource'
|
34
|
+
it_behaves_like 'a JSON deserializing resource'
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#type' do
|
38
|
+
it 'returns "user"' do
|
39
|
+
subject.type = 'attempting-to-overwrite'
|
40
|
+
expect(subject.type).to eq('user')
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#to_json' do
|
45
|
+
it_behaves_like 'a JSON serializing resource'
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#attributes_for_put' do
|
49
|
+
context 'when value is present' do
|
50
|
+
it 'does not include the password_hash' do
|
51
|
+
credential = CredHubble::Resources::UserCredential.from_json(json_response)
|
52
|
+
expect(credential.attributes_for_put[:value]).to_not have_key(:password_hash)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'when value is not present' do
|
57
|
+
let(:json_response) do
|
58
|
+
'{
|
59
|
+
"id": "15811465-8538-460d-9682-5514d44439fd",
|
60
|
+
"name": "/admin-user",
|
61
|
+
"type": "user",
|
62
|
+
"version_created_at": "1990-05-18T01:01:01Z"
|
63
|
+
}'
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'does not a value' do
|
67
|
+
credential = CredHubble::Resources::UserCredential.from_json(json_response)
|
68
|
+
expect(credential.attributes_for_put[:value]).to be_nil
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe CredHubble::Resources::ValueCredential do
|
4
|
+
subject { CredHubble::Resources::ValueCredential.new }
|
5
|
+
|
6
|
+
let(:json_response) do
|
7
|
+
'{
|
8
|
+
"id": "cdbb371a-cc03-4a6f-aa21-c6461d66ed96",
|
9
|
+
"name": "/the-grid",
|
10
|
+
"type": "value",
|
11
|
+
"value": "biodigital-jazz-man",
|
12
|
+
"version_created_at": "1985-01-01T01:01:01Z"
|
13
|
+
}'
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '.from_json' do
|
17
|
+
subject { CredHubble::Resources::ValueCredential }
|
18
|
+
|
19
|
+
context 'when the JSON includes the required attributes' do
|
20
|
+
it 'instantiates a new ValueCredential object' do
|
21
|
+
credential = subject.from_json(json_response)
|
22
|
+
|
23
|
+
expect(credential).to be_a(CredHubble::Resources::ValueCredential)
|
24
|
+
expect(credential.value).to eq('biodigital-jazz-man')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it_behaves_like 'a Credential resource'
|
29
|
+
it_behaves_like 'a JSON deserializing resource'
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#type' do
|
33
|
+
it 'returns "value"' do
|
34
|
+
subject.type = 'attempting-to-overwrite'
|
35
|
+
expect(subject.type).to eq('value')
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#to_json' do
|
40
|
+
it_behaves_like 'a JSON serializing resource'
|
41
|
+
end
|
42
|
+
end
|
@@ -13,3 +13,52 @@ RSpec.shared_examples 'a JSON deserializing resource' do
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
16
|
+
|
17
|
+
RSpec.shared_examples 'a JSON serializing resource' do
|
18
|
+
describe '#to_json' do
|
19
|
+
it 'correctly serializes complex attributes as JSON' do
|
20
|
+
expect(JSON.parse(described_class.from_json(json_response).to_json)).to eq(JSON.parse(json_response))
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
RSpec.shared_examples 'a Credential resource' do
|
26
|
+
describe '.from_json' do
|
27
|
+
context 'when the JSON includes the required attributes' do
|
28
|
+
let(:json_response) do
|
29
|
+
'{
|
30
|
+
"id": "cdbb371a-cc03-4a6f-aa21-c6461d66ed96",
|
31
|
+
"name": "/the-grid",
|
32
|
+
"type": "value",
|
33
|
+
"version_created_at": "1985-01-01T01:01:01Z"
|
34
|
+
}'
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'instantiates a new Credential object with the correct values' do
|
38
|
+
credential = subject.from_json(json_response)
|
39
|
+
|
40
|
+
expect(credential).to be_a(CredHubble::Resources::Credential)
|
41
|
+
expect(credential.id).to eq('cdbb371a-cc03-4a6f-aa21-c6461d66ed96')
|
42
|
+
expect(credential.name).to eq('/the-grid')
|
43
|
+
expect(credential.version_created_at).to eq('1985-01-01T01:01:01Z')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#attributes_for_put' do
|
48
|
+
let(:json_response) do
|
49
|
+
'{
|
50
|
+
"id": "cdbb371a-cc03-4a6f-aa21-c6461d66ed96",
|
51
|
+
"name": "/the-grid",
|
52
|
+
"type": "value",
|
53
|
+
"version_created_at": "1985-01-01T01:01:01Z"
|
54
|
+
}'
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'returns only the attributes that can be updated with CredHub' do
|
58
|
+
credential = subject.from_json(json_response)
|
59
|
+
expect(credential.attributes_for_put.keys).to_not include :id
|
60
|
+
expect(credential.attributes_for_put.keys).to_not include :version_created_at
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cred_hubble
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.1.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Downey
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09
|
11
|
+
date: 2017-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -50,6 +50,20 @@ dependencies:
|
|
50
50
|
- - "<"
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '2.0'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: addressable
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '2.0'
|
60
|
+
type: :runtime
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '2.0'
|
53
67
|
- !ruby/object:Gem::Dependency
|
54
68
|
name: bundler
|
55
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -145,15 +159,41 @@ files:
|
|
145
159
|
- lib/cred_hubble/exceptions/error.rb
|
146
160
|
- lib/cred_hubble/http/client.rb
|
147
161
|
- lib/cred_hubble/http/errors.rb
|
148
|
-
- lib/cred_hubble/resources/
|
162
|
+
- lib/cred_hubble/resources/certificate_credential.rb
|
163
|
+
- lib/cred_hubble/resources/credential.rb
|
164
|
+
- lib/cred_hubble/resources/credential_collection.rb
|
165
|
+
- lib/cred_hubble/resources/credential_factory.rb
|
149
166
|
- lib/cred_hubble/resources/health.rb
|
150
167
|
- lib/cred_hubble/resources/immutable_resource.rb
|
151
168
|
- lib/cred_hubble/resources/info.rb
|
169
|
+
- lib/cred_hubble/resources/json_credential.rb
|
170
|
+
- lib/cred_hubble/resources/password_credential.rb
|
171
|
+
- lib/cred_hubble/resources/permission.rb
|
172
|
+
- lib/cred_hubble/resources/permission_collection.rb
|
173
|
+
- lib/cred_hubble/resources/resource.rb
|
174
|
+
- lib/cred_hubble/resources/resources.rb
|
175
|
+
- lib/cred_hubble/resources/rest_resource.rb
|
176
|
+
- lib/cred_hubble/resources/rsa_credential.rb
|
177
|
+
- lib/cred_hubble/resources/ssh_credential.rb
|
178
|
+
- lib/cred_hubble/resources/user_credential.rb
|
179
|
+
- lib/cred_hubble/resources/value_credential.rb
|
152
180
|
- lib/cred_hubble/version.rb
|
153
181
|
- spec/cred_hubble/client_spec.rb
|
154
182
|
- spec/cred_hubble/http/client_spec.rb
|
183
|
+
- spec/cred_hubble/resources/certificate_credential_spec.rb
|
184
|
+
- spec/cred_hubble/resources/credential_collection_spec.rb
|
185
|
+
- spec/cred_hubble/resources/credential_factory_spec.rb
|
186
|
+
- spec/cred_hubble/resources/credential_spec.rb
|
155
187
|
- spec/cred_hubble/resources/health_spec.rb
|
156
188
|
- spec/cred_hubble/resources/info_spec.rb
|
189
|
+
- spec/cred_hubble/resources/json_credential_spec.rb
|
190
|
+
- spec/cred_hubble/resources/password_credential_spec.rb
|
191
|
+
- spec/cred_hubble/resources/permission_collection_spec.rb
|
192
|
+
- spec/cred_hubble/resources/permission_spec.rb
|
193
|
+
- spec/cred_hubble/resources/rsa_credential_spec.rb
|
194
|
+
- spec/cred_hubble/resources/ssh_credential_spec.rb
|
195
|
+
- spec/cred_hubble/resources/user_credential_spec.rb
|
196
|
+
- spec/cred_hubble/resources/value_credential_spec.rb
|
157
197
|
- spec/cred_hubble_spec.rb
|
158
198
|
- spec/spec_helper.rb
|
159
199
|
- spec/support/shared_examples/resource_examples.rb
|
@@ -167,9 +207,9 @@ require_paths:
|
|
167
207
|
- lib
|
168
208
|
required_ruby_version: !ruby/object:Gem::Requirement
|
169
209
|
requirements:
|
170
|
-
- - "
|
210
|
+
- - "~>"
|
171
211
|
- !ruby/object:Gem::Version
|
172
|
-
version: '
|
212
|
+
version: '2.1'
|
173
213
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
214
|
requirements:
|
175
215
|
- - ">"
|
@@ -185,8 +225,20 @@ summary: Unofficial Ruby Client for interacting with the Cloud Foundry CredHub c
|
|
185
225
|
test_files:
|
186
226
|
- spec/cred_hubble/client_spec.rb
|
187
227
|
- spec/cred_hubble/http/client_spec.rb
|
228
|
+
- spec/cred_hubble/resources/certificate_credential_spec.rb
|
229
|
+
- spec/cred_hubble/resources/credential_collection_spec.rb
|
230
|
+
- spec/cred_hubble/resources/credential_factory_spec.rb
|
231
|
+
- spec/cred_hubble/resources/credential_spec.rb
|
188
232
|
- spec/cred_hubble/resources/health_spec.rb
|
189
233
|
- spec/cred_hubble/resources/info_spec.rb
|
234
|
+
- spec/cred_hubble/resources/json_credential_spec.rb
|
235
|
+
- spec/cred_hubble/resources/password_credential_spec.rb
|
236
|
+
- spec/cred_hubble/resources/permission_collection_spec.rb
|
237
|
+
- spec/cred_hubble/resources/permission_spec.rb
|
238
|
+
- spec/cred_hubble/resources/rsa_credential_spec.rb
|
239
|
+
- spec/cred_hubble/resources/ssh_credential_spec.rb
|
240
|
+
- spec/cred_hubble/resources/user_credential_spec.rb
|
241
|
+
- spec/cred_hubble/resources/value_credential_spec.rb
|
190
242
|
- spec/cred_hubble_spec.rb
|
191
243
|
- spec/spec_helper.rb
|
192
244
|
- spec/support/shared_examples/resource_examples.rb
|