backup 3.0.16 → 3.0.18
Sign up to get free protection for your applications and to get access to all the features.
- 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)
|