backup 3.0.16 → 3.0.18
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/.travis.yml +10 -0
- data/Gemfile.lock +50 -47
- data/Guardfile +3 -3
- data/README.md +136 -81
- data/backup.gemspec +3 -2
- data/bin/backup +36 -15
- data/lib/backup.rb +30 -20
- data/lib/backup/cli.rb +30 -2
- data/lib/backup/compressor/lzma.rb +63 -0
- data/lib/backup/configuration/compressor/lzma.rb +23 -0
- data/lib/backup/configuration/helpers.rb +10 -4
- data/lib/backup/configuration/notifier/mail.rb +5 -0
- data/lib/backup/configuration/storage/dropbox.rb +19 -4
- data/lib/backup/configuration/storage/ftp.rb +4 -0
- data/lib/backup/configuration/storage/local.rb +17 -0
- data/lib/backup/configuration/storage/ninefold.rb +20 -0
- data/lib/backup/configuration/storage/rsync.rb +4 -0
- data/lib/backup/database/postgresql.rb +12 -3
- data/lib/backup/database/redis.rb +5 -1
- data/lib/backup/dependency.rb +11 -12
- data/lib/backup/encryptor/gpg.rb +2 -0
- data/lib/backup/exception/command_failed.rb +8 -0
- data/lib/backup/finder.rb +49 -9
- data/lib/backup/notifier/mail.rb +7 -1
- data/lib/backup/notifier/twitter.rb +1 -1
- data/lib/backup/storage/dropbox.rb +93 -16
- data/lib/backup/storage/ftp.rb +10 -3
- data/lib/backup/storage/local.rb +78 -0
- data/lib/backup/storage/ninefold.rb +96 -0
- data/lib/backup/storage/rsync.rb +37 -20
- data/lib/backup/storage/s3.rb +1 -1
- data/lib/backup/storage/scp.rb +1 -1
- data/lib/backup/syncer/rsync.rb +1 -1
- data/lib/backup/version.rb +1 -1
- data/lib/templates/compressor/lzma +7 -0
- data/lib/templates/storage/dropbox +2 -2
- data/lib/templates/storage/ftp +8 -7
- data/lib/templates/storage/local +7 -0
- data/lib/templates/storage/ninefold +9 -0
- data/lib/templates/storage/rsync +1 -0
- data/spec/archive_spec.rb +0 -1
- data/spec/compressor/bzip2_spec.rb +0 -1
- data/spec/compressor/gzip_spec.rb +0 -1
- data/spec/compressor/lzma_spec.rb +58 -0
- data/spec/configuration/compressor/bzip2_spec.rb +28 -0
- data/spec/configuration/compressor/lzma_spec.rb +28 -0
- data/spec/configuration/database/mongodb_spec.rb +16 -0
- data/spec/configuration/database/mysql_spec.rb +17 -0
- data/spec/configuration/database/postgresql_spec.rb +17 -0
- data/spec/configuration/database/redis_spec.rb +16 -0
- data/spec/configuration/notifier/campfire_spec.rb +11 -0
- data/spec/configuration/notifier/mail_spec.rb +20 -0
- data/spec/configuration/notifier/presently_spec.rb +34 -0
- data/spec/configuration/notifier/twitter_spec.rb +12 -0
- data/spec/configuration/storage/dropbox_spec.rb +0 -6
- data/spec/configuration/storage/ftp_spec.rb +15 -12
- data/spec/configuration/storage/local_spec.rb +28 -0
- data/spec/configuration/storage/ninefold_spec.rb +31 -0
- data/spec/configuration/storage/rsync_spec.rb +2 -0
- data/spec/database/mongodb_spec.rb +0 -1
- data/spec/database/mysql_spec.rb +0 -1
- data/spec/database/postgresql_spec.rb +31 -11
- data/spec/database/redis_spec.rb +9 -4
- data/spec/encryptor/gpg_spec.rb +1 -1
- data/spec/encryptor/open_ssl_spec.rb +0 -1
- data/spec/logger_spec.rb +32 -24
- data/spec/model_spec.rb +15 -15
- data/spec/spec_helper.rb +8 -4
- data/spec/storage/base_spec.rb +0 -4
- data/spec/storage/cloudfiles_spec.rb +0 -1
- data/spec/storage/dropbox_spec.rb +44 -14
- data/spec/storage/ftp_spec.rb +26 -15
- data/spec/storage/local_spec.rb +83 -0
- data/spec/storage/ninefold_spec.rb +142 -0
- data/spec/storage/object_spec.rb +1 -1
- data/spec/storage/rsync_spec.rb +17 -7
- data/spec/storage/s3_spec.rb +4 -3
- data/spec/storage/scp_spec.rb +0 -1
- data/spec/storage/sftp_spec.rb +0 -1
- data/spec/syncer/rsync_spec.rb +8 -8
- metadata +62 -36
@@ -0,0 +1,28 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
describe Backup::Configuration::Compressor::Bzip2 do
|
6
|
+
before do
|
7
|
+
Backup::Configuration::Compressor::Bzip2.defaults do |compressor|
|
8
|
+
compressor.best = true
|
9
|
+
compressor.fast = true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should set the default compressor configuration' do
|
14
|
+
compressor = Backup::Configuration::Compressor::Bzip2
|
15
|
+
compressor.best.should == true
|
16
|
+
compressor.fast.should == true
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#clear_defaults!' do
|
20
|
+
it 'should clear all the defaults, resetting them to nil' do
|
21
|
+
Backup::Configuration::Compressor::Bzip2.clear_defaults!
|
22
|
+
|
23
|
+
compressor = Backup::Configuration::Compressor::Bzip2
|
24
|
+
compressor.best.should == nil
|
25
|
+
compressor.fast.should == nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
describe Backup::Configuration::Compressor::Lzma do
|
6
|
+
before do
|
7
|
+
Backup::Configuration::Compressor::Lzma.defaults do |compressor|
|
8
|
+
compressor.best = true
|
9
|
+
compressor.fast = true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should set the default compressor configuration' do
|
14
|
+
compressor = Backup::Configuration::Compressor::Lzma
|
15
|
+
compressor.best.should == true
|
16
|
+
compressor.fast.should == true
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#clear_defaults!' do
|
20
|
+
it 'should clear all the defaults, resetting them to nil' do
|
21
|
+
Backup::Configuration::Compressor::Lzma.clear_defaults!
|
22
|
+
|
23
|
+
compressor = Backup::Configuration::Compressor::Lzma
|
24
|
+
compressor.best.should == nil
|
25
|
+
compressor.fast.should == nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -27,4 +27,20 @@ describe Backup::Configuration::Database::MongoDB do
|
|
27
27
|
db.additional_options.should == %w[my options]
|
28
28
|
db.ipv6.should == true
|
29
29
|
end
|
30
|
+
|
31
|
+
describe '#clear_defaults!' do
|
32
|
+
it 'should clear all the defaults, resetting them to nil' do
|
33
|
+
Backup::Configuration::Database::MongoDB.clear_defaults!
|
34
|
+
|
35
|
+
db = Backup::Configuration::Database::MongoDB
|
36
|
+
db.name.should == nil
|
37
|
+
db.username.should == nil
|
38
|
+
db.password.should == nil
|
39
|
+
db.host.should == nil
|
40
|
+
db.port.should == nil
|
41
|
+
db.only_collections.should == nil
|
42
|
+
db.additional_options.should == nil
|
43
|
+
db.ipv6.should == nil
|
44
|
+
end
|
45
|
+
end
|
30
46
|
end
|
@@ -29,4 +29,21 @@ describe Backup::Configuration::Database::MySQL do
|
|
29
29
|
db.only_tables.should == %w[my other tables]
|
30
30
|
db.additional_options.should == %w[my options]
|
31
31
|
end
|
32
|
+
|
33
|
+
describe '#clear_defaults!' do
|
34
|
+
it 'should clear all the defaults, resetting them to nil' do
|
35
|
+
Backup::Configuration::Database::MySQL.clear_defaults!
|
36
|
+
|
37
|
+
db = Backup::Configuration::Database::MySQL
|
38
|
+
db.name.should == nil
|
39
|
+
db.username.should == nil
|
40
|
+
db.password.should == nil
|
41
|
+
db.host.should == nil
|
42
|
+
db.port.should == nil
|
43
|
+
db.socket.should == nil
|
44
|
+
db.skip_tables.should == nil
|
45
|
+
db.only_tables.should == nil
|
46
|
+
db.additional_options.should == nil
|
47
|
+
end
|
48
|
+
end
|
32
49
|
end
|
@@ -29,4 +29,21 @@ describe Backup::Configuration::Database::PostgreSQL do
|
|
29
29
|
db.only_tables.should == %w[my other tables]
|
30
30
|
db.additional_options.should == %w[my options]
|
31
31
|
end
|
32
|
+
|
33
|
+
describe '#clear_defaults!' do
|
34
|
+
it 'should clear all the defaults, resetting them to nil' do
|
35
|
+
Backup::Configuration::Database::PostgreSQL.clear_defaults!
|
36
|
+
|
37
|
+
db = Backup::Configuration::Database::PostgreSQL
|
38
|
+
db.name.should == nil
|
39
|
+
db.username.should == nil
|
40
|
+
db.password.should == nil
|
41
|
+
db.host.should == nil
|
42
|
+
db.port.should == nil
|
43
|
+
db.socket.should == nil
|
44
|
+
db.skip_tables.should == nil
|
45
|
+
db.only_tables.should == nil
|
46
|
+
db.additional_options.should == nil
|
47
|
+
end
|
48
|
+
end
|
32
49
|
end
|
@@ -27,4 +27,20 @@ describe Backup::Configuration::Database::Redis do
|
|
27
27
|
db.socket.should == '/redis.sock'
|
28
28
|
db.additional_options.should == %w[my options]
|
29
29
|
end
|
30
|
+
|
31
|
+
describe '#clear_defaults!' do
|
32
|
+
it 'should clear all the defaults, resetting them to nil' do
|
33
|
+
Backup::Configuration::Database::Redis.clear_defaults!
|
34
|
+
|
35
|
+
db = Backup::Configuration::Database::Redis
|
36
|
+
db.name.should == nil
|
37
|
+
db.path.should == nil
|
38
|
+
db.password.should == nil
|
39
|
+
db.invoke_save.should == nil
|
40
|
+
db.host.should == nil
|
41
|
+
db.port.should == nil
|
42
|
+
db.socket.should == nil
|
43
|
+
db.additional_options.should == nil
|
44
|
+
end
|
45
|
+
end
|
30
46
|
end
|
@@ -17,4 +17,15 @@ describe Backup::Configuration::Notifier::Campfire do
|
|
17
17
|
campfire.subdomain.should == 'my_subdomain'
|
18
18
|
campfire.room_id.should == 'my_room_id'
|
19
19
|
end
|
20
|
+
|
21
|
+
describe '#clear_defaults!' do
|
22
|
+
it 'should clear all the defaults, resetting them to nil' do
|
23
|
+
Backup::Configuration::Notifier::Campfire.clear_defaults!
|
24
|
+
|
25
|
+
campfire = Backup::Configuration::Notifier::Campfire
|
26
|
+
campfire.api_token.should == nil
|
27
|
+
campfire.subdomain.should == nil
|
28
|
+
campfire.room_id.should == nil
|
29
|
+
end
|
30
|
+
end
|
20
31
|
end
|
@@ -14,6 +14,7 @@ describe Backup::Configuration::Notifier::Mail do
|
|
14
14
|
mail.password = 'secret'
|
15
15
|
mail.authentication = 'plain'
|
16
16
|
mail.enable_starttls_auto = true
|
17
|
+
mail.openssl_verify_mode = true
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
@@ -28,5 +29,24 @@ describe Backup::Configuration::Notifier::Mail do
|
|
28
29
|
mail.password.should == 'secret'
|
29
30
|
mail.authentication.should == 'plain'
|
30
31
|
mail.enable_starttls_auto.should == true
|
32
|
+
mail.openssl_verify_mode.should == true
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#clear_defaults!' do
|
36
|
+
it 'should clear all the defaults, resetting them to nil' do
|
37
|
+
Backup::Configuration::Notifier::Mail.clear_defaults!
|
38
|
+
|
39
|
+
mail = Backup::Configuration::Notifier::Mail
|
40
|
+
mail.from.should == nil
|
41
|
+
mail.to.should == nil
|
42
|
+
mail.address.should == nil
|
43
|
+
mail.port.should == nil
|
44
|
+
mail.domain.should == nil
|
45
|
+
mail.user_name.should == nil
|
46
|
+
mail.password.should == nil
|
47
|
+
mail.authentication.should == nil
|
48
|
+
mail.enable_starttls_auto.should == nil
|
49
|
+
mail.openssl_verify_mode.should == nil
|
50
|
+
end
|
31
51
|
end
|
32
52
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
describe Backup::Configuration::Notifier::Presently do
|
6
|
+
before do
|
7
|
+
Backup::Configuration::Notifier::Presently.defaults do |presently|
|
8
|
+
presently.subdomain = 'my_subdomain'
|
9
|
+
presently.user_name = 'my_user_name'
|
10
|
+
presently.password = 'my_password'
|
11
|
+
presently.group_id = 'my_group_id'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should set the default tweet configuration' do
|
16
|
+
presently = Backup::Configuration::Notifier::Presently
|
17
|
+
presently.subdomain.should == 'my_subdomain'
|
18
|
+
presently.user_name.should == 'my_user_name'
|
19
|
+
presently.password.should == 'my_password'
|
20
|
+
presently.group_id.should == 'my_group_id'
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '#clear_defaults!' do
|
24
|
+
it 'should clear all the defaults, resetting them to nil' do
|
25
|
+
Backup::Configuration::Notifier::Presently.clear_defaults!
|
26
|
+
|
27
|
+
presently = Backup::Configuration::Notifier::Presently
|
28
|
+
presently.subdomain.should == nil
|
29
|
+
presently.user_name.should == nil
|
30
|
+
presently.password.should == nil
|
31
|
+
presently.group_id.should == nil
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -19,4 +19,16 @@ describe Backup::Configuration::Notifier::Twitter do
|
|
19
19
|
tweet.oauth_token.should == 'my_oauth_token'
|
20
20
|
tweet.oauth_token_secret.should == 'my_oauth_token_secret'
|
21
21
|
end
|
22
|
+
|
23
|
+
describe '#clear_defaults!' do
|
24
|
+
it 'should clear all the defaults, resetting them to nil' do
|
25
|
+
Backup::Configuration::Notifier::Twitter.clear_defaults!
|
26
|
+
|
27
|
+
tweet = Backup::Configuration::Notifier::Twitter
|
28
|
+
tweet.consumer_key.should == nil
|
29
|
+
tweet.consumer_secret.should == nil
|
30
|
+
tweet.oauth_token.should == nil
|
31
|
+
tweet.oauth_token_secret.should == nil
|
32
|
+
end
|
33
|
+
end
|
22
34
|
end
|
@@ -5,8 +5,6 @@ require File.dirname(__FILE__) + '/../../spec_helper'
|
|
5
5
|
describe Backup::Configuration::Storage::Dropbox do
|
6
6
|
before do
|
7
7
|
Backup::Configuration::Storage::Dropbox.defaults do |db|
|
8
|
-
db.email = 'my@email.com'
|
9
|
-
db.password = 'my_password'
|
10
8
|
db.api_key = 'my_api_key'
|
11
9
|
db.api_secret = 'my_secret'
|
12
10
|
db.path = 'my_backups'
|
@@ -17,8 +15,6 @@ describe Backup::Configuration::Storage::Dropbox do
|
|
17
15
|
|
18
16
|
it 'should set the default Dropbox configuration' do
|
19
17
|
db = Backup::Configuration::Storage::Dropbox
|
20
|
-
db.email.should == 'my@email.com'
|
21
|
-
db.password.should == 'my_password'
|
22
18
|
db.api_key.should == 'my_api_key'
|
23
19
|
db.api_secret.should == 'my_secret'
|
24
20
|
db.path.should == 'my_backups'
|
@@ -31,8 +27,6 @@ describe Backup::Configuration::Storage::Dropbox do
|
|
31
27
|
Backup::Configuration::Storage::Dropbox.clear_defaults!
|
32
28
|
|
33
29
|
db = Backup::Configuration::Storage::Dropbox
|
34
|
-
db.email.should == nil
|
35
|
-
db.password.should == nil
|
36
30
|
db.api_key.should == nil
|
37
31
|
db.api_secret.should == nil
|
38
32
|
db.path.should == nil
|
@@ -5,12 +5,13 @@ require File.dirname(__FILE__) + '/../../spec_helper'
|
|
5
5
|
describe Backup::Configuration::Storage::FTP do
|
6
6
|
before do
|
7
7
|
Backup::Configuration::Storage::FTP.defaults do |ftp|
|
8
|
-
ftp.username
|
9
|
-
ftp.password
|
10
|
-
ftp.ip
|
11
|
-
ftp.port
|
12
|
-
ftp.path
|
13
|
-
ftp.keep
|
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
|
+
ftp.passive_mode = false
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
@@ -22,6 +23,7 @@ describe Backup::Configuration::Storage::FTP do
|
|
22
23
|
ftp.port.should == 21
|
23
24
|
ftp.path.should == 'my_backups'
|
24
25
|
ftp.keep.should == 20
|
26
|
+
ftp.passive_mode == false
|
25
27
|
end
|
26
28
|
|
27
29
|
describe '#clear_defaults!' do
|
@@ -29,12 +31,13 @@ describe Backup::Configuration::Storage::FTP do
|
|
29
31
|
Backup::Configuration::Storage::FTP.clear_defaults!
|
30
32
|
|
31
33
|
ftp = Backup::Configuration::Storage::FTP
|
32
|
-
ftp.username.should
|
33
|
-
ftp.password.should
|
34
|
-
ftp.ip.should
|
35
|
-
ftp.port.should
|
36
|
-
ftp.path.should
|
37
|
-
ftp.keep.should
|
34
|
+
ftp.username.should == nil
|
35
|
+
ftp.password.should == nil
|
36
|
+
ftp.ip.should == nil
|
37
|
+
ftp.port.should == nil
|
38
|
+
ftp.path.should == nil
|
39
|
+
ftp.keep.should == nil
|
40
|
+
ftp.passive_mode.should == nil
|
38
41
|
end
|
39
42
|
end
|
40
43
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
describe Backup::Configuration::Storage::Local do
|
6
|
+
before do
|
7
|
+
Backup::Configuration::Storage::Local.defaults do |local|
|
8
|
+
local.path = 'my_backups'
|
9
|
+
local.keep = 20
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should set the default local configuration' do
|
14
|
+
local = Backup::Configuration::Storage::Local
|
15
|
+
local.path.should == 'my_backups'
|
16
|
+
local.keep.should == 20
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '#clear_defaults!' do
|
20
|
+
it 'should clear all the defaults, resetting them to nil' do
|
21
|
+
Backup::Configuration::Storage::Local.clear_defaults!
|
22
|
+
|
23
|
+
local = Backup::Configuration::Storage::Local
|
24
|
+
local.path.should == nil
|
25
|
+
local.keep.should == nil
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
describe Backup::Configuration::Storage::Ninefold do
|
6
|
+
before do
|
7
|
+
Backup::Configuration::Storage::Ninefold.defaults do |nf|
|
8
|
+
nf.storage_token = 'my_storage_token'
|
9
|
+
nf.storage_secret = 'my_storage_secret'
|
10
|
+
nf.path = 'my_backups'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should set the default Ninefold configuration' do
|
15
|
+
ninefold = Backup::Configuration::Storage::Ninefold
|
16
|
+
ninefold.storage_token.should == 'my_storage_token'
|
17
|
+
ninefold.storage_secret.should == 'my_storage_secret'
|
18
|
+
ninefold.path.should == 'my_backups'
|
19
|
+
end
|
20
|
+
|
21
|
+
describe '#clear_defaults!' do
|
22
|
+
it 'should clear all the defaults, resetting them to nil' do
|
23
|
+
Backup::Configuration::Storage::Ninefold.clear_defaults!
|
24
|
+
|
25
|
+
ninefold = Backup::Configuration::Storage::Ninefold
|
26
|
+
ninefold.storage_token.should == nil
|
27
|
+
ninefold.storage_secret.should == nil
|
28
|
+
ninefold.path.should == nil
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -20,6 +20,7 @@ describe Backup::Configuration::Storage::RSync do
|
|
20
20
|
rsync.ip.should == '123.45.678.90'
|
21
21
|
rsync.port.should == 21
|
22
22
|
rsync.path.should == 'my_backups'
|
23
|
+
rsync.local.should == nil
|
23
24
|
end
|
24
25
|
|
25
26
|
describe '#clear_defaults!' do
|
@@ -32,6 +33,7 @@ describe Backup::Configuration::Storage::RSync do
|
|
32
33
|
rsync.ip.should == nil
|
33
34
|
rsync.port.should == nil
|
34
35
|
rsync.path.should == nil
|
36
|
+
rsync.local.should == nil
|
35
37
|
end
|
36
38
|
end
|
37
39
|
end
|
data/spec/database/mysql_spec.rb
CHANGED
@@ -49,18 +49,20 @@ describe Backup::Database::PostgreSQL do
|
|
49
49
|
db.additional_options.should == []
|
50
50
|
end
|
51
51
|
|
52
|
-
it do
|
52
|
+
it 'handles an empty username' do
|
53
53
|
db = Backup::Database::PostgreSQL.new {}
|
54
54
|
db.username = ''
|
55
55
|
|
56
|
-
db.
|
56
|
+
db.username_options.should == ''
|
57
|
+
db.password_options.should == ''
|
57
58
|
end
|
58
59
|
|
59
|
-
it do
|
60
|
+
it 'handles a nil username' do
|
60
61
|
db = Backup::Database::PostgreSQL.new {}
|
61
62
|
db.username = nil
|
62
63
|
|
63
|
-
db.
|
64
|
+
db.username_options.should == ''
|
65
|
+
db.password_options.should == ''
|
64
66
|
end
|
65
67
|
|
66
68
|
it 'should ensure the directory is available' do
|
@@ -91,9 +93,9 @@ describe Backup::Database::PostgreSQL do
|
|
91
93
|
end
|
92
94
|
end
|
93
95
|
|
94
|
-
describe '#
|
95
|
-
it 'should return the postgresql syntax for the
|
96
|
-
db.
|
96
|
+
describe '#username_options' do
|
97
|
+
it 'should return the postgresql syntax for the username options' do
|
98
|
+
db.username_options.should == "--username='someuser'"
|
97
99
|
end
|
98
100
|
|
99
101
|
it 'should only return the postgresql syntax for the user' do
|
@@ -101,7 +103,13 @@ describe Backup::Database::PostgreSQL do
|
|
101
103
|
db.username = 'someuser'
|
102
104
|
end
|
103
105
|
|
104
|
-
db.
|
106
|
+
db.username_options.should == "--username='someuser'"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe '#password_options' do
|
111
|
+
it 'returns the environment variable set for the password' do
|
112
|
+
db.password_options.should == "PGPASSWORD='secret'"
|
105
113
|
end
|
106
114
|
end
|
107
115
|
|
@@ -133,19 +141,31 @@ describe Backup::Database::PostgreSQL do
|
|
133
141
|
end
|
134
142
|
|
135
143
|
describe '#pg_dump_string' do
|
136
|
-
|
144
|
+
before do
|
137
145
|
db.expects(:utility).with(:pg_dump).returns('pg_dump')
|
146
|
+
end
|
147
|
+
|
148
|
+
it 'should return the full pg_dump string' do
|
138
149
|
db.pgdump.should ==
|
139
|
-
"pg_dump --username='someuser' " +
|
150
|
+
"PGPASSWORD='secret' pg_dump --username='someuser' " +
|
140
151
|
"--host='localhost' --port='123' --host='/pg.sock' " +
|
141
152
|
"--single-transaction --quick --table='users' --table='pirates' " +
|
142
153
|
"--exclude-table='logs' --exclude-table='profiles' mydatabase"
|
143
154
|
end
|
155
|
+
|
156
|
+
it 'returns the full pg_dump string when a password is not specified' do
|
157
|
+
db.password = nil
|
158
|
+
db.pgdump.should ==
|
159
|
+
"pg_dump --username='someuser' " +
|
160
|
+
"--host='localhost' --port='123' --host='/pg.sock' " +
|
161
|
+
"--single-transaction --quick --table='users' --table='pirates' " +
|
162
|
+
"--exclude-table='logs' --exclude-table='profiles' mydatabase"
|
163
|
+
|
164
|
+
end
|
144
165
|
end
|
145
166
|
|
146
167
|
describe '#perform!' do
|
147
168
|
before do
|
148
|
-
Backup::Logger.stubs(:message)
|
149
169
|
db.stubs(:utility).returns('pg_dump')
|
150
170
|
db.stubs(:mkdir)
|
151
171
|
db.stubs(:run)
|