backup 3.0.23 → 3.0.24

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.
Files changed (197) hide show
  1. data/Gemfile.lock +42 -45
  2. data/Guardfile +7 -4
  3. data/README.md +10 -7
  4. data/backup.gemspec +2 -2
  5. data/lib/backup.rb +27 -97
  6. data/lib/backup/archive.rb +14 -6
  7. data/lib/backup/cli/helpers.rb +52 -49
  8. data/lib/backup/cli/utility.rb +9 -1
  9. data/lib/backup/compressor/base.rb +10 -4
  10. data/lib/backup/compressor/bzip2.rb +22 -26
  11. data/lib/backup/compressor/custom.rb +53 -0
  12. data/lib/backup/compressor/gzip.rb +22 -23
  13. data/lib/backup/compressor/lzma.rb +15 -13
  14. data/lib/backup/compressor/pbzip2.rb +20 -17
  15. data/lib/backup/config.rb +6 -3
  16. data/lib/backup/configuration.rb +33 -0
  17. data/lib/backup/configuration/helpers.rb +114 -28
  18. data/lib/backup/configuration/store.rb +24 -0
  19. data/lib/backup/database/base.rb +0 -6
  20. data/lib/backup/database/mongodb.rb +27 -11
  21. data/lib/backup/database/mysql.rb +19 -14
  22. data/lib/backup/database/postgresql.rb +16 -11
  23. data/lib/backup/database/redis.rb +7 -11
  24. data/lib/backup/database/riak.rb +3 -6
  25. data/lib/backup/dependency.rb +5 -11
  26. data/lib/backup/model.rb +14 -5
  27. data/lib/backup/notifier/campfire.rb +3 -16
  28. data/lib/backup/notifier/hipchat.rb +1 -7
  29. data/lib/backup/notifier/mail.rb +1 -1
  30. data/lib/backup/packager.rb +29 -19
  31. data/lib/backup/pipeline.rb +110 -0
  32. data/lib/backup/storage/dropbox.rb +4 -7
  33. data/lib/backup/syncer/base.rb +8 -4
  34. data/lib/backup/syncer/cloud/base.rb +247 -0
  35. data/lib/backup/syncer/cloud/cloud_files.rb +78 -0
  36. data/lib/backup/syncer/cloud/s3.rb +68 -0
  37. data/lib/backup/syncer/rsync/base.rb +1 -4
  38. data/lib/backup/syncer/rsync/local.rb +9 -5
  39. data/lib/backup/syncer/rsync/pull.rb +1 -1
  40. data/lib/backup/syncer/rsync/push.rb +10 -5
  41. data/lib/backup/version.rb +1 -1
  42. data/spec-live/.gitignore +6 -0
  43. data/spec-live/README +7 -0
  44. data/spec-live/backups/config.rb +153 -0
  45. data/spec-live/backups/config.yml.template +43 -0
  46. data/spec-live/compressor/custom_spec.rb +30 -0
  47. data/spec-live/compressor/gzip_spec.rb +30 -0
  48. data/spec-live/notifier/mail_spec.rb +85 -0
  49. data/spec-live/spec_helper.rb +85 -0
  50. data/spec-live/storage/dropbox_spec.rb +151 -0
  51. data/spec-live/storage/local_spec.rb +83 -0
  52. data/spec-live/storage/scp_spec.rb +193 -0
  53. data/spec-live/syncer/cloud/s3_spec.rb +124 -0
  54. data/spec/archive_spec.rb +86 -31
  55. data/spec/cleaner_spec.rb +8 -0
  56. data/spec/cli/helpers_spec.rb +200 -75
  57. data/spec/cli/utility_spec.rb +11 -3
  58. data/spec/compressor/base_spec.rb +31 -10
  59. data/spec/compressor/bzip2_spec.rb +212 -57
  60. data/spec/compressor/custom_spec.rb +106 -0
  61. data/spec/compressor/gzip_spec.rb +212 -57
  62. data/spec/compressor/lzma_spec.rb +75 -35
  63. data/spec/compressor/pbzip2_spec.rb +93 -52
  64. data/spec/configuration/helpers_spec.rb +406 -0
  65. data/spec/configuration/store_spec.rb +39 -0
  66. data/spec/configuration_spec.rb +62 -0
  67. data/spec/database/base_spec.rb +19 -10
  68. data/spec/database/mongodb_spec.rb +195 -70
  69. data/spec/database/mysql_spec.rb +183 -64
  70. data/spec/database/postgresql_spec.rb +167 -53
  71. data/spec/database/redis_spec.rb +121 -46
  72. data/spec/database/riak_spec.rb +96 -27
  73. data/spec/dependency_spec.rb +2 -0
  74. data/spec/encryptor/base_spec.rb +10 -0
  75. data/spec/encryptor/gpg_spec.rb +29 -13
  76. data/spec/encryptor/open_ssl_spec.rb +40 -21
  77. data/spec/logger_spec.rb +4 -0
  78. data/spec/model_spec.rb +19 -2
  79. data/spec/notifier/base_spec.rb +32 -17
  80. data/spec/notifier/campfire_spec.rb +63 -45
  81. data/spec/notifier/hipchat_spec.rb +79 -56
  82. data/spec/notifier/mail_spec.rb +82 -46
  83. data/spec/notifier/prowl_spec.rb +53 -32
  84. data/spec/notifier/twitter_spec.rb +62 -41
  85. data/spec/packager_spec.rb +95 -36
  86. data/spec/pipeline_spec.rb +259 -0
  87. data/spec/spec_helper.rb +6 -5
  88. data/spec/storage/base_spec.rb +61 -41
  89. data/spec/storage/cloudfiles_spec.rb +69 -45
  90. data/spec/storage/dropbox_spec.rb +158 -36
  91. data/spec/storage/ftp_spec.rb +69 -45
  92. data/spec/storage/local_spec.rb +47 -23
  93. data/spec/storage/ninefold_spec.rb +55 -31
  94. data/spec/storage/rsync_spec.rb +67 -50
  95. data/spec/storage/s3_spec.rb +65 -41
  96. data/spec/storage/scp_spec.rb +65 -41
  97. data/spec/storage/sftp_spec.rb +65 -41
  98. data/spec/syncer/base_spec.rb +91 -4
  99. data/spec/syncer/cloud/base_spec.rb +511 -0
  100. data/spec/syncer/cloud/cloud_files_spec.rb +181 -0
  101. data/spec/syncer/cloud/s3_spec.rb +174 -0
  102. data/spec/syncer/rsync/base_spec.rb +46 -66
  103. data/spec/syncer/rsync/local_spec.rb +55 -26
  104. data/spec/syncer/rsync/pull_spec.rb +15 -4
  105. data/spec/syncer/rsync/push_spec.rb +59 -52
  106. data/templates/cli/utility/compressor/bzip2 +1 -4
  107. data/templates/cli/utility/compressor/custom +11 -0
  108. data/templates/cli/utility/compressor/gzip +1 -4
  109. data/templates/cli/utility/compressor/lzma +3 -0
  110. data/templates/cli/utility/compressor/pbzip2 +3 -0
  111. data/templates/cli/utility/database/mysql +4 -1
  112. data/templates/cli/utility/syncer/cloud_files +17 -19
  113. data/templates/cli/utility/syncer/s3 +18 -20
  114. metadata +38 -92
  115. data/lib/backup/configuration/base.rb +0 -15
  116. data/lib/backup/configuration/compressor/base.rb +0 -9
  117. data/lib/backup/configuration/compressor/bzip2.rb +0 -23
  118. data/lib/backup/configuration/compressor/gzip.rb +0 -23
  119. data/lib/backup/configuration/compressor/lzma.rb +0 -23
  120. data/lib/backup/configuration/compressor/pbzip2.rb +0 -28
  121. data/lib/backup/configuration/database/base.rb +0 -19
  122. data/lib/backup/configuration/database/mongodb.rb +0 -49
  123. data/lib/backup/configuration/database/mysql.rb +0 -42
  124. data/lib/backup/configuration/database/postgresql.rb +0 -41
  125. data/lib/backup/configuration/database/redis.rb +0 -39
  126. data/lib/backup/configuration/database/riak.rb +0 -29
  127. data/lib/backup/configuration/encryptor/base.rb +0 -9
  128. data/lib/backup/configuration/encryptor/gpg.rb +0 -17
  129. data/lib/backup/configuration/encryptor/open_ssl.rb +0 -32
  130. data/lib/backup/configuration/notifier/base.rb +0 -28
  131. data/lib/backup/configuration/notifier/campfire.rb +0 -25
  132. data/lib/backup/configuration/notifier/hipchat.rb +0 -41
  133. data/lib/backup/configuration/notifier/mail.rb +0 -112
  134. data/lib/backup/configuration/notifier/presently.rb +0 -25
  135. data/lib/backup/configuration/notifier/prowl.rb +0 -23
  136. data/lib/backup/configuration/notifier/twitter.rb +0 -21
  137. data/lib/backup/configuration/storage/base.rb +0 -18
  138. data/lib/backup/configuration/storage/cloudfiles.rb +0 -25
  139. data/lib/backup/configuration/storage/dropbox.rb +0 -58
  140. data/lib/backup/configuration/storage/ftp.rb +0 -29
  141. data/lib/backup/configuration/storage/local.rb +0 -17
  142. data/lib/backup/configuration/storage/ninefold.rb +0 -20
  143. data/lib/backup/configuration/storage/rsync.rb +0 -29
  144. data/lib/backup/configuration/storage/s3.rb +0 -25
  145. data/lib/backup/configuration/storage/scp.rb +0 -25
  146. data/lib/backup/configuration/storage/sftp.rb +0 -25
  147. data/lib/backup/configuration/syncer/base.rb +0 -10
  148. data/lib/backup/configuration/syncer/cloud.rb +0 -23
  149. data/lib/backup/configuration/syncer/cloud_files.rb +0 -30
  150. data/lib/backup/configuration/syncer/rsync/base.rb +0 -28
  151. data/lib/backup/configuration/syncer/rsync/local.rb +0 -11
  152. data/lib/backup/configuration/syncer/rsync/pull.rb +0 -11
  153. data/lib/backup/configuration/syncer/rsync/push.rb +0 -31
  154. data/lib/backup/configuration/syncer/s3.rb +0 -23
  155. data/lib/backup/notifier/presently.rb +0 -88
  156. data/lib/backup/syncer/cloud.rb +0 -187
  157. data/lib/backup/syncer/cloud_files.rb +0 -56
  158. data/lib/backup/syncer/s3.rb +0 -47
  159. data/spec/configuration/base_spec.rb +0 -35
  160. data/spec/configuration/compressor/bzip2_spec.rb +0 -29
  161. data/spec/configuration/compressor/gzip_spec.rb +0 -29
  162. data/spec/configuration/compressor/lzma_spec.rb +0 -29
  163. data/spec/configuration/compressor/pbzip2_spec.rb +0 -32
  164. data/spec/configuration/database/base_spec.rb +0 -17
  165. data/spec/configuration/database/mongodb_spec.rb +0 -56
  166. data/spec/configuration/database/mysql_spec.rb +0 -53
  167. data/spec/configuration/database/postgresql_spec.rb +0 -53
  168. data/spec/configuration/database/redis_spec.rb +0 -50
  169. data/spec/configuration/database/riak_spec.rb +0 -35
  170. data/spec/configuration/encryptor/gpg_spec.rb +0 -26
  171. data/spec/configuration/encryptor/open_ssl_spec.rb +0 -35
  172. data/spec/configuration/notifier/base_spec.rb +0 -32
  173. data/spec/configuration/notifier/campfire_spec.rb +0 -32
  174. data/spec/configuration/notifier/hipchat_spec.rb +0 -44
  175. data/spec/configuration/notifier/mail_spec.rb +0 -71
  176. data/spec/configuration/notifier/presently_spec.rb +0 -35
  177. data/spec/configuration/notifier/prowl_spec.rb +0 -29
  178. data/spec/configuration/notifier/twitter_spec.rb +0 -35
  179. data/spec/configuration/storage/cloudfiles_spec.rb +0 -41
  180. data/spec/configuration/storage/dropbox_spec.rb +0 -38
  181. data/spec/configuration/storage/ftp_spec.rb +0 -44
  182. data/spec/configuration/storage/local_spec.rb +0 -29
  183. data/spec/configuration/storage/ninefold_spec.rb +0 -32
  184. data/spec/configuration/storage/rsync_spec.rb +0 -41
  185. data/spec/configuration/storage/s3_spec.rb +0 -38
  186. data/spec/configuration/storage/scp_spec.rb +0 -41
  187. data/spec/configuration/storage/sftp_spec.rb +0 -41
  188. data/spec/configuration/syncer/cloud_files_spec.rb +0 -44
  189. data/spec/configuration/syncer/rsync/base_spec.rb +0 -33
  190. data/spec/configuration/syncer/rsync/local_spec.rb +0 -10
  191. data/spec/configuration/syncer/rsync/pull_spec.rb +0 -10
  192. data/spec/configuration/syncer/rsync/push_spec.rb +0 -43
  193. data/spec/configuration/syncer/s3_spec.rb +0 -38
  194. data/spec/notifier/presently_spec.rb +0 -181
  195. data/spec/syncer/cloud_files_spec.rb +0 -192
  196. data/spec/syncer/s3_spec.rb +0 -192
  197. data/templates/cli/utility/notifier/presently +0 -13
@@ -13,22 +13,26 @@ describe Backup::Storage::FTP do
13
13
  end
14
14
  end
15
15
 
16
+ it 'should be a subclass of Storage::Base' do
17
+ Backup::Storage::FTP.
18
+ superclass.should == Backup::Storage::Base
19
+ end
20
+
16
21
  describe '#initialize' do
17
- it 'should set the correct values' do
18
- storage.username.should == 'my_username'
19
- storage.password.should == 'my_password'
20
- storage.ip.should == '123.45.678.90'
21
- storage.port.should == 21
22
- storage.path.should == 'backups'
23
- storage.passive_mode.should == false
24
-
25
- storage.storage_id.should be_nil
26
- storage.keep.should == 5
22
+ after { Backup::Storage::FTP.clear_defaults! }
23
+
24
+ it 'should load pre-configured defaults through Base' do
25
+ Backup::Storage::FTP.any_instance.expects(:load_defaults!)
26
+ storage
27
+ end
28
+
29
+ it 'should pass the model reference to Base' do
30
+ storage.instance_variable_get(:@model).should == model
27
31
  end
28
32
 
29
- it 'should set a storage_id if given' do
30
- ftp = Backup::Storage::FTP.new(model, 'my storage_id')
31
- ftp.storage_id.should == 'my storage_id'
33
+ it 'should pass the storage_id to Base' do
34
+ storage = Backup::Storage::FTP.new(model, 'my_storage_id')
35
+ storage.storage_id.should == 'my_storage_id'
32
36
  end
33
37
 
34
38
  it 'should remove any preceeding tilde and slash from the path' do
@@ -38,20 +42,50 @@ describe Backup::Storage::FTP do
38
42
  storage.path.should == 'my_backups/path'
39
43
  end
40
44
 
41
- context 'when setting configuration defaults' do
42
- after { Backup::Configuration::Storage::FTP.clear_defaults! }
43
-
44
- it 'should use the configured defaults' do
45
- Backup::Configuration::Storage::FTP.defaults do |ftp|
46
- ftp.username = 'some_username'
47
- ftp.password = 'some_password'
48
- ftp.ip = 'some_ip'
49
- ftp.port = 'some_port'
50
- ftp.path = 'some_path'
51
- ftp.passive_mode = 'some_passive_mode'
52
- ftp.keep = 'some_keep'
45
+ context 'when no pre-configured defaults have been set' do
46
+ it 'should use the values given' do
47
+ storage.username.should == 'my_username'
48
+ storage.password.should == 'my_password'
49
+ storage.ip.should == '123.45.678.90'
50
+ storage.port.should == 21
51
+ storage.path.should == 'backups'
52
+ storage.passive_mode.should == false
53
+
54
+ storage.storage_id.should be_nil
55
+ storage.keep.should == 5
56
+ end
57
+
58
+ it 'should use default values if none are given' do
59
+ storage = Backup::Storage::FTP.new(model)
60
+
61
+ storage.username.should be_nil
62
+ storage.password.should be_nil
63
+ storage.ip.should be_nil
64
+ storage.port.should == 21
65
+ storage.path.should == 'backups'
66
+ storage.passive_mode.should == false
67
+
68
+ storage.storage_id.should be_nil
69
+ storage.keep.should be_nil
70
+ end
71
+ end # context 'when no pre-configured defaults have been set'
72
+
73
+ context 'when pre-configured defaults have been set' do
74
+ before do
75
+ Backup::Storage::FTP.defaults do |s|
76
+ s.username = 'some_username'
77
+ s.password = 'some_password'
78
+ s.ip = 'some_ip'
79
+ s.port = 'some_port'
80
+ s.path = 'some_path'
81
+ s.passive_mode = 'some_passive_mode'
82
+ s.keep = 'some_keep'
53
83
  end
84
+ end
85
+
86
+ it 'should use pre-configured defaults' do
54
87
  storage = Backup::Storage::FTP.new(model)
88
+
55
89
  storage.username.should == 'some_username'
56
90
  storage.password.should == 'some_password'
57
91
  storage.ip.should == 'some_ip'
@@ -63,24 +97,15 @@ describe Backup::Storage::FTP do
63
97
  storage.keep.should == 'some_keep'
64
98
  end
65
99
 
66
- it 'should override the configured defaults' do
67
- Backup::Configuration::Storage::FTP.defaults do |ftp|
68
- ftp.username = 'old_username'
69
- ftp.password = 'old_password'
70
- ftp.ip = 'old_ip'
71
- ftp.port = 'old_port'
72
- ftp.path = 'old_path'
73
- ftp.passive_mode = 'old_passive_mode'
74
- ftp.keep = 'old_keep'
75
- end
76
- storage = Backup::Storage::FTP.new(model) do |ftp|
77
- ftp.username = 'new_username'
78
- ftp.password = 'new_password'
79
- ftp.ip = 'new_ip'
80
- ftp.port = 'new_port'
81
- ftp.path = 'new_path'
82
- ftp.passive_mode = 'new_passive_mode'
83
- ftp.keep = 'new_keep'
100
+ it 'should override pre-configured defaults' do
101
+ storage = Backup::Storage::FTP.new(model) do |s|
102
+ s.username = 'new_username'
103
+ s.password = 'new_password'
104
+ s.ip = 'new_ip'
105
+ s.port = 'new_port'
106
+ s.path = 'new_path'
107
+ s.passive_mode = 'new_passive_mode'
108
+ s.keep = 'new_keep'
84
109
  end
85
110
 
86
111
  storage.username.should == 'new_username'
@@ -93,8 +118,7 @@ describe Backup::Storage::FTP do
93
118
  storage.storage_id.should be_nil
94
119
  storage.keep.should == 'new_keep'
95
120
  end
96
- end # context 'when setting configuration defaults'
97
-
121
+ end # context 'when pre-configured defaults have been set'
98
122
  end # describe '#initialize'
99
123
 
100
124
  describe '#connection' do
@@ -13,17 +13,26 @@ describe Backup::Storage::Local do
13
13
  end
14
14
  end
15
15
 
16
+ it 'should be a subclass of Storage::Base' do
17
+ Backup::Storage::Local.
18
+ superclass.should == Backup::Storage::Base
19
+ end
20
+
16
21
  describe '#initialize' do
17
- it 'should set the correct values' do
18
- storage.path.should == storage_path
22
+ after { Backup::Storage::Local.clear_defaults! }
19
23
 
20
- storage.storage_id.should be_nil
21
- storage.keep.should == 5
24
+ it 'should load pre-configured defaults through Base' do
25
+ Backup::Storage::Local.any_instance.expects(:load_defaults!)
26
+ storage
22
27
  end
23
28
 
24
- it 'should set a storage_id if given' do
25
- local = Backup::Storage::Local.new(model, 'my storage_id')
26
- local.storage_id.should == 'my storage_id'
29
+ it 'should pass the model reference to Base' do
30
+ storage.instance_variable_get(:@model).should == model
31
+ end
32
+
33
+ it 'should pass the storage_id to Base' do
34
+ storage = Backup::Storage::Local.new(model, 'my_storage_id')
35
+ storage.storage_id.should == 'my_storage_id'
27
36
  end
28
37
 
29
38
  it 'should expand any path given' do
@@ -33,29 +42,45 @@ describe Backup::Storage::Local do
33
42
  storage.path.should == File.expand_path('my_backups/path')
34
43
  end
35
44
 
36
- context 'when setting configuration defaults' do
37
- after { Backup::Configuration::Storage::Local.clear_defaults! }
45
+ context 'when no pre-configured defaults have been set' do
46
+ it 'should use the values given' do
47
+ storage.path.should == storage_path
48
+
49
+ storage.storage_id.should be_nil
50
+ storage.keep.should == 5
51
+ end
52
+
53
+ it 'should use default values if none are given' do
54
+ storage = Backup::Storage::Local.new(model)
55
+
56
+ storage.path.should == storage_path
38
57
 
39
- it 'should use the configured defaults' do
40
- Backup::Configuration::Storage::Local.defaults do |local|
41
- local.path = 'some_path'
42
- local.keep = 'some_keep'
58
+ storage.storage_id.should be_nil
59
+ storage.keep.should be_nil
60
+ end
61
+ end # context 'when no pre-configured defaults have been set'
62
+
63
+ context 'when pre-configured defaults have been set' do
64
+ before do
65
+ Backup::Storage::Local.defaults do |s|
66
+ s.path = 'some_path'
67
+ s.keep = 'some_keep'
43
68
  end
69
+ end
70
+
71
+ it 'should use pre-configured defaults' do
44
72
  storage = Backup::Storage::Local.new(model)
73
+
45
74
  storage.path.should == File.expand_path('some_path')
46
75
 
47
76
  storage.storage_id.should be_nil
48
77
  storage.keep.should == 'some_keep'
49
78
  end
50
79
 
51
- it 'should override the configured defaults' do
52
- Backup::Configuration::Storage::Local.defaults do |local|
53
- local.path = 'old_path'
54
- local.keep = 'old_keep'
55
- end
56
- storage = Backup::Storage::Local.new(model) do |local|
57
- local.path = 'new_path'
58
- local.keep = 'new_keep'
80
+ it 'should override pre-configured defaults' do
81
+ storage = Backup::Storage::Local.new(model) do |s|
82
+ s.path = 'new_path'
83
+ s.keep = 'new_keep'
59
84
  end
60
85
 
61
86
  storage.path.should == File.expand_path('new_path')
@@ -63,8 +88,7 @@ describe Backup::Storage::Local do
63
88
  storage.storage_id.should be_nil
64
89
  storage.keep.should == 'new_keep'
65
90
  end
66
- end # context 'when setting configuration defaults'
67
-
91
+ end # context 'when pre-configured defaults have been set'
68
92
  end # describe '#initialize'
69
93
 
70
94
  describe '#transfer!' do
@@ -12,32 +12,63 @@ describe Backup::Storage::Ninefold do
12
12
  end
13
13
  end
14
14
 
15
+ it 'should be a subclass of Storage::Base' do
16
+ Backup::Storage::Ninefold.
17
+ superclass.should == Backup::Storage::Base
18
+ end
19
+
15
20
  describe '#initialize' do
16
- it 'should set the correct values' do
17
- storage.storage_token.should == 'my_token'
18
- storage.storage_secret.should == 'my_secret'
19
- storage.path.should == 'backups'
21
+ after { Backup::Storage::Ninefold.clear_defaults! }
20
22
 
21
- storage.storage_id.should be_nil
22
- storage.keep.should == 5
23
+ it 'should load pre-configured defaults through Base' do
24
+ Backup::Storage::Ninefold.any_instance.expects(:load_defaults!)
25
+ storage
23
26
  end
24
27
 
25
- it 'should set a storage_id if given' do
26
- nf = Backup::Storage::Ninefold.new(model, 'my storage_id')
27
- nf.storage_id.should == 'my storage_id'
28
+ it 'should pass the model reference to Base' do
29
+ storage.instance_variable_get(:@model).should == model
28
30
  end
29
31
 
30
- context 'when setting configuration defaults' do
31
- after { Backup::Configuration::Storage::Ninefold.clear_defaults! }
32
+ it 'should pass the storage_id to Base' do
33
+ storage = Backup::Storage::Ninefold.new(model, 'my_storage_id')
34
+ storage.storage_id.should == 'my_storage_id'
35
+ end
36
+
37
+ context 'when no pre-configured defaults have been set' do
38
+ it 'should use the values given' do
39
+ storage.storage_token.should == 'my_token'
40
+ storage.storage_secret.should == 'my_secret'
41
+ storage.path.should == 'backups'
42
+
43
+ storage.storage_id.should be_nil
44
+ storage.keep.should == 5
45
+ end
46
+
47
+ it 'should use default values if none are given' do
48
+ storage = Backup::Storage::Ninefold.new(model)
49
+
50
+ storage.storage_token.should be_nil
51
+ storage.storage_secret.should be_nil
52
+ storage.path.should == 'backups'
32
53
 
33
- it 'should use the configured defaults' do
34
- Backup::Configuration::Storage::Ninefold.defaults do |nf|
35
- nf.storage_token = 'some_token'
36
- nf.storage_secret = 'some_secret'
37
- nf.path = 'some_path'
38
- nf.keep = 15
54
+ storage.storage_id.should be_nil
55
+ storage.keep.should be_nil
56
+ end
57
+ end # context 'when no pre-configured defaults have been set'
58
+
59
+ context 'when pre-configured defaults have been set' do
60
+ before do
61
+ Backup::Storage::Ninefold.defaults do |s|
62
+ s.storage_token = 'some_token'
63
+ s.storage_secret = 'some_secret'
64
+ s.path = 'some_path'
65
+ s.keep = 15
39
66
  end
67
+ end
68
+
69
+ it 'should use pre-configured defaults' do
40
70
  storage = Backup::Storage::Ninefold.new(model)
71
+
41
72
  storage.storage_token.should == 'some_token'
42
73
  storage.storage_secret.should == 'some_secret'
43
74
  storage.path.should == 'some_path'
@@ -46,18 +77,12 @@ describe Backup::Storage::Ninefold do
46
77
  storage.keep.should == 15
47
78
  end
48
79
 
49
- it 'should override the configured defaults' do
50
- Backup::Configuration::Storage::Ninefold.defaults do |nf|
51
- nf.storage_token = 'old_token'
52
- nf.storage_secret = 'old_secret'
53
- nf.path = 'old_path'
54
- nf.keep = 15
55
- end
56
- storage = Backup::Storage::Ninefold.new(model) do |nf|
57
- nf.storage_token = 'new_token'
58
- nf.storage_secret = 'new_secret'
59
- nf.path = 'new_path'
60
- nf.keep = 10
80
+ it 'should override pre-configured defaults' do
81
+ storage = Backup::Storage::Ninefold.new(model) do |s|
82
+ s.storage_token = 'new_token'
83
+ s.storage_secret = 'new_secret'
84
+ s.path = 'new_path'
85
+ s.keep = 10
61
86
  end
62
87
 
63
88
  storage.storage_token.should == 'new_token'
@@ -67,8 +92,7 @@ describe Backup::Storage::Ninefold do
67
92
  storage.storage_id.should be_nil
68
93
  storage.keep.should == 10
69
94
  end
70
- end # context 'when setting configuration defaults'
71
-
95
+ end # context 'when pre-configured defaults have been set'
72
96
  end # describe '#initialize'
73
97
 
74
98
  describe '#provider' do
@@ -13,45 +13,72 @@ describe Backup::Storage::RSync do
13
13
  end
14
14
  end
15
15
 
16
+ it 'should be a subclass of Storage::Base' do
17
+ Backup::Storage::RSync.
18
+ superclass.should == Backup::Storage::Base
19
+ end
20
+
16
21
  describe '#initialize' do
17
- it 'should set the correct values' do
18
- storage.username.should == 'my_username'
19
- storage.password.should == 'my_password'
20
- storage.ip.should == '123.45.678.90'
21
- storage.port.should == 22
22
- storage.path.should == 'backups'
23
- storage.local.should == false
24
-
25
- storage.storage_id.should be_nil
26
- storage.keep.should == 5
22
+ after { Backup::Storage::RSync.clear_defaults! }
23
+
24
+ it 'should load pre-configured defaults through Base' do
25
+ Backup::Storage::RSync.any_instance.expects(:load_defaults!)
26
+ storage
27
27
  end
28
28
 
29
- it 'should set a storage_id if given' do
30
- rsync = Backup::Storage::RSync.new(model, 'my storage_id')
31
- rsync.storage_id.should == 'my storage_id'
29
+ it 'should pass the model reference to Base' do
30
+ storage.instance_variable_get(:@model).should == model
32
31
  end
33
32
 
34
- it 'should remove any preceeding tilde and slash from the path' do
35
- storage = Backup::Storage::RSync.new(model) do |rsync|
36
- rsync.path = '~/my_backups/path'
37
- end
38
- storage.path.should == 'my_backups/path'
33
+ it 'should pass the storage_id to Base' do
34
+ storage = Backup::Storage::RSync.new(model, 'my_storage_id')
35
+ storage.storage_id.should == 'my_storage_id'
39
36
  end
40
37
 
41
- context 'when setting configuration defaults' do
42
- after { Backup::Configuration::Storage::RSync.clear_defaults! }
43
-
44
- it 'should use the configured defaults' do
45
- Backup::Configuration::Storage::RSync.defaults do |rsync|
46
- rsync.username = 'some_username'
47
- rsync.password = 'some_password'
48
- rsync.ip = 'some_ip'
49
- rsync.port = 'some_port'
50
- rsync.path = 'some_path'
51
- rsync.local = 'some_local'
52
- rsync.keep = 'some_keep'
38
+ context 'when no pre-configured defaults have been set' do
39
+ it 'should use the values given' do
40
+ storage.username.should == 'my_username'
41
+ storage.password.should == 'my_password'
42
+ storage.ip.should == '123.45.678.90'
43
+ storage.port.should == 22
44
+ storage.path.should == 'backups'
45
+ storage.local.should == false
46
+
47
+ storage.storage_id.should be_nil
48
+ storage.keep.should == 5
49
+ end
50
+
51
+ it 'should use default values if none are given' do
52
+ storage = Backup::Storage::RSync.new(model)
53
+
54
+ storage.username.should be_nil
55
+ storage.password.should be_nil
56
+ storage.ip.should be_nil
57
+ storage.port.should == 22
58
+ storage.path.should == 'backups'
59
+ storage.local.should == false
60
+
61
+ storage.storage_id.should be_nil
62
+ storage.keep.should be_nil
63
+ end
64
+ end # context 'when no pre-configured defaults have been set'
65
+
66
+ context 'when pre-configured defaults have been set' do
67
+ before do
68
+ Backup::Storage::RSync.defaults do |s|
69
+ s.username = 'some_username'
70
+ s.password = 'some_password'
71
+ s.ip = 'some_ip'
72
+ s.port = 'some_port'
73
+ s.path = 'some_path'
74
+ s.local = 'some_local'
75
+ s.keep = 'some_keep'
53
76
  end
77
+ end
78
+
79
+ it 'should use pre-configured defaults' do
54
80
  storage = Backup::Storage::RSync.new(model)
81
+
55
82
  storage.username.should == 'some_username'
56
83
  storage.password.should == 'some_password'
57
84
  storage.ip.should == 'some_ip'
@@ -63,24 +90,15 @@ describe Backup::Storage::RSync do
63
90
  storage.keep.should == 'some_keep'
64
91
  end
65
92
 
66
- it 'should override the configured defaults' do
67
- Backup::Configuration::Storage::RSync.defaults do |rsync|
68
- rsync.username = 'old_username'
69
- rsync.password = 'old_password'
70
- rsync.ip = 'old_ip'
71
- rsync.port = 'old_port'
72
- rsync.path = 'old_path'
73
- rsync.local = 'old_local'
74
- rsync.keep = 'old_keep'
75
- end
76
- storage = Backup::Storage::RSync.new(model) do |rsync|
77
- rsync.username = 'new_username'
78
- rsync.password = 'new_password'
79
- rsync.ip = 'new_ip'
80
- rsync.port = 'new_port'
81
- rsync.path = 'new_path'
82
- rsync.local = 'new_local'
83
- rsync.keep = 'new_keep'
93
+ it 'should override pre-configured defaults' do
94
+ storage = Backup::Storage::RSync.new(model) do |s|
95
+ s.username = 'new_username'
96
+ s.password = 'new_password'
97
+ s.ip = 'new_ip'
98
+ s.port = 'new_port'
99
+ s.path = 'new_path'
100
+ s.local = 'new_local'
101
+ s.keep = 'new_keep'
84
102
  end
85
103
 
86
104
  storage.username.should == 'new_username'
@@ -93,8 +111,7 @@ describe Backup::Storage::RSync do
93
111
  storage.storage_id.should be_nil
94
112
  storage.keep.should == 'new_keep'
95
113
  end
96
- end # context 'when setting configuration defaults'
97
-
114
+ end # context 'when pre-configured defaults have been set'
98
115
  end # describe '#initialize'
99
116
 
100
117
  describe '#remote_path_for' do