omnijack 0.2.0 → 1.0.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -16,13 +16,15 @@
16
16
  # See the License for the specific language governing permissions and
17
17
  # limitations under the License.
18
18
 
19
- require 'json'
20
- require_relative '../spec_helper'
21
- require_relative '../../lib/omnijack/metadata'
19
+ require 'multi_json'
20
+ require_relative '../../spec_helper'
21
+ require_relative '../../../lib/omnijack/endpoint/metadata'
22
22
 
23
- describe Omnijack::Metadata do
23
+ describe Omnijack::Endpoint::Metadata do
24
24
  let(:name) { :chef_dk }
25
- let(:args) { nil }
25
+ let(:args) do
26
+ { platform: 'linspire', platform_version: '3.3.3', machine_arch: 'risc' }
27
+ end
26
28
  let(:obj) { described_class.new(name, args) }
27
29
 
28
30
  before(:each) do
@@ -30,28 +32,35 @@ describe Omnijack::Metadata do
30
32
  end
31
33
 
32
34
  describe '#initialize' do
33
- it 'initializes the object hash data' do
34
- expect_any_instance_of(described_class).to receive(:to_h).and_return(true)
35
- obj
36
- end
37
-
38
- {
39
- platform: 'linspire',
40
- platform_version: '3.3.3',
41
- machine_arch: 'risc'
42
- }.each do |k, v|
43
- context "a #{k} arg provided" do
44
- let(:args) { { k => v } }
45
-
46
- it 'sets the given arg' do
35
+ context 'the required args provided' do
36
+ {
37
+ platform: 'linspire', platform_version: '3.3.3', machine_arch: 'risc'
38
+ }.each do |k, v|
39
+ it "sets the given #{k}" do
47
40
  expect(obj.send(k)).to eq(v)
48
41
  expect(obj.instance_variable_get(:"@#{k}")).to eq(v)
49
42
  end
50
43
  end
51
44
  end
52
45
 
46
+ [:platform, :platform_version, :machine_arch].each do |i|
47
+ context "missing #{i} arg" do
48
+ let(:args) do
49
+ a = super()
50
+ a.delete(i) && a
51
+ end
52
+
53
+ it 'raises an error' do
54
+ expect { obj }.to raise_error(Chef::Exceptions::ValidationFailed)
55
+ end
56
+ end
57
+ end
58
+
53
59
  context 'an invalid arg provided' do
54
- let(:args) { { potatoes: 'peeled' } }
60
+ let(:args) do
61
+ a = super()
62
+ a.merge!(potatoes: 'peeled') && a
63
+ end
55
64
 
56
65
  it 'raises an exception' do
57
66
  expect { obj }.to raise_error(NoMethodError)
@@ -72,26 +81,6 @@ describe Omnijack::Metadata do
72
81
  end
73
82
  end
74
83
 
75
- describe '#[]' do
76
- let(:attributes) do
77
- [:url, :md5, :sha256, :yolo, :filename, :version, :build]
78
- end
79
-
80
- before(:each) do
81
- allow_any_instance_of(described_class).to receive(:to_h)
82
- .and_return(attributes.each_with_object({}) do |a, hsh|
83
- hsh[a] = "#{a} things"
84
- hsh
85
- end)
86
- end
87
-
88
- [:url, :md5, :sha256, :yolo, :filename, :version, :build].each do |a|
89
- it "returns the correct #{a}" do
90
- expect(obj[a]).to eq("#{a} things")
91
- end
92
- end
93
- end
94
-
95
84
  describe '#to_h' do
96
85
  before(:each) do
97
86
  allow_any_instance_of(described_class).to receive(:to_h)
@@ -108,13 +97,13 @@ describe Omnijack::Metadata do
108
97
  'afd487ab6f0cd0286a0a3d2808a041c784c064eddb6193d688edfb6741065b56'
109
98
  end
110
99
  let(:yolo) { true }
111
- let(:raw_metadata) do
100
+ let(:raw_data) do
112
101
  "url\t#{url}\nmd5\t#{md5}\nsha256\t#{sha256}\nyolo\t#{yolo}"
113
102
  end
114
103
 
115
104
  before(:each) do
116
- allow_any_instance_of(described_class).to receive(:raw_metadata)
117
- .and_return(raw_metadata)
105
+ allow_any_instance_of(described_class).to receive(:raw_data)
106
+ .and_return(raw_data)
118
107
  end
119
108
 
120
109
  it 'returns the correct result hash' do
@@ -150,13 +139,13 @@ describe Omnijack::Metadata do
150
139
  'b9ecab8f2ebb258c3bdc341ab82310dfbfc8b8a5b27802481f27daf607ba7f99'
151
140
  end
152
141
  let(:yolo) { true }
153
- let(:raw_metadata) do
142
+ let(:raw_data) do
154
143
  "url\t#{url}\nmd5\t#{md5}\nsha256\t#{sha256}\nyolo\t#{yolo}"
155
144
  end
156
145
 
157
146
  before(:each) do
158
- allow_any_instance_of(described_class).to receive(:raw_metadata)
159
- .and_return(raw_metadata)
147
+ allow_any_instance_of(described_class).to receive(:raw_data)
148
+ .and_return(raw_data)
160
149
  end
161
150
 
162
151
  it 'decodes the encoded URL' do
@@ -169,9 +158,9 @@ describe Omnijack::Metadata do
169
158
  end
170
159
  end
171
160
 
172
- json = ::File.open(File.expand_path('../../support/real_test_data.json',
161
+ json = ::File.open(File.expand_path('../../../support/real_test_data.json',
173
162
  __FILE__)).read
174
- JSON.parse(json, symbolize_names: true).each do |data|
163
+ MultiJson.load(json, symbolize_names: true).each do |data|
175
164
  context "#{data[:platform]} Chef-DK" do
176
165
  let(:obj) do
177
166
  described_class.new(:chef_dk,
@@ -194,18 +183,6 @@ describe Omnijack::Metadata do
194
183
  end
195
184
  end
196
185
 
197
- describe '#to_s' do
198
- let(:raw_metadata) { 'SOME METADATA' }
199
- before(:each) do
200
- allow_any_instance_of(described_class).to receive(:raw_metadata)
201
- .and_return(raw_metadata)
202
- end
203
-
204
- it 'returns the raw metadata string' do
205
- expect(obj.to_s).to eq(raw_metadata)
206
- end
207
- end
208
-
209
186
  describe '#version' do
210
187
  context 'no argument provided' do
211
188
  it 'returns latest' do
@@ -306,29 +283,23 @@ describe Omnijack::Metadata do
306
283
  end
307
284
 
308
285
  describe '#platform' do
309
- let(:node) { { platform: 'ms_dos' } }
310
-
311
- before(:each) do
312
- allow_any_instance_of(described_class).to receive(:node).and_return(node)
313
- end
314
-
315
286
  context 'no argument provided' do
316
- it 'uses the node Ohai data' do
317
- res = obj
318
- expect(res.platform).to eq('ms_dos')
319
- expect(res.instance_variable_get(:@platform)).to eq('ms_dos')
287
+ it 'returns the initialized arg' do
288
+ expected = args[:platform]
289
+ expect(obj.platform).to eq(expected)
290
+ expect(obj.instance_variable_get(:@platform)).to eq(expected)
320
291
  end
321
292
  end
322
293
 
323
294
  context 'a valid argument provided' do
324
295
  let(:obj) do
325
296
  o = super()
326
- o.platform('ms_bob') && o
297
+ o.platform('ms_dos') && o
327
298
  end
328
299
 
329
300
  it 'uses the provided arg' do
330
- expect(obj.platform).to eq('ms_bob')
331
- expect(obj.instance_variable_get(:@platform)).to eq('ms_bob')
301
+ expect(obj.platform).to eq('ms_dos')
302
+ expect(obj.instance_variable_get(:@platform)).to eq('ms_dos')
332
303
  end
333
304
  end
334
305
 
@@ -345,16 +316,11 @@ describe Omnijack::Metadata do
345
316
  end
346
317
 
347
318
  describe '#platform_version' do
348
- let(:node) { { platform_version: '1.2.3' } }
349
-
350
- before(:each) do
351
- allow_any_instance_of(described_class).to receive(:node).and_return(node)
352
- end
353
-
354
319
  context 'no argument provided' do
355
- it 'uses the node Ohai data' do
356
- expect(obj.platform_version).to eq('1.2.3')
357
- expect(obj.instance_variable_get(:@platform_version)).to eq('1.2.3')
320
+ it 'returns the initialized arg' do
321
+ expected = args[:platform_version]
322
+ expect(obj.platform_version).to eq(expected)
323
+ expect(obj.instance_variable_get(:@platform_version)).to eq(expected)
358
324
  end
359
325
  end
360
326
 
@@ -383,17 +349,11 @@ describe Omnijack::Metadata do
383
349
  end
384
350
 
385
351
  describe '#machine_arch' do
386
- let(:node) { { kernel: { machine: 'x86_64' } } }
387
-
388
- before(:each) do
389
- allow_any_instance_of(described_class).to receive(:node).and_return(node)
390
- end
391
-
392
352
  context 'no argument provided' do
393
- it 'uses the node Ohai data' do
394
- res = obj
395
- expect(res.machine_arch).to eq('x86_64')
396
- expect(res.instance_variable_get(:@machine_arch)).to eq('x86_64')
353
+ it 'returns the initialized arg' do
354
+ expected = args[:machine_arch]
355
+ expect(obj.machine_arch).to eq(expected)
356
+ expect(obj.instance_variable_get(:@machine_arch)).to eq(expected)
397
357
  end
398
358
  end
399
359
 
@@ -421,33 +381,17 @@ describe Omnijack::Metadata do
421
381
  end
422
382
  end
423
383
 
424
- describe '#raw_metadata' do
425
- let(:open) { double(read: 'SOME STUFF') }
426
-
427
- before(:each) do
428
- allow_any_instance_of(URI::HTTP).to receive(:open).and_return(open)
429
- end
430
-
431
- it 'returns a GET of the API URL' do
432
- expect(obj.send(:raw_metadata)).to eq('SOME STUFF')
433
- expect(obj.instance_variable_get(:@raw_metadata)).to eq('SOME STUFF')
434
- end
435
- end
436
-
437
384
  describe '#api_url' do
438
- let(:base_url) { 'http://example.com/chef' }
439
- let(:endpoint) { '/metadata-example' }
440
- let(:query_params) { { v: '1.2.3', p: 'ubuntu' } }
385
+ let(:query_params) { { v: '1.2.3', p: 'ubuntu', pv: '12.04' } }
441
386
 
442
387
  before(:each) do
443
- [:base_url, :endpoint, :query_params].each do |i|
444
- allow_any_instance_of(described_class).to receive(i).and_return(send(i))
445
- end
388
+ allow_any_instance_of(described_class).to receive(:query_params)
389
+ .and_return(query_params)
446
390
  end
447
391
 
448
- it 'constructs a URL based on base + endpoint + params' do
449
- expected = URI.parse('http://example.com/chef/metadata-example?' \
450
- 'v=1.2.3&p=ubuntu')
392
+ it 'returns the appropriate metadata endpoint' do
393
+ expected = URI.parse('https://www.getchef.com/chef/metadata-chefdk?' \
394
+ 'v=1.2.3&p=ubuntu&pv=12.04')
451
395
  expect(obj.send(:api_url)).to eq(expected)
452
396
  end
453
397
  end
@@ -479,101 +423,15 @@ describe Omnijack::Metadata do
479
423
  end
480
424
  end
481
425
 
482
- describe '#endpoint' do
483
- let(:name) { 'chef_container' }
484
-
485
- it 'returns the appropriate metadata endpoint' do
486
- expect(obj.send(:endpoint)).to eq('/metadata-container')
487
- end
488
- end
489
-
490
- describe '#node' do
491
- let(:platform) { nil }
492
- let(:platform_version) { nil }
493
- let(:system) do
494
- double(all_plugins: [
495
- double(data: { platform: platform, platform_version: platform_version })
496
- ])
497
- end
498
-
499
- before(:each) do
500
- unless platform.nil? || platform_version.nil?
501
- allow(Ohai::System).to receive(:new).and_return(system)
502
- end
503
- end
504
-
505
- it 'loads and returns Ohai platform data' do
506
- node = obj.send(:node)
507
- expect(node[:platform]).to be_an_instance_of(String)
508
- expect(node[:platform_version]).to be_an_instance_of(String)
509
- end
510
-
511
- context 'Mac OS X' do
512
- let(:platform) { 'mac_os_x' }
513
- let(:platform_version) { '10.9.2' }
514
-
515
- it 'calls the custom Mac OS X version logic' do
516
- o = obj
517
- expect(o).to receive(:platform_version_mac_os_x).and_call_original
518
- expect(o.send(:node)[:platform_version]).to eq('10.9')
519
- end
520
- end
521
-
522
- context 'Windows' do
523
- let(:platform) { 'windows' }
524
- let(:platform_version) { '6.3' }
525
-
526
- it 'calls the custom Windows version logic' do
527
- o = obj
528
- expect(o).to receive(:platform_version_windows).and_call_original
529
- expect(o.send(:node)[:platform_version]).to eq('2012r2')
530
- end
531
- end
532
-
533
- context 'CentOS' do
534
- let(:platform) { 'centos' }
535
- let(:platform_version) { '7.0' }
536
-
537
- it 'does not modify the version' do
538
- expect(obj.send(:node)[:platform_version]).to eq('7.0')
539
- end
540
- end
541
-
542
- context 'Ubuntu' do
543
- let(:platform) { 'ubuntu' }
544
- let(:platform_version) { '14.04' }
545
-
546
- it 'does not modify the version' do
547
- expect(obj.send(:node)[:platform_version]).to eq('14.04')
548
- end
549
- end
550
- end
551
-
552
426
  describe '#platform_version_mac_os_x' do
553
- let(:node) { { platform_version: platform_version } }
554
-
555
- before(:each) do
556
- allow_any_instance_of(described_class).to receive(:node).and_return(node)
557
- end
558
-
559
427
  { '10.9' => '10.9', '10.9.4' => '10.9' }.each do |ver, expected|
560
- context "Mac OS X version #{ver}" do
561
- let(:platform_version) { ver }
562
-
563
- it "returns Mac OSX #{expected}" do
564
- expect(obj.send(:platform_version_mac_os_x)).to eq(expected)
565
- end
428
+ it "returns #{expected} for Mac OS X #{ver}" do
429
+ expect(obj.send(:platform_version_mac_os_x, ver)).to eq(expected)
566
430
  end
567
431
  end
568
432
  end
569
433
 
570
434
  describe '#platform_version_windows' do
571
- let(:node) { { platform_version: platform_version } }
572
-
573
- before(:each) do
574
- allow_any_instance_of(described_class).to receive(:node).and_return(node)
575
- end
576
-
577
435
  {
578
436
  '6.3.123456.789' => '2012r2',
579
437
  '6.2.123456.789' => '2012',
@@ -583,12 +441,8 @@ describe Omnijack::Metadata do
583
441
  '5.1.123456.789' => 'xp',
584
442
  '5.0.123456.789' => '2000'
585
443
  }.each do |ver, expected|
586
- context "Windows version #{ver}" do
587
- let(:platform_version) { ver }
588
-
589
- it "returns Windows #{expected}" do
590
- expect(obj.send(:platform_version_windows)).to eq(expected)
591
- end
444
+ it "returns #{expected} for Windows #{ver}" do
445
+ expect(obj.send(:platform_version_windows, ver)).to eq(expected)
592
446
  end
593
447
  end
594
448
  end
@@ -0,0 +1,33 @@
1
+ # Encoding: UTF-8
2
+ #
3
+ # Author:: Jonathan Hartman (<j@p4nt5.com>)
4
+ #
5
+ # Copyright (C) 2014, Jonathan Hartman
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+
19
+ require_relative '../../spec_helper'
20
+ require_relative '../../../lib/omnijack/endpoint/platforms'
21
+
22
+ describe Omnijack::Endpoint::Platforms do
23
+ let(:name) { :chef_dk }
24
+ let(:obj) { described_class.new(name) }
25
+
26
+ describe '#endpoint' do
27
+ let(:name) { :chef_container }
28
+
29
+ it 'returns the appropriate metadata endpoint' do
30
+ expect(obj.send(:endpoint)).to eq('/chef_container_platform_names')
31
+ end
32
+ end
33
+ end
@@ -17,11 +17,43 @@
17
17
  # limitations under the License.
18
18
 
19
19
  require_relative '../spec_helper'
20
- require_relative '../../lib/omnijack/list'
20
+ require_relative '../../lib/omnijack/endpoint'
21
21
 
22
- describe Omnijack::List do
22
+ describe Omnijack::Endpoint do
23
23
  let(:name) { :chef_dk }
24
- let(:obj) { described_class.new(name) }
24
+ let(:args) { {} }
25
+ let(:obj) { described_class.new(name, args) }
26
+
27
+ describe '#initialize' do
28
+ shared_examples_for 'any context' do
29
+ it 'sets the project name' do
30
+ expect(obj.name).to eq(:chef_dk)
31
+ expect(obj.instance_variable_get(:@name)).to eq(:chef_dk)
32
+ end
33
+ end
34
+
35
+ context 'no extra args provided' do
36
+ let(:obj) { described_class.new(name) }
37
+
38
+ it_behaves_like 'any context'
39
+
40
+ it 'holds an empty hash for the args' do
41
+ expect(obj.args).to eq({})
42
+ expect(obj.instance_variable_get(:@args)).to eq({})
43
+ end
44
+ end
45
+
46
+ context 'a base_url arg provided' do
47
+ let(:args) { { base_url: 'https://example.com' } }
48
+
49
+ it_behaves_like 'any context'
50
+
51
+ it 'sets the given arg' do
52
+ expect(obj.send(:base_url)).to eq(args[:base_url])
53
+ expect(obj.instance_variable_get(:@base_url)).to eq(args[:base_url])
54
+ end
55
+ end
56
+ end
25
57
 
26
58
  describe '#method_missing' do
27
59
  let(:to_h) { { thing1: 'yup', thing2: 'nope', thing3: 'maybe' } }
@@ -70,8 +102,14 @@ describe Omnijack::List do
70
102
  end
71
103
 
72
104
  context 'real data' do
105
+ let(:endpoint) { '/full_client_list' }
73
106
  let(:obj) { described_class.new(:chef) }
74
107
 
108
+ before(:each) do
109
+ allow_any_instance_of(described_class).to receive(:endpoint)
110
+ .and_return(endpoint)
111
+ end
112
+
75
113
  it 'returns the expected data' do
76
114
  expected = '/el/6/i686/chef-10.12.0-1.el6.i686.rpm'
77
115
  expect(obj.to_h[:suse][:'12.1'][:i686][:'10.12.0-1']).to eq(expected)
@@ -87,17 +125,53 @@ describe Omnijack::List do
87
125
  .and_return(raw_data)
88
126
  end
89
127
 
90
- it 'returns the raw HTTP GET string' do
91
- expect(obj.to_s).to eq(raw_data)
128
+ it 'returns the raw data' do
129
+ expect(obj.to_s).to eq('SOME STUFF')
130
+ end
131
+ end
132
+
133
+ describe '#base_url' do
134
+ context 'no argument provided' do
135
+ it 'uses the default' do
136
+ res = obj
137
+ expected = 'https://www.getchef.com/chef'
138
+ expect(res.base_url).to eq(expected)
139
+ expect(res.instance_variable_get(:@base_url)).to eq(expected)
140
+ end
141
+ end
142
+
143
+ context 'a valid argument provided' do
144
+ let(:obj) do
145
+ o = super()
146
+ o.base_url('http://example.com') && o
147
+ end
148
+
149
+ it 'uses the provided arg' do
150
+ expect(obj.base_url).to eq('http://example.com')
151
+ expect(obj.instance_variable_get(:@base_url))
152
+ .to eq('http://example.com')
153
+ end
154
+ end
155
+
156
+ context 'an invalid argument provided' do
157
+ let(:obj) do
158
+ o = super()
159
+ o.base_url(:hello) && o
160
+ end
161
+
162
+ it 'raises an exception' do
163
+ expect { obj }.to raise_error(Chef::Exceptions::ValidationFailed)
164
+ end
92
165
  end
93
166
  end
94
167
 
95
168
  describe '#raw_data' do
96
169
  let(:read) { '{"thing1": "yup", "thing2": "nope"}' }
97
- let(:open) { double(read: read) }
170
+ let(:api_url) { double(open: double(read: read)) }
98
171
 
99
172
  before(:each) do
100
- allow_any_instance_of(URI::HTTP).to receive(:open).and_return(open)
173
+ allow_any_instance_of(described_class).to receive(:api_url)
174
+ .and_return(api_url)
101
175
  end
102
176
 
103
177
  it 'returns a GET of the API URL' do
@@ -124,10 +198,15 @@ describe Omnijack::List do
124
198
  end
125
199
 
126
200
  describe '#endpoint' do
127
- let(:name) { :chef_container }
201
+ let(:name) { :cook }
202
+
203
+ before(:each) do
204
+ stub_const('::Omnijack::Endpoint::OMNITRUCK_PROJECTS',
205
+ cook: { endpoints: { endpoint: '/there' } })
206
+ end
128
207
 
129
208
  it 'returns the appropriate metadata endpoint' do
130
- expect(obj.send(:endpoint)).to eq('/full_container_list')
209
+ expect(obj.send(:endpoint)).to eq('/there')
131
210
  end
132
211
  end
133
212
  end
@@ -20,28 +20,32 @@ require_relative '../spec_helper'
20
20
  require_relative '../../lib/omnijack/project'
21
21
 
22
22
  describe Omnijack::Project do
23
- let(:args) { nil }
23
+ let(:args) { {} }
24
24
  let(:obj) { described_class.new(:chef_dk, args) }
25
25
 
26
26
  describe '#list' do
27
27
  it 'returns a List object' do
28
28
  res = obj
29
29
  [res.list, res.instance_variable_get(:@list)].each do |i|
30
- expect(i).to be_an_instance_of(Omnijack::List)
30
+ expect(i).to be_an_instance_of(Omnijack::Endpoint::List)
31
31
  end
32
32
  end
33
33
  end
34
34
 
35
35
  describe '#metadata' do
36
+ let(:args) do
37
+ { platform: 'ms_dos', platform_version: '1.2.3', machine_arch: 'i386' }
38
+ end
39
+
36
40
  before(:each) do
37
- allow_any_instance_of(Omnijack::Metadata).to receive(:to_h)
41
+ allow_any_instance_of(Omnijack::Endpoint::Metadata).to receive(:to_h)
38
42
  .and_return(true)
39
43
  end
40
44
 
41
45
  it 'returns a Metadata object' do
42
46
  res = obj
43
47
  [res.metadata, res.instance_variable_get(:@metadata)].each do |i|
44
- expect(i).to be_an_instance_of(Omnijack::Metadata)
48
+ expect(i).to be_an_instance_of(Omnijack::Endpoint::Metadata)
45
49
  end
46
50
  end
47
51
  end
@@ -50,7 +54,7 @@ describe Omnijack::Project do
50
54
  it 'returns a Platforms object' do
51
55
  res = obj
52
56
  [res.platforms, res.instance_variable_get(:@platforms)].each do |i|
53
- expect(i).to be_an_instance_of(Omnijack::Platforms)
57
+ expect(i).to be_an_instance_of(Omnijack::Endpoint::Platforms)
54
58
  end
55
59
  end
56
60
  end
@@ -53,50 +53,6 @@ describe Omnijack do
53
53
  expect(obj.instance_variable_get(:@args)).to eq(args)
54
54
  end
55
55
  end
56
-
57
- context 'a base_url arg provided' do
58
- let(:args) { { base_url: 'https://example.com' } }
59
-
60
- it 'sets the given arg' do
61
- expect(obj.send(:base_url)).to eq(args[:base_url])
62
- expect(obj.instance_variable_get(:@base_url)).to eq(args[:base_url])
63
- end
64
- end
65
- end
66
-
67
- describe '#base_url' do
68
- context 'no argument provided' do
69
- it 'uses the default' do
70
- res = obj
71
- expected = 'https://www.getchef.com/chef'
72
- expect(res.base_url).to eq(expected)
73
- expect(res.instance_variable_get(:@base_url)).to eq(expected)
74
- end
75
- end
76
-
77
- context 'a valid argument provided' do
78
- let(:obj) do
79
- o = super()
80
- o.base_url('http://example.com') && o
81
- end
82
-
83
- it 'uses the provided arg' do
84
- expect(obj.base_url).to eq('http://example.com')
85
- expect(obj.instance_variable_get(:@base_url))
86
- .to eq('http://example.com')
87
- end
88
- end
89
-
90
- context 'an invalid argument provided' do
91
- let(:obj) do
92
- o = super()
93
- o.base_url(:hello) && o
94
- end
95
-
96
- it 'raises an exception' do
97
- expect { obj }.to raise_error(Chef::Exceptions::ValidationFailed)
98
- end
99
- end
100
56
  end
101
57
 
102
58
  describe '#name' do
@@ -106,4 +62,12 @@ describe Omnijack do
106
62
  expect(obj.name).to eq(:chef_container)
107
63
  end
108
64
  end
65
+
66
+ describe '#args' do
67
+ let(:args) { { platform: 'thing' } }
68
+
69
+ it 'returns the provided args' do
70
+ expect(obj.args).to eq(args)
71
+ end
72
+ end
109
73
  end