chef-api 0.8.0 → 0.10.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/lib/chef-api.rb +19 -20
  3. data/lib/chef-api/aclable.rb +35 -0
  4. data/lib/chef-api/authentication.rb +23 -25
  5. data/lib/chef-api/configurable.rb +14 -14
  6. data/lib/chef-api/connection.rb +68 -67
  7. data/lib/chef-api/defaults.rb +25 -24
  8. data/lib/chef-api/error_collection.rb +1 -1
  9. data/lib/chef-api/errors.rb +3 -3
  10. data/lib/chef-api/log.rb +7 -0
  11. data/lib/chef-api/multipart.rb +17 -17
  12. data/lib/chef-api/resource.rb +17 -15
  13. data/lib/chef-api/resources/base.rb +22 -22
  14. data/lib/chef-api/resources/client.rb +5 -3
  15. data/lib/chef-api/resources/collection_proxy.rb +4 -3
  16. data/lib/chef-api/resources/cookbook.rb +2 -2
  17. data/lib/chef-api/resources/cookbook_version.rb +1 -1
  18. data/lib/chef-api/resources/data_bag.rb +4 -4
  19. data/lib/chef-api/resources/data_bag_item.rb +2 -3
  20. data/lib/chef-api/resources/environment.rb +1 -1
  21. data/lib/chef-api/resources/group.rb +15 -0
  22. data/lib/chef-api/resources/node.rb +11 -8
  23. data/lib/chef-api/resources/organization.rb +2 -2
  24. data/lib/chef-api/resources/partial_search.rb +4 -4
  25. data/lib/chef-api/resources/principal.rb +1 -1
  26. data/lib/chef-api/resources/role.rb +2 -1
  27. data/lib/chef-api/resources/search.rb +6 -6
  28. data/lib/chef-api/resources/user.rb +3 -3
  29. data/lib/chef-api/util.rb +8 -8
  30. data/lib/chef-api/validator.rb +3 -3
  31. data/lib/chef-api/validators/base.rb +3 -3
  32. data/lib/chef-api/validators/required.rb +1 -1
  33. data/lib/chef-api/validators/type.rb +1 -1
  34. data/lib/chef-api/version.rb +1 -1
  35. metadata +25 -58
  36. data/.gitignore +0 -21
  37. data/.travis.yml +0 -18
  38. data/CHANGELOG.md +0 -63
  39. data/Gemfile +0 -12
  40. data/README.md +0 -352
  41. data/Rakefile +0 -11
  42. data/chef-api.gemspec +0 -25
  43. data/spec/integration/resources/client_spec.rb +0 -62
  44. data/spec/integration/resources/environment_spec.rb +0 -8
  45. data/spec/integration/resources/node_spec.rb +0 -8
  46. data/spec/integration/resources/partial_search_spec.rb +0 -23
  47. data/spec/integration/resources/role_spec.rb +0 -8
  48. data/spec/integration/resources/search_spec.rb +0 -21
  49. data/spec/integration/resources/user_spec.rb +0 -8
  50. data/spec/spec_helper.rb +0 -32
  51. data/spec/support/chef_server.rb +0 -198
  52. data/spec/support/cookbook.tar.gz +0 -0
  53. data/spec/support/shared/chef_api_resource.rb +0 -91
  54. data/spec/support/user.pem +0 -27
  55. data/spec/unit/authentication_spec.rb +0 -70
  56. data/spec/unit/defaults_spec.rb +0 -60
  57. data/spec/unit/errors_spec.rb +0 -294
  58. data/spec/unit/resources/base_spec.rb +0 -49
  59. data/spec/unit/resources/client_spec.rb +0 -53
  60. data/spec/unit/resources/connection_spec.rb +0 -53
@@ -1,49 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module ChefAPI
4
- describe Resource::Base do
5
- before do
6
- # Unset all instance variables (which are actually cached on the parent
7
- # class) to prevent caching.
8
- described_class.instance_variables.each do |instance_variable|
9
- described_class.send(:remove_instance_variable, instance_variable)
10
- end
11
- end
12
-
13
- describe '.schema' do
14
- it 'sets the schema for the class' do
15
- block = Proc.new {}
16
- described_class.schema(&block)
17
- expect(described_class.schema).to be_a(Schema)
18
- end
19
- end
20
-
21
- describe '.collection_path' do
22
- it 'raises an exception if the collection name is not set' do
23
- expect {
24
- described_class.collection_path
25
- }.to raise_error(ArgumentError, 'collection_path not set for Class')
26
- end
27
-
28
- it 'sets the collection name' do
29
- described_class.collection_path('bacons')
30
- expect(described_class.collection_path).to eq('bacons')
31
- end
32
-
33
- it 'converts the symbol to a string' do
34
- described_class.collection_path(:bacons)
35
- expect(described_class.collection_path).to eq('bacons')
36
- end
37
- end
38
-
39
- describe '.build' do
40
- it 'creates a new instance' do
41
- allow(described_class).to receive(:new)
42
- allow(described_class).to receive(:schema).and_return(double(attributes: {}))
43
-
44
- expect(described_class).to receive(:new).with({foo: 'bar'}, {})
45
- described_class.build(foo: 'bar')
46
- end
47
- end
48
- end
49
- end
@@ -1,53 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module ChefAPI
4
- describe Resource::Client do
5
- describe '.initialize' do
6
- it 'converts an x509 certificate to a public key' do
7
- certificate = <<-EOH.gsub(/^ {10}/, '')
8
- -----BEGIN CERTIFICATE-----
9
- MIIDOjCCAqOgAwIBAgIEkT9umDANBgkqhkiG9w0BAQUFADCBnjELMAkGA1UEBhMC
10
- VVMxEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUxFjAUBgNV
11
- BAoMDU9wc2NvZGUsIEluYy4xHDAaBgNVBAsME0NlcnRpZmljYXRlIFNlcnZpY2Ux
12
- MjAwBgNVBAMMKW9wc2NvZGUuY29tL2VtYWlsQWRkcmVzcz1hdXRoQG9wc2NvZGUu
13
- Y29tMCAXDTEzMDYwNzE3NDcxNloYDzIxMDIwNzIyMTc0NzE2WjCBnTEQMA4GA1UE
14
- BxMHU2VhdHRsZTETMBEGA1UECBMKV2FzaGluZ3RvbjELMAkGA1UEBhMCVVMxHDAa
15
- BgNVBAsTE0NlcnRpZmljYXRlIFNlcnZpY2UxFjAUBgNVBAoTDU9wc2NvZGUsIElu
16
- Yy4xMTAvBgNVBAMUKFVSSTpodHRwOi8vb3BzY29kZS5jb20vR1VJRFMvY2xpZW50
17
- X2d1aWQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCko42znqDzryvE
18
- aB1DBHLFpjLZ7aWrTJQJJUvQhMFTE/1nisa+1bw8MvOYnGDSp2j6V7XJsJgZFsAW
19
- 7w5TTBHrYRAz0Boi+uaQ3idqfGI5na/dRt2MqFnwJYqvm7z+LeeYbGlXFNnhUInt
20
- OjZD6AtrvuTGAEVdyIznsOMsLun/KWy9zG0+C+6vCnxGga+Z+xZ56JrBvWoWeIjG
21
- kO0J6E3uqyzAC8FwN6xnyaHNlvODE+40MuioVJ52oLikTwaVe3T+vSJQoCu1lz7c
22
- AbdszAhDW2p+GVvBBjAXLNi/w27heDQKBQOS+6tHJAX3WeFj0xgE5Bryae67E0q8
23
- hM4WPL6PAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAWlBQBu8kzhSA4TuHJNyngRAJ
24
- WXHus2brJZHaaZYMbzZMq+lklMbdw8NZBay+qVqN/latgQ7fjY9RSSdhCTeSITyw
25
- gn8s3zeFS7C6nwrzYNAQXTRJZoSgn32hgZoD1H0LjW5vcoqiYZOHvX3EOySboS09
26
- bAELUrq85D+uVns9C5A=
27
- -----END CERTIFICATE-----
28
- EOH
29
-
30
- instance = described_class.new(certificate: certificate)
31
- expect(instance.public_key).to eq <<-EOH.gsub(/^ {10}/, '')
32
- -----BEGIN PUBLIC KEY-----
33
- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApKONs56g868rxGgdQwRy
34
- xaYy2e2lq0yUCSVL0ITBUxP9Z4rGvtW8PDLzmJxg0qdo+le1ybCYGRbAFu8OU0wR
35
- 62EQM9AaIvrmkN4nanxiOZ2v3UbdjKhZ8CWKr5u8/i3nmGxpVxTZ4VCJ7To2Q+gL
36
- a77kxgBFXciM57DjLC7p/ylsvcxtPgvurwp8RoGvmfsWeeiawb1qFniIxpDtCehN
37
- 7qsswAvBcDesZ8mhzZbzgxPuNDLoqFSedqC4pE8GlXt0/r0iUKArtZc+3AG3bMwI
38
- Q1tqfhlbwQYwFyzYv8Nu4Xg0CgUDkvurRyQF91nhY9MYBOQa8mnuuxNKvITOFjy+
39
- jwIDAQAB
40
- -----END PUBLIC KEY-----
41
- EOH
42
- end
43
- end
44
-
45
- describe '#regenerate_keys' do
46
- it 'raises an error if the client is not persisted to the server' do
47
- expect {
48
- described_class.new.regenerate_keys
49
- }.to raise_error(Error::CannotRegenerateKey)
50
- end
51
- end
52
- end
53
- end
@@ -1,53 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module ChefAPI
4
- describe Connection do
5
- shared_examples 'a proxy for' do |resource, klass|
6
- context "##{resource}" do
7
- it 'sets Thread.current to self' do
8
- subject.send(resource)
9
- expect(Thread.current['chefapi.connection']).to be(subject)
10
- end
11
-
12
- it "returns an instance of #{klass}" do
13
- # Fuck you Ruby 1.9.3
14
- expected = klass.split('::').inject(ChefAPI) { |c, i| c.const_get(i) }
15
-
16
- expect(subject.send(resource)).to be(expected)
17
- end
18
- end
19
- end
20
-
21
- it_behaves_like 'a proxy for', :clients, 'Resource::Client'
22
- it_behaves_like 'a proxy for', :data_bags, 'Resource::DataBag'
23
- it_behaves_like 'a proxy for', :environments, 'Resource::Environment'
24
- it_behaves_like 'a proxy for', :nodes, 'Resource::Node'
25
- it_behaves_like 'a proxy for', :partial_search, 'Resource::PartialSearch'
26
- it_behaves_like 'a proxy for', :principals, 'Resource::Principal'
27
- it_behaves_like 'a proxy for', :roles, 'Resource::Role'
28
- it_behaves_like 'a proxy for', :search, 'Resource::Search'
29
- it_behaves_like 'a proxy for', :users, 'Resource::User'
30
-
31
- context '#initialize' do
32
- context 'when options are given' do
33
- let(:endpoint) { 'http://endpoint.gov' }
34
-
35
- it 'sets the option' do
36
- instance = described_class.new(endpoint: endpoint)
37
- expect(instance.endpoint).to eq(endpoint)
38
- end
39
-
40
- it 'uses the default options' do
41
- instance = described_class.new
42
- expect(instance.endpoint).to eq(ChefAPI.endpoint)
43
- end
44
- end
45
-
46
- context 'when a block is given' do
47
- it 'yields self' do
48
- expect { |b| described_class.new(&b) }.to yield_with_args(described_class)
49
- end
50
- end
51
- end
52
- end
53
- end