backup 3.0.3.build.0 → 3.0.3

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 (126) hide show
  1. data/.gitignore +2 -0
  2. data/.infinity_test +7 -0
  3. data/.rspec +3 -0
  4. data/Gemfile +17 -0
  5. data/Gemfile.lock +88 -0
  6. data/LICENSE.md +24 -0
  7. data/README.md +236 -0
  8. data/backup.gemspec +41 -0
  9. data/bin/backup +191 -12
  10. data/lib/backup.rb +162 -0
  11. data/lib/backup/archive.rb +54 -0
  12. data/lib/backup/cli.rb +50 -0
  13. data/lib/backup/compressor/base.rb +17 -0
  14. data/lib/backup/compressor/gzip.rb +61 -0
  15. data/lib/backup/configuration/base.rb +15 -0
  16. data/lib/backup/configuration/compressor/base.rb +10 -0
  17. data/lib/backup/configuration/compressor/gzip.rb +23 -0
  18. data/lib/backup/configuration/database/base.rb +18 -0
  19. data/lib/backup/configuration/database/mongodb.rb +37 -0
  20. data/lib/backup/configuration/database/mysql.rb +37 -0
  21. data/lib/backup/configuration/database/postgresql.rb +37 -0
  22. data/lib/backup/configuration/database/redis.rb +35 -0
  23. data/lib/backup/configuration/encryptor/base.rb +10 -0
  24. data/lib/backup/configuration/encryptor/gpg.rb +17 -0
  25. data/lib/backup/configuration/encryptor/open_ssl.rb +26 -0
  26. data/lib/backup/configuration/helpers.rb +54 -0
  27. data/lib/backup/configuration/notifier/base.rb +39 -0
  28. data/lib/backup/configuration/notifier/mail.rb +52 -0
  29. data/lib/backup/configuration/storage/base.rb +18 -0
  30. data/lib/backup/configuration/storage/cloudfiles.rb +21 -0
  31. data/lib/backup/configuration/storage/dropbox.rb +25 -0
  32. data/lib/backup/configuration/storage/ftp.rb +25 -0
  33. data/lib/backup/configuration/storage/rsync.rb +25 -0
  34. data/lib/backup/configuration/storage/s3.rb +25 -0
  35. data/lib/backup/configuration/storage/scp.rb +25 -0
  36. data/lib/backup/configuration/storage/sftp.rb +25 -0
  37. data/lib/backup/configuration/syncer/rsync.rb +45 -0
  38. data/lib/backup/database/base.rb +33 -0
  39. data/lib/backup/database/mongodb.rb +137 -0
  40. data/lib/backup/database/mysql.rb +104 -0
  41. data/lib/backup/database/postgresql.rb +111 -0
  42. data/lib/backup/database/redis.rb +105 -0
  43. data/lib/backup/encryptor/base.rb +17 -0
  44. data/lib/backup/encryptor/gpg.rb +78 -0
  45. data/lib/backup/encryptor/open_ssl.rb +67 -0
  46. data/lib/backup/finder.rb +39 -0
  47. data/lib/backup/logger.rb +86 -0
  48. data/lib/backup/model.rb +272 -0
  49. data/lib/backup/notifier/base.rb +29 -0
  50. data/lib/backup/notifier/binder.rb +32 -0
  51. data/lib/backup/notifier/mail.rb +141 -0
  52. data/lib/backup/notifier/templates/notify_failure.erb +31 -0
  53. data/lib/backup/notifier/templates/notify_success.erb +16 -0
  54. data/lib/backup/storage/base.rb +67 -0
  55. data/lib/backup/storage/cloudfiles.rb +95 -0
  56. data/lib/backup/storage/dropbox.rb +82 -0
  57. data/lib/backup/storage/ftp.rb +114 -0
  58. data/lib/backup/storage/object.rb +45 -0
  59. data/lib/backup/storage/rsync.rb +99 -0
  60. data/lib/backup/storage/s3.rb +108 -0
  61. data/lib/backup/storage/scp.rb +105 -0
  62. data/lib/backup/storage/sftp.rb +106 -0
  63. data/lib/backup/syncer/rsync.rb +119 -0
  64. data/lib/backup/version.rb +72 -0
  65. data/lib/templates/archive +4 -0
  66. data/lib/templates/compressor/gzip +4 -0
  67. data/lib/templates/database/mongodb +10 -0
  68. data/lib/templates/database/mysql +11 -0
  69. data/lib/templates/database/postgresql +11 -0
  70. data/lib/templates/database/redis +10 -0
  71. data/lib/templates/encryptor/gpg +9 -0
  72. data/lib/templates/encryptor/openssl +5 -0
  73. data/lib/templates/notifier/mail +14 -0
  74. data/lib/templates/readme +15 -0
  75. data/lib/templates/storage/cloudfiles +7 -0
  76. data/lib/templates/storage/dropbox +8 -0
  77. data/lib/templates/storage/ftp +8 -0
  78. data/lib/templates/storage/rsync +7 -0
  79. data/lib/templates/storage/s3 +8 -0
  80. data/lib/templates/storage/scp +8 -0
  81. data/lib/templates/storage/sftp +8 -0
  82. data/lib/templates/syncer/rsync +14 -0
  83. data/spec/archive_spec.rb +53 -0
  84. data/spec/backup_spec.rb +11 -0
  85. data/spec/compressor/gzip_spec.rb +59 -0
  86. data/spec/configuration/base_spec.rb +35 -0
  87. data/spec/configuration/compressor/gzip_spec.rb +28 -0
  88. data/spec/configuration/database/base_spec.rb +16 -0
  89. data/spec/configuration/database/mongodb_spec.rb +30 -0
  90. data/spec/configuration/database/mysql_spec.rb +32 -0
  91. data/spec/configuration/database/postgresql_spec.rb +32 -0
  92. data/spec/configuration/database/redis_spec.rb +30 -0
  93. data/spec/configuration/encryptor/gpg_spec.rb +25 -0
  94. data/spec/configuration/encryptor/open_ssl_spec.rb +31 -0
  95. data/spec/configuration/notifier/mail_spec.rb +32 -0
  96. data/spec/configuration/storage/cloudfiles_spec.rb +34 -0
  97. data/spec/configuration/storage/dropbox_spec.rb +40 -0
  98. data/spec/configuration/storage/ftp_spec.rb +40 -0
  99. data/spec/configuration/storage/rsync_spec.rb +37 -0
  100. data/spec/configuration/storage/s3_spec.rb +37 -0
  101. data/spec/configuration/storage/scp_spec.rb +40 -0
  102. data/spec/configuration/storage/sftp_spec.rb +40 -0
  103. data/spec/configuration/syncer/rsync_spec.rb +46 -0
  104. data/spec/database/base_spec.rb +30 -0
  105. data/spec/database/mongodb_spec.rb +144 -0
  106. data/spec/database/mysql_spec.rb +150 -0
  107. data/spec/database/postgresql_spec.rb +164 -0
  108. data/spec/database/redis_spec.rb +122 -0
  109. data/spec/encryptor/gpg_spec.rb +57 -0
  110. data/spec/encryptor/open_ssl_spec.rb +102 -0
  111. data/spec/logger_spec.rb +46 -0
  112. data/spec/model_spec.rb +236 -0
  113. data/spec/notifier/mail_spec.rb +97 -0
  114. data/spec/spec_helper.rb +21 -0
  115. data/spec/storage/base_spec.rb +33 -0
  116. data/spec/storage/cloudfiles_spec.rb +102 -0
  117. data/spec/storage/dropbox_spec.rb +89 -0
  118. data/spec/storage/ftp_spec.rb +133 -0
  119. data/spec/storage/object_spec.rb +74 -0
  120. data/spec/storage/rsync_spec.rb +115 -0
  121. data/spec/storage/s3_spec.rb +110 -0
  122. data/spec/storage/scp_spec.rb +129 -0
  123. data/spec/storage/sftp_spec.rb +125 -0
  124. data/spec/syncer/rsync_spec.rb +156 -0
  125. data/spec/version_spec.rb +32 -0
  126. metadata +195 -6
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Backup::Configuration::Storage::CloudFiles do
6
+ before do
7
+ Backup::Configuration::Storage::CloudFiles.defaults do |cf|
8
+ cf.username = 'my_username'
9
+ cf.api_key = 'my_api_key'
10
+ cf.container = 'my_container'
11
+ cf.path = 'my_backups'
12
+ end
13
+ end
14
+
15
+ it 'should set the default Cloud Files configuration' do
16
+ cf = Backup::Configuration::Storage::CloudFiles
17
+ cf.username.should == 'my_username'
18
+ cf.api_key.should == 'my_api_key'
19
+ cf.container.should == 'my_container'
20
+ cf.path.should == 'my_backups'
21
+ end
22
+
23
+ describe '#clear_defaults!' do
24
+ it 'should clear all the defaults, resetting them to nil' do
25
+ Backup::Configuration::Storage::CloudFiles.clear_defaults!
26
+
27
+ cf = Backup::Configuration::Storage::CloudFiles
28
+ cf.username.should == nil
29
+ cf.api_key.should == nil
30
+ cf.container.should == nil
31
+ cf.path.should == nil
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Backup::Configuration::Storage::Dropbox do
6
+ before do
7
+ Backup::Configuration::Storage::Dropbox.defaults do |db|
8
+ db.email = 'my@email.com'
9
+ db.password = 'my_password'
10
+ db.api_key = 'my_api_key'
11
+ db.api_secret = 'my_secret'
12
+ db.path = 'my_backups'
13
+ db.keep = 20
14
+ end
15
+ end
16
+
17
+ it 'should set the default Dropbox configuration' do
18
+ db = Backup::Configuration::Storage::Dropbox
19
+ db.email.should == 'my@email.com'
20
+ db.password.should == 'my_password'
21
+ db.api_key.should == 'my_api_key'
22
+ db.api_secret.should == 'my_secret'
23
+ db.path.should == 'my_backups'
24
+ db.keep.should == 20
25
+ end
26
+
27
+ describe '#clear_defaults!' do
28
+ it 'should clear all the defaults, resetting them to nil' do
29
+ Backup::Configuration::Storage::Dropbox.clear_defaults!
30
+
31
+ db = Backup::Configuration::Storage::Dropbox
32
+ db.email.should == nil
33
+ db.password.should == nil
34
+ db.api_key.should == nil
35
+ db.api_secret.should == nil
36
+ db.path.should == nil
37
+ db.keep.should == nil
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Backup::Configuration::Storage::FTP do
6
+ before do
7
+ Backup::Configuration::Storage::FTP.defaults do |ftp|
8
+ ftp.username = 'my_username'
9
+ ftp.password = 'my_password'
10
+ ftp.ip = '123.45.678.90'
11
+ ftp.port = 21
12
+ ftp.path = 'my_backups'
13
+ ftp.keep = 20
14
+ end
15
+ end
16
+
17
+ it 'should set the default ftp configuration' do
18
+ ftp = Backup::Configuration::Storage::FTP
19
+ ftp.username.should == 'my_username'
20
+ ftp.password.should == 'my_password'
21
+ ftp.ip.should == '123.45.678.90'
22
+ ftp.port.should == 21
23
+ ftp.path.should == 'my_backups'
24
+ ftp.keep.should == 20
25
+ end
26
+
27
+ describe '#clear_defaults!' do
28
+ it 'should clear all the defaults, resetting them to nil' do
29
+ Backup::Configuration::Storage::FTP.clear_defaults!
30
+
31
+ ftp = Backup::Configuration::Storage::FTP
32
+ ftp.username.should == nil
33
+ ftp.password.should == nil
34
+ ftp.ip.should == nil
35
+ ftp.port.should == nil
36
+ ftp.path.should == nil
37
+ ftp.keep.should == nil
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,37 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Backup::Configuration::Storage::RSync do
6
+ before do
7
+ Backup::Configuration::Storage::RSync.defaults do |rsync|
8
+ rsync.username = 'my_username'
9
+ rsync.password = 'my_password'
10
+ rsync.ip = '123.45.678.90'
11
+ rsync.port = 21
12
+ rsync.path = 'my_backups'
13
+ end
14
+ end
15
+
16
+ it 'should set the default rsync configuration' do
17
+ rsync = Backup::Configuration::Storage::RSync
18
+ rsync.username.should == 'my_username'
19
+ rsync.password.should == 'my_password'
20
+ rsync.ip.should == '123.45.678.90'
21
+ rsync.port.should == 21
22
+ rsync.path.should == 'my_backups'
23
+ end
24
+
25
+ describe '#clear_defaults!' do
26
+ it 'should clear all the defaults, resetting them to nil' do
27
+ Backup::Configuration::Storage::RSync.clear_defaults!
28
+
29
+ rsync = Backup::Configuration::Storage::RSync
30
+ rsync.username.should == nil
31
+ rsync.password.should == nil
32
+ rsync.ip.should == nil
33
+ rsync.port.should == nil
34
+ rsync.path.should == nil
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Backup::Configuration::Storage::S3 do
6
+ before do
7
+ Backup::Configuration::Storage::S3.defaults do |s3|
8
+ s3.access_key_id = 'my_access_key_id'
9
+ s3.secret_access_key = 'my_secret_access_key'
10
+ s3.region = 'us-east-1'
11
+ s3.bucket = 'my-bucket'
12
+ s3.path = 'my_backups'
13
+ end
14
+ end
15
+
16
+ it 'should set the default S3 configuration' do
17
+ s3 = Backup::Configuration::Storage::S3
18
+ s3.access_key_id.should == 'my_access_key_id'
19
+ s3.secret_access_key.should == 'my_secret_access_key'
20
+ s3.region.should == 'us-east-1'
21
+ s3.bucket.should == 'my-bucket'
22
+ s3.path.should == 'my_backups'
23
+ end
24
+
25
+ describe '#clear_defaults!' do
26
+ it 'should clear all the defaults, resetting them to nil' do
27
+ Backup::Configuration::Storage::S3.clear_defaults!
28
+
29
+ s3 = Backup::Configuration::Storage::S3
30
+ s3.access_key_id.should == nil
31
+ s3.secret_access_key.should == nil
32
+ s3.region.should == nil
33
+ s3.bucket.should == nil
34
+ s3.path.should == nil
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Backup::Configuration::Storage::SCP do
6
+ before do
7
+ Backup::Configuration::Storage::SCP.defaults do |scp|
8
+ scp.username = 'my_username'
9
+ scp.password = 'my_password'
10
+ scp.ip = '123.45.678.90'
11
+ scp.port = 21
12
+ scp.path = 'my_backups'
13
+ scp.keep = 20
14
+ end
15
+ end
16
+
17
+ it 'should set the default scp configuration' do
18
+ scp = Backup::Configuration::Storage::SCP
19
+ scp.username.should == 'my_username'
20
+ scp.password.should == 'my_password'
21
+ scp.ip.should == '123.45.678.90'
22
+ scp.port.should == 21
23
+ scp.path.should == 'my_backups'
24
+ scp.keep.should == 20
25
+ end
26
+
27
+ describe '#clear_defaults!' do
28
+ it 'should clear all the defaults, resetting them to nil' do
29
+ Backup::Configuration::Storage::SCP.clear_defaults!
30
+
31
+ scp = Backup::Configuration::Storage::SCP
32
+ scp.username.should == nil
33
+ scp.password.should == nil
34
+ scp.ip.should == nil
35
+ scp.port.should == nil
36
+ scp.path.should == nil
37
+ scp.keep.should == nil
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Backup::Configuration::Storage::SFTP do
6
+ before do
7
+ Backup::Configuration::Storage::SFTP.defaults do |sftp|
8
+ sftp.username = 'my_username'
9
+ sftp.password = 'my_password'
10
+ sftp.ip = '123.45.678.90'
11
+ sftp.port = 22
12
+ sftp.path = 'my_backups'
13
+ sftp.keep = 20
14
+ end
15
+ end
16
+
17
+ it 'should set the default sftp configuration' do
18
+ sftp = Backup::Configuration::Storage::SFTP
19
+ sftp.username.should == 'my_username'
20
+ sftp.password.should == 'my_password'
21
+ sftp.ip.should == '123.45.678.90'
22
+ sftp.port.should == 22
23
+ sftp.path.should == 'my_backups'
24
+ sftp.keep.should == 20
25
+ end
26
+
27
+ describe '#clear_defaults!' do
28
+ it 'should clear all the defaults, resetting them to nil' do
29
+ Backup::Configuration::Storage::SFTP.clear_defaults!
30
+
31
+ sftp = Backup::Configuration::Storage::SFTP
32
+ sftp.username.should == nil
33
+ sftp.password.should == nil
34
+ sftp.ip.should == nil
35
+ sftp.port.should == nil
36
+ sftp.path.should == nil
37
+ sftp.keep.should == nil
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,46 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../../spec_helper'
4
+
5
+ describe Backup::Configuration::Syncer::RSync do
6
+ before do
7
+ Backup::Configuration::Syncer::RSync.defaults do |rsync|
8
+ rsync.username = 'my_username'
9
+ rsync.password = 'my_password'
10
+ rsync.ip = '123.45.678.90'
11
+ rsync.port = 22
12
+ rsync.path = '~/backups/'
13
+ rsync.mirror = true
14
+ rsync.compress = true
15
+ rsync.additional_options = []
16
+ end
17
+ end
18
+
19
+ it 'should set the default rsync configuration' do
20
+ rsync = Backup::Configuration::Syncer::RSync
21
+ rsync.username.should == 'my_username'
22
+ rsync.password.should == 'my_password'
23
+ rsync.ip.should == '123.45.678.90'
24
+ rsync.port.should == 22
25
+ rsync.path.should == '~/backups/'
26
+ rsync.mirror.should == true
27
+ rsync.compress.should == true
28
+ rsync.additional_options.should == []
29
+ end
30
+
31
+ describe '#clear_defaults!' do
32
+ it 'should clear all the defaults, resetting them to nil' do
33
+ Backup::Configuration::Syncer::RSync.clear_defaults!
34
+
35
+ rsync = Backup::Configuration::Syncer::RSync
36
+ rsync.username.should == nil
37
+ rsync.password.should == nil
38
+ rsync.ip.should == nil
39
+ rsync.port.should == nil
40
+ rsync.path.should == nil
41
+ rsync.mirror.should == nil
42
+ rsync.compress.should == nil
43
+ rsync.additional_options.should == nil
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ describe Backup::Database::Base do
6
+
7
+ before do
8
+ class Backup::Database::Base
9
+ def initialize(&block)
10
+ instance_eval(&block) if block_given?
11
+ end
12
+ end
13
+ end
14
+
15
+ let(:db) do
16
+ Backup::Database::Base.new do |db|
17
+ db.utility_path = '/var/usr/my_util'
18
+ end
19
+ end
20
+
21
+ it 'should return the utility path instead of auto-detecting it' do
22
+ db.utility(:my_database_util).should == '/var/usr/my_util'
23
+ end
24
+
25
+ it 'should ignore the utility_path when not defined' do
26
+ db = Backup::Database::Base.new
27
+ db.utility(:my_database_util).should == :my_database_util
28
+ end
29
+
30
+ end
@@ -0,0 +1,144 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ describe Backup::Database::MongoDB do
6
+
7
+ before do
8
+ Backup::Database::MongoDB.any_instance.stubs(:load_defaults!)
9
+ end
10
+
11
+ let(:db) do
12
+ Backup::Database::MongoDB.new do |db|
13
+ db.name = 'mydatabase'
14
+ db.username = 'someuser'
15
+ db.password = 'secret'
16
+ db.host = 'localhost'
17
+ db.port = 123
18
+
19
+ db.ipv6 = true
20
+ db.only_collections = ['users', 'pirates']
21
+ db.additional_options = ['--query']
22
+ end
23
+ end
24
+
25
+ describe '#new' do
26
+ it 'should read the adapter details correctly' do
27
+ db.name.should == 'mydatabase'
28
+ db.username.should == 'someuser'
29
+ db.password.should == 'secret'
30
+ db.host.should == 'localhost'
31
+ db.port.should == 123
32
+
33
+ db.only_collections.should == ['users', 'pirates']
34
+ db.additional_options.should == '--query'
35
+ end
36
+
37
+ it 'arrays should default to empty arrays when not specified' do
38
+ db = Backup::Database::MongoDB.new do |db|
39
+ db.name = 'mydatabase'
40
+ db.username = 'someuser'
41
+ db.password = 'secret'
42
+ end
43
+
44
+ db.only_collections.should == []
45
+ db.additional_options.should == ""
46
+ end
47
+
48
+ it 'should ensure the directory is available' do
49
+ Backup::Database::MongoDB.any_instance.expects(:mkdir).with("#{Backup::TMP_PATH}/myapp/MongoDB")
50
+ Backup::Database::MongoDB.new {}
51
+ end
52
+ end
53
+
54
+ describe '#only_collections' do
55
+ it 'should return a string for the mongodump selected table to dump option' do
56
+ db.collections_to_dump.should == %w[users pirates]
57
+ end
58
+ end
59
+
60
+ describe '#credential_options' do
61
+ it 'should return the mongo syntax for the credential options' do
62
+ db.credential_options.should == "--username='someuser' --password='secret'"
63
+ end
64
+
65
+ it 'should only return the mongo syntax for the user' do
66
+ db = Backup::Database::MongoDB.new do |db|
67
+ db.username = 'someuser'
68
+ end
69
+
70
+ db.credential_options.should == "--username='someuser'"
71
+ end
72
+ end
73
+
74
+ describe '#connectivity_options' do
75
+ it 'should return the mongo syntax for the connectivity options' do
76
+ db.connectivity_options.should == "--host='localhost' --port='123'"
77
+ end
78
+
79
+ it 'should return only the socket' do
80
+ db = Backup::Database::MongoDB.new do |db|
81
+ db.host = ''
82
+ db.port = 123
83
+ end
84
+
85
+ db.connectivity_options.should == "--port='123'"
86
+ end
87
+ end
88
+
89
+ describe '#ipv6' do
90
+ it 'should return a mongodb syntax compatible ipv6 flag' do
91
+ db.ipv6 = true
92
+ db.ipv6.should == '--ipv6'
93
+ end
94
+
95
+ it 'should return an empty string' do
96
+ db.ipv6 = nil
97
+ db.ipv6.should == ''
98
+ end
99
+ end
100
+
101
+ describe '#mongodump_string' do
102
+ it 'should return the full mongodump string' do
103
+ db.expects(:utility).with(:mongodump).returns('mongodump')
104
+ db.mongodump.should ==
105
+ "mongodump --db='mydatabase' --username='someuser' --password='secret' " +
106
+ "--host='localhost' --port='123' --ipv6 --query --out='#{ File.join(Backup::TMP_PATH, Backup::TRIGGER, 'MongoDB') }'"
107
+ end
108
+ end
109
+
110
+ describe '#perform!' do
111
+ before do
112
+ Backup::Logger.stubs(:message)
113
+ db.stubs(:utility).returns('mongodump')
114
+ db.stubs(:mkdir)
115
+ db.stubs(:run)
116
+ end
117
+
118
+ it 'should run the mongodump command and dump all collections' do
119
+ db.only_collections = []
120
+ db.expects(:dump!)
121
+
122
+ db.perform!
123
+ end
124
+
125
+ it 'should run the mongodump command and dump all collections' do
126
+ db.only_collections = nil
127
+ db.expects(:dump!)
128
+
129
+ db.perform!
130
+ end
131
+
132
+ it 'should dump only the provided collections' do
133
+ db.only_collections = %w[users admins profiles]
134
+ db.expects(:specific_collection_dump!)
135
+
136
+ db.perform!
137
+ end
138
+
139
+ it do
140
+ Backup::Logger.expects(:message).with("Backup::Database::MongoDB started dumping and archiving \"mydatabase\".")
141
+ db.perform!
142
+ end
143
+ end
144
+ end