heirloom 0.3.1 → 0.4.0
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.
- data/CHANGELOG +7 -0
- data/README.md +1 -1
- data/Rakefile +6 -0
- data/lib/heirloom/archive/builder.rb +29 -29
- data/lib/heirloom/archive/destroyer.rb +27 -18
- data/lib/heirloom/archive/downloader.rb +12 -14
- data/lib/heirloom/archive/lister.rb +2 -1
- data/lib/heirloom/archive/reader.rb +22 -15
- data/lib/heirloom/archive/updater.rb +2 -1
- data/lib/heirloom/archive.rb +5 -2
- data/lib/heirloom/aws/simpledb.rb +15 -2
- data/lib/heirloom/cli/authorize.rb +12 -7
- data/lib/heirloom/cli/build.rb +29 -20
- data/lib/heirloom/cli/destroy.rb +11 -4
- data/lib/heirloom/cli/download.rb +11 -4
- data/lib/heirloom/cli/list.rb +15 -6
- data/lib/heirloom/cli/shared.rb +10 -1
- data/lib/heirloom/cli/show.rb +14 -5
- data/lib/heirloom/cli/update.rb +14 -6
- data/lib/heirloom/cli.rb +1 -2
- data/lib/heirloom/directory/directory.rb +16 -18
- data/lib/heirloom/directory/git_directory.rb +1 -1
- data/lib/heirloom/uploader/s3.rb +4 -3
- data/lib/heirloom/version.rb +1 -1
- data/spec/archive/builder_spec.rb +60 -58
- data/spec/archive/destroyer_spec.rb +9 -10
- data/spec/archive/downloader_spec.rb +2 -2
- data/spec/archive/lister_spec.rb +1 -1
- data/spec/archive/reader_spec.rb +92 -81
- data/spec/archive/updater_spec.rb +1 -1
- data/spec/archive_spec.rb +15 -6
- data/spec/aws/simpledb_spec.rb +35 -0
- data/spec/cli/authorize_spec.rb +34 -0
- data/spec/cli/build_spec.rb +57 -0
- data/spec/cli/destroy_spec.rb +33 -0
- data/spec/cli/download_spec.rb +37 -0
- data/spec/cli/list_spec.rb +34 -0
- data/spec/cli/shared_spec.rb +68 -34
- data/spec/cli/show_spec.rb +34 -0
- data/spec/cli/update_spec.rb +37 -0
- data/spec/directory/directory_spec.rb +13 -20
- data/spec/directory/git_directory_spec.rb +23 -22
- metadata +28 -14
data/spec/archive/reader_spec.rb
CHANGED
@@ -5,102 +5,113 @@ describe Heirloom do
|
|
5
5
|
before do
|
6
6
|
@sdb_mock = mock 'sdb'
|
7
7
|
@config_mock = double 'config'
|
8
|
-
@
|
9
|
-
@config_mock.should_receive(:logger).and_return @
|
8
|
+
@logger_stub = stub :debug => true
|
9
|
+
@config_mock.should_receive(:logger).and_return @logger_stub
|
10
10
|
Heirloom::AWS::SimpleDB.should_receive(:new).and_return @sdb_mock
|
11
11
|
@reader = Heirloom::Reader.new :config => @config_mock,
|
12
12
|
:name => 'tim',
|
13
13
|
:id => '123'
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
@reader.show.should == { 'value' => 'details' }
|
21
|
-
end
|
16
|
+
context "domain does exist" do
|
17
|
+
before do
|
18
|
+
@sdb_mock.stub :domain_exists? => true
|
19
|
+
end
|
22
20
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
21
|
+
it "should show the item record" do
|
22
|
+
@sdb_mock.should_receive(:select).
|
23
|
+
with("select * from heirloom_tim where itemName() = '123'").
|
24
|
+
and_return( { '123' => { 'value' => [ 'details' ] } } )
|
25
|
+
@reader.show.should == { 'value' => 'details' }
|
26
|
+
end
|
29
27
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
end
|
28
|
+
it "should return an empty hash if item does not exist" do
|
29
|
+
@sdb_mock.should_receive(:select).
|
30
|
+
with("select * from heirloom_tim where itemName() = '123'").
|
31
|
+
and_return({})
|
32
|
+
@reader.show.should == {}
|
33
|
+
end
|
37
34
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
end
|
35
|
+
it "should return true if the record exists" do
|
36
|
+
@sdb_mock.should_receive(:select).
|
37
|
+
with("select * from heirloom_tim where itemName() = '123'").
|
38
|
+
and_return( { '123' => { 'value' => [ 'details' ] } } )
|
39
|
+
@reader.exists?.should == true
|
40
|
+
end
|
45
41
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
{ 'us-west-1-s3-url' =>
|
53
|
-
[ 's3://the-bucket/the-buck/the-key' ]
|
54
|
-
}
|
55
|
-
} )
|
56
|
-
@reader.get_bucket(:region => 'us-west-1').should == 'the-bucket'
|
57
|
-
end
|
42
|
+
it "should return false if the record does not exist" do
|
43
|
+
@sdb_mock.should_receive(:select).
|
44
|
+
with("select * from heirloom_tim where itemName() = '123'").
|
45
|
+
and_return({})
|
46
|
+
@reader.exists?.should == false
|
47
|
+
end
|
58
48
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
49
|
+
it "should return the bucket if it exists" do
|
50
|
+
@sdb_mock.should_receive(:select).
|
51
|
+
exactly(3).times.
|
52
|
+
with("select * from heirloom_tim where itemName() = '123'").
|
53
|
+
and_return( { '123' =>
|
54
|
+
{ 'us-west-1-s3-url' =>
|
55
|
+
[ 's3://the-bucket/the-buck/the-key' ]
|
56
|
+
}
|
57
|
+
} )
|
58
|
+
@reader.get_bucket(:region => 'us-west-1').should == 'the-bucket'
|
59
|
+
end
|
67
60
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
61
|
+
it "should return nil if the key does not exist" do
|
62
|
+
@sdb_mock.should_receive(:select).
|
63
|
+
exactly(1).times.
|
64
|
+
with("select * from heirloom_tim where itemName() = '123'").
|
65
|
+
and_return( { } )
|
66
|
+
@reader.get_key(:region => 'us-west-1').should == nil
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should return nil if the bucket does not exist" do
|
70
|
+
@sdb_mock.should_receive(:select).
|
71
|
+
exactly(1).times.
|
72
|
+
with("select * from heirloom_tim where itemName() = '123'").
|
73
|
+
and_return( { } )
|
74
|
+
@reader.get_bucket(:region => 'us-west-1').should == nil
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should return the key if it exists" do
|
78
|
+
@sdb_mock.should_receive(:select).
|
79
|
+
exactly(6).times.
|
80
|
+
with("select * from heirloom_tim where itemName() = '123'").
|
81
|
+
and_return( { '123' =>
|
82
|
+
{ 'us-west-1-s3-url' =>
|
83
|
+
['s3://the-url/the-bucket/the-key']
|
84
|
+
}
|
85
|
+
} )
|
86
|
+
@reader.get_key(:region => 'us-west-1').should == 'the-bucket/the-key'
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should return the regions the archive has been uploaded to" do
|
90
|
+
@sdb_mock.should_receive(:select).
|
91
|
+
exactly(1).times.
|
92
|
+
with("select * from heirloom_tim where itemName() = '123'").
|
93
|
+
and_return( { '123' =>
|
94
|
+
{ 'us-west-1-s3-url' =>
|
95
|
+
['s3://the-url-us-west-1/the-bucket/the-key'],
|
96
|
+
'build_by' =>
|
97
|
+
['user'],
|
98
|
+
'us-east-1-s3-url' =>
|
99
|
+
['s3://the-url-us-east-1/the-bucket/the-key']
|
100
|
+
}
|
101
|
+
} )
|
102
|
+
@reader.regions.should == ['us-west-1', 'us-east-1']
|
103
|
+
end
|
80
104
|
|
81
|
-
it "should return nil if the key does not exist" do
|
82
|
-
@logger_mock.should_receive(:debug).exactly(1).times
|
83
|
-
@sdb_mock.should_receive(:select).
|
84
|
-
exactly(1).times.
|
85
|
-
with("select * from tim where itemName() = '123'").
|
86
|
-
and_return( { } )
|
87
|
-
@reader.get_key(:region => 'us-west-1').should == nil
|
88
105
|
end
|
89
106
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
['user'],
|
99
|
-
'us-east-1-s3-url' =>
|
100
|
-
['s3://the-url-us-east-1/the-bucket/the-key']
|
101
|
-
}
|
102
|
-
} )
|
103
|
-
@reader.regions.should == ['us-west-1', 'us-east-1']
|
107
|
+
context "domain does not exist" do
|
108
|
+
before do
|
109
|
+
@sdb_mock.stub :domain_exists? => false
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should return false if the simpledb domain does not exist" do
|
113
|
+
@reader.exists?.should == false
|
114
|
+
end
|
104
115
|
end
|
105
116
|
|
106
117
|
end
|
@@ -18,7 +18,7 @@ describe Heirloom do
|
|
18
18
|
with(:config => @config_mock).
|
19
19
|
and_return sdb_mock
|
20
20
|
sdb_mock.should_receive(:put_attributes).
|
21
|
-
with('
|
21
|
+
with('heirloom_tim', '123', { 'attr' => 'val' }, { :replace => 'attr' })
|
22
22
|
@updater.update :attribute => 'attr',
|
23
23
|
:value => 'val'
|
24
24
|
end
|
data/spec/archive_spec.rb
CHANGED
@@ -3,12 +3,10 @@ require 'spec_helper'
|
|
3
3
|
describe Heirloom do
|
4
4
|
|
5
5
|
before do
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
:name => 'chef',
|
11
|
-
:id => '123'
|
6
|
+
@config_mock = mock 'config'
|
7
|
+
@archive = Heirloom::Archive.new :config => @config_mock,
|
8
|
+
:name => 'chef',
|
9
|
+
:id => '123'
|
12
10
|
end
|
13
11
|
|
14
12
|
|
@@ -191,5 +189,16 @@ describe Heirloom do
|
|
191
189
|
mock.should_receive(:regions)
|
192
190
|
@archive.regions
|
193
191
|
end
|
192
|
+
|
193
|
+
it "should call the count method for an archive" do
|
194
|
+
mock = double('Mock')
|
195
|
+
Heirloom::Reader.should_receive(:new).
|
196
|
+
with(:config => @config_mock,
|
197
|
+
:name => 'chef',
|
198
|
+
:id => '123').
|
199
|
+
and_return mock
|
200
|
+
mock.should_receive(:count)
|
201
|
+
@archive.count
|
202
|
+
end
|
194
203
|
end
|
195
204
|
end
|
data/spec/aws/simpledb_spec.rb
CHANGED
@@ -30,6 +30,11 @@ describe Heirloom do
|
|
30
30
|
@sdb.create_domain('new_domain')
|
31
31
|
end
|
32
32
|
|
33
|
+
it "should destroy the specified domain" do
|
34
|
+
@fog_mock.should_receive(:delete_domain).with('new_domain')
|
35
|
+
@sdb.delete_domain('new_domain')
|
36
|
+
end
|
37
|
+
|
33
38
|
it "should not create a new domain when already exists" do
|
34
39
|
@sdb.should_receive(:domains).and_return(['new_domain'])
|
35
40
|
@fog_mock.should_receive(:create_domain).exactly(0).times
|
@@ -47,4 +52,34 @@ describe Heirloom do
|
|
47
52
|
@sdb.delete('domain', 'key')
|
48
53
|
end
|
49
54
|
|
55
|
+
it "should count the number of entries in the domain" do
|
56
|
+
body_mock = mock 'return body'
|
57
|
+
data = { 'Items' => { 'Domain' => { 'Count' => ['1'] } } }
|
58
|
+
@fog_mock.should_receive(:select).
|
59
|
+
with('SELECT count(*) FROM heirloom_domain').
|
60
|
+
and_return body_mock
|
61
|
+
body_mock.should_receive(:body).and_return data
|
62
|
+
@sdb.count('heirloom_domain').should == 1
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should return true if no entries for the domain" do
|
66
|
+
body_mock = mock 'return body'
|
67
|
+
data = { 'Items' => { 'Domain' => { 'Count' => ['0'] } } }
|
68
|
+
@fog_mock.should_receive(:select).
|
69
|
+
with('SELECT count(*) FROM heirloom_domain').
|
70
|
+
and_return body_mock
|
71
|
+
body_mock.should_receive(:body).and_return data
|
72
|
+
@sdb.domain_empty?('heirloom_domain').should be_true
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should return false if entries exist for the domain" do
|
76
|
+
body_mock = mock 'return body'
|
77
|
+
data = { 'Items' => { 'Domain' => { 'Count' => ['50'] } } }
|
78
|
+
@fog_mock.should_receive(:select).
|
79
|
+
with('SELECT count(*) FROM heirloom_domain').
|
80
|
+
and_return body_mock
|
81
|
+
body_mock.should_receive(:body).and_return data
|
82
|
+
@sdb.domain_empty?('heirloom_domain').should be_false
|
83
|
+
end
|
84
|
+
|
50
85
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'heirloom/cli'
|
3
|
+
|
4
|
+
describe Heirloom do
|
5
|
+
|
6
|
+
before do
|
7
|
+
options = { :level => 'info',
|
8
|
+
:accounts => ['test@test.com'],
|
9
|
+
:name => 'archive_name',
|
10
|
+
:id => '1.0.0' }
|
11
|
+
@logger_mock = mock 'logger'
|
12
|
+
@config_mock = mock 'config'
|
13
|
+
@archive_mock = mock 'archive'
|
14
|
+
Trollop.stub(:options).and_return options
|
15
|
+
Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
|
16
|
+
and_return @logger_mock
|
17
|
+
Heirloom::CLI::Authorize.any_instance.should_receive(:load_config).
|
18
|
+
with(:logger => @logger_mock,
|
19
|
+
:opts => options).
|
20
|
+
and_return @config_mock
|
21
|
+
Heirloom::Archive.should_receive(:new).
|
22
|
+
with(:id => '1.0.0',
|
23
|
+
:name => 'archive_name',
|
24
|
+
:config => @config_mock).
|
25
|
+
and_return @archive_mock
|
26
|
+
@cli_authorize = Heirloom::CLI::Authorize.new
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should authorize an account" do
|
30
|
+
@archive_mock.should_receive(:authorize).with ['test@test.com']
|
31
|
+
@cli_authorize.authorize
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'heirloom/cli'
|
3
|
+
|
4
|
+
describe Heirloom do
|
5
|
+
|
6
|
+
before do
|
7
|
+
options = { :level => 'info',
|
8
|
+
:base_prefix => 'base',
|
9
|
+
:git => false,
|
10
|
+
:exclude => ['exclude1', 'exclude2'],
|
11
|
+
:region => ['us-west-1', 'us-west-2'],
|
12
|
+
:directory => '/buildme',
|
13
|
+
:public => false,
|
14
|
+
:name => 'archive_name',
|
15
|
+
:id => '1.0.0' }
|
16
|
+
|
17
|
+
@logger_stub = stub :error => true, :info => true
|
18
|
+
@config_mock = mock 'config'
|
19
|
+
@archive_mock = mock 'archive'
|
20
|
+
Trollop.stub(:options).and_return options
|
21
|
+
Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
|
22
|
+
and_return @logger_stub
|
23
|
+
Heirloom::CLI::Build.any_instance.should_receive(:load_config).
|
24
|
+
with(:logger => @logger_stub,
|
25
|
+
:opts => options).
|
26
|
+
and_return @config_mock
|
27
|
+
Heirloom::Archive.should_receive(:new).
|
28
|
+
with(:id => '1.0.0',
|
29
|
+
:name => 'archive_name',
|
30
|
+
:config => @config_mock).
|
31
|
+
and_return @archive_mock
|
32
|
+
@build = Heirloom::CLI::Build.new
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should build an account" do
|
36
|
+
@archive_mock.should_receive(:buckets_exist?).
|
37
|
+
with(:bucket_prefix => 'base',
|
38
|
+
:regions => ["us-west-1", "us-west-2"]).
|
39
|
+
and_return true
|
40
|
+
@archive_mock.stub :exists? => false
|
41
|
+
@archive_mock.should_receive(:build).
|
42
|
+
with(:bucket_prefix => 'base',
|
43
|
+
:directory => '/buildme',
|
44
|
+
:exclude => ["exclude1", "exclude2"],
|
45
|
+
:git => false).
|
46
|
+
and_return '/tmp/build123.tar.gz'
|
47
|
+
@archive_mock.should_receive(:upload).
|
48
|
+
with(:bucket_prefix => 'base',
|
49
|
+
:regions => ['us-west-1', 'us-west-2'],
|
50
|
+
:public_readable => false,
|
51
|
+
:file => '/tmp/build123.tar.gz')
|
52
|
+
@archive_mock.should_receive(:cleanup)
|
53
|
+
|
54
|
+
@build.build
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'heirloom/cli'
|
3
|
+
|
4
|
+
describe Heirloom do
|
5
|
+
|
6
|
+
before do
|
7
|
+
options = { :name => 'archive_name',
|
8
|
+
:id => '1.0.0',
|
9
|
+
:level => 'info' }
|
10
|
+
@logger_mock = mock 'logger'
|
11
|
+
@config_mock = mock 'config'
|
12
|
+
@archive_mock = mock 'archive'
|
13
|
+
Trollop.stub(:options).and_return options
|
14
|
+
Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
|
15
|
+
and_return @logger_mock
|
16
|
+
Heirloom::CLI::Destroy.any_instance.should_receive(:load_config).
|
17
|
+
with(:logger => @logger_mock,
|
18
|
+
:opts => options).
|
19
|
+
and_return @config_mock
|
20
|
+
Heirloom::Archive.should_receive(:new).
|
21
|
+
with(:id => '1.0.0',
|
22
|
+
:name => 'archive_name',
|
23
|
+
:config => @config_mock).
|
24
|
+
and_return @archive_mock
|
25
|
+
@cli_destroy = Heirloom::CLI::Destroy.new
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should destroy an archive" do
|
29
|
+
@archive_mock.should_receive(:destroy)
|
30
|
+
@cli_destroy.destroy
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'heirloom/cli'
|
3
|
+
|
4
|
+
describe Heirloom do
|
5
|
+
|
6
|
+
before do
|
7
|
+
options = { :name => 'archive_name',
|
8
|
+
:id => '1.0.0',
|
9
|
+
:level => 'info',
|
10
|
+
:output => '/tmp/test123',
|
11
|
+
:region => 'us-east-1' }
|
12
|
+
@logger_mock = mock 'logger'
|
13
|
+
@config_mock = mock 'config'
|
14
|
+
@archive_mock = mock 'archive'
|
15
|
+
Trollop.stub(:options).and_return options
|
16
|
+
Heirloom::HeirloomLogger.should_receive(:new).
|
17
|
+
with(:log_level => 'info').
|
18
|
+
and_return @logger_mock
|
19
|
+
Heirloom::CLI::Download.any_instance.should_receive(:load_config).
|
20
|
+
with(:logger => @logger_mock,
|
21
|
+
:opts => options).
|
22
|
+
and_return @config_mock
|
23
|
+
Heirloom::Archive.should_receive(:new).
|
24
|
+
with(:id => '1.0.0',
|
25
|
+
:name => 'archive_name',
|
26
|
+
:config => @config_mock).
|
27
|
+
and_return @archive_mock
|
28
|
+
@cli_download = Heirloom::CLI::Download.new
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should download an archive" do
|
32
|
+
@archive_mock.should_receive(:download).with :output => '/tmp/test123',
|
33
|
+
:region => 'us-east-1'
|
34
|
+
@cli_download.download
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'heirloom/cli'
|
3
|
+
|
4
|
+
describe Heirloom do
|
5
|
+
|
6
|
+
before do
|
7
|
+
options = { :name => 'archive_name',
|
8
|
+
:level => 'info',
|
9
|
+
:count => 100 }
|
10
|
+
@logger_stub = stub :debug => true
|
11
|
+
@config_mock = mock 'config'
|
12
|
+
@archive_mock = mock 'archive'
|
13
|
+
Trollop.stub(:options).and_return options
|
14
|
+
Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
|
15
|
+
and_return @logger_stub
|
16
|
+
Heirloom::CLI::List.any_instance.should_receive(:load_config).
|
17
|
+
with(:logger => @logger_stub,
|
18
|
+
:opts => options).
|
19
|
+
and_return @config_mock
|
20
|
+
Heirloom::Archive.should_receive(:new).
|
21
|
+
with(:name => 'archive_name',
|
22
|
+
:config => @config_mock).
|
23
|
+
and_return @archive_mock
|
24
|
+
@archive_mock.should_receive(:count)
|
25
|
+
@cli_list = Heirloom::CLI::List.new
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should list ids for given archive" do
|
29
|
+
@archive_mock.should_receive(:list).with(100).and_return(['1','2'])
|
30
|
+
@cli_list.should_receive(:jj).with ['1','2']
|
31
|
+
@cli_list.list
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
data/spec/cli/shared_spec.rb
CHANGED
@@ -1,45 +1,79 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
require 'heirloom/cli
|
3
|
+
require 'heirloom/cli'
|
4
4
|
|
5
5
|
describe Heirloom do
|
6
|
-
before do
|
7
|
-
@logger_mock = mock 'logger'
|
8
|
-
end
|
9
6
|
|
10
|
-
|
11
|
-
@logger_mock.should_receive(:error)
|
12
|
-
Heirloom::CLI::Shared.valid_options?(:provided => { :array => [],
|
13
|
-
:string => 'present' },
|
14
|
-
:required => [:array, :string],
|
15
|
-
:logger => @logger_mock).
|
16
|
-
should be_false
|
17
|
-
end
|
7
|
+
context "testing valid_options?" do
|
18
8
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
9
|
+
before do
|
10
|
+
@logger_mock = mock 'logger'
|
11
|
+
@object = Object.new
|
12
|
+
@object.extend Heirloom::CLI::Shared
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return false if a required array is emtpy" do
|
16
|
+
@logger_mock.should_receive(:error)
|
17
|
+
@object.valid_options?(:provided => { :array => [],
|
18
|
+
:string => 'present' },
|
19
|
+
:required => [:array, :string],
|
20
|
+
:logger => @logger_mock).should be_false
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should return false if a required string is nil" do
|
24
|
+
@logger_mock.should_receive(:error)
|
25
|
+
@object.valid_options?(:provided => { :array => ['present'],
|
26
|
+
:string => nil },
|
27
|
+
:required => [:array, :string],
|
28
|
+
:logger => @logger_mock).should be_false
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should return false if a require string is nil & array is empty" do
|
32
|
+
@logger_mock.should_receive(:error).exactly(2).times
|
33
|
+
@object.valid_options?(:provided => { :array => [],
|
34
|
+
:string => nil },
|
35
|
+
:required => [:array, :string],
|
36
|
+
:logger => @logger_mock).should be_false
|
37
|
+
end
|
27
38
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
39
|
+
it "should return true if all options are present" do
|
40
|
+
@logger_mock.should_receive(:error).exactly(0).times
|
41
|
+
@object.valid_options?(:provided => { :array => ['present'],
|
42
|
+
:string => 'present' },
|
43
|
+
:required => [:array, :string],
|
44
|
+
:logger => @logger_mock).should be_true
|
45
|
+
end
|
35
46
|
end
|
36
47
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
48
|
+
context "testing load_config" do
|
49
|
+
|
50
|
+
before do
|
51
|
+
@config_mock = mock 'config'
|
52
|
+
@logger_mock = mock 'logger'
|
53
|
+
@object = Object.new
|
54
|
+
@object.extend Heirloom::CLI::Shared
|
55
|
+
Heirloom::Config.should_receive(:new).with(:logger => @logger_mock).
|
56
|
+
and_return @config_mock
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should return the configuration" do
|
60
|
+
@object.load_config(:logger => @logger_mock,
|
61
|
+
:opts => {}).should == @config_mock
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should set the access key if specified" do
|
65
|
+
opts = { :key => 'the_key',
|
66
|
+
:key_given => true }
|
67
|
+
@config_mock.should_receive(:access_key=).with 'the_key'
|
68
|
+
@object.load_config :logger => @logger_mock, :opts => opts
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should set the secret key if specified" do
|
72
|
+
opts = { :secret => 'the_secret',
|
73
|
+
:secret_given => true }
|
74
|
+
@config_mock.should_receive(:secret_key=).with 'the_secret'
|
75
|
+
@object.load_config :logger => @logger_mock, :opts => opts
|
76
|
+
end
|
44
77
|
end
|
78
|
+
|
45
79
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'heirloom/cli'
|
3
|
+
|
4
|
+
describe Heirloom do
|
5
|
+
|
6
|
+
before do
|
7
|
+
options = { :name => 'archive_name',
|
8
|
+
:id => '1.0.0',
|
9
|
+
:level => 'info' }
|
10
|
+
@logger_stub = stub :debug => true
|
11
|
+
@config_mock = mock 'config'
|
12
|
+
@archive_mock = mock 'archive'
|
13
|
+
Trollop.stub(:options).and_return options
|
14
|
+
Heirloom::HeirloomLogger.should_receive(:new).with(:log_level => 'info').
|
15
|
+
and_return @logger_stub
|
16
|
+
Heirloom::CLI::Show.any_instance.should_receive(:load_config).
|
17
|
+
with(:logger => @logger_stub,
|
18
|
+
:opts => options).
|
19
|
+
and_return @config_mock
|
20
|
+
Heirloom::Archive.should_receive(:new).
|
21
|
+
with(:name => 'archive_name',
|
22
|
+
:id => '1.0.0',
|
23
|
+
:config => @config_mock).
|
24
|
+
and_return @archive_mock
|
25
|
+
@cli_show = Heirloom::CLI::Show.new
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should show a given id" do
|
29
|
+
@archive_mock.should_receive(:show).and_return( { 'id' => '1.0.0' } )
|
30
|
+
@cli_show.should_receive(:jj).with 'id' => '1.0.0'
|
31
|
+
@cli_show.show
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|