-
Notifications
You must be signed in to change notification settings - Fork 676
/
s3_spec.rb
139 lines (115 loc) · 3.73 KB
/
s3_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# encoding: utf-8
require File.dirname(__FILE__) + '/../spec_helper'
describe Backup::Syncer::S3 do
let(:s3) do
Backup::Syncer::S3.new do |s3|
s3.access_key_id = 'my_access_key_id'
s3.secret_access_key = 'my_secret_access_key'
s3.bucket = 'my-bucket'
s3.path = "/backups"
s3.mirror = true
s3.directories do |directory|
directory.add "/some/random/directory"
directory.add "/another/random/directory"
end
end
end
before do
Backup::Configuration::Syncer::S3.clear_defaults!
end
it 'should have defined the configuration properly' do
s3.access_key_id.should == 'my_access_key_id'
s3.secret_access_key.should == 'my_secret_access_key'
s3.bucket.should == 'my-bucket'
s3.path.should == 'backups'
s3.mirror.should == '--delete'
s3.directories.should == ["/some/random/directory", "/another/random/directory"]
end
it 'should use the defaults if a particular attribute has not been defined' do
Backup::Configuration::Syncer::S3.defaults do |s3|
s3.access_key_id = 'my_access_key_id'
s3.bucket = 'my-bucket'
s3.path = "/backups"
s3.mirror = true
end
s3 = Backup::Syncer::S3.new do |s3|
s3.secret_access_key = 'some_secret_access_key'
s3.mirror = false
end
s3.access_key_id = 'my_access_key_id'
s3.secret_access_key = 'some_secret_access_key'
s3.bucket = 'my-bucket'
s3.path = "/backups"
s3.mirror = false
end
it 'should have its own defaults' do
s3 = Backup::Syncer::S3.new
s3.path.should == 'backups'
s3.directories.should == Array.new
s3.mirror.should == nil
s3.additional_options.should == []
end
describe '#mirror' do
context 'when true' do
it do
s3.mirror = true
s3.mirror.should == '--delete'
end
end
context 'when nil/false' do
it do
s3.mirror = nil
s3.mirror.should == nil
end
it do
s3.mirror = false
s3.mirror.should == nil
end
end
end
describe '#recursive' do
it do
s3.recursive.should == '--recursive'
end
end
describe '#additional_options' do
it do
s3.additional_options = ['--exclude="*.rb"']
s3.options.should == '--verbose --recursive --delete --exclude="*.rb"'
end
end
describe '#verbose' do
it do
s3.verbose.should == '--verbose'
end
end
describe '#directories' do
context 'when its empty' do
it do
s3.directories = []
s3.directories.should == []
end
end
context 'when it has items' do
it do
s3.directories = ['directory1', 'directory1/directory2', 'directory1/directory2/directory3']
s3.directories.should == ['directory1', 'directory1/directory2', 'directory1/directory2/directory3']
end
end
end
describe '#options' do
it do
s3.options.should == "--verbose --recursive --delete"
end
end
describe '#perform' do
it 'should sync two directories' do
s3.expects(:utility).with(:s3sync).returns(:s3sync).twice
Backup::Logger.expects(:message).with("Backup::Syncer::S3 started syncing '/some/random/directory'.")
s3.expects(:run).with("s3sync --verbose --recursive --delete '/some/random/directory' 'my-bucket:backups'")
Backup::Logger.expects(:message).with("Backup::Syncer::S3 started syncing '/another/random/directory'.")
s3.expects(:run).with("s3sync --verbose --recursive --delete '/another/random/directory' 'my-bucket:backups'")
s3.perform!
end
end
end