imap-backup 4.0.4 → 4.1.1

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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/bin/imap-backup +5 -2
  3. data/lib/email/provider/apple_mail.rb +2 -2
  4. data/lib/email/provider/base.rb +8 -0
  5. data/lib/email/provider/fastmail.rb +2 -2
  6. data/lib/email/provider/gmail.rb +2 -2
  7. data/lib/email/provider/{default.rb → unknown.rb} +2 -3
  8. data/lib/email/provider.rb +2 -2
  9. data/lib/imap/backup/account/connection.rb +70 -58
  10. data/lib/imap/backup/account/folder.rb +23 -3
  11. data/lib/imap/backup/account.rb +102 -0
  12. data/lib/imap/backup/cli/accounts.rb +43 -0
  13. data/lib/imap/backup/cli/folders.rb +3 -1
  14. data/lib/imap/backup/cli/helpers.rb +8 -9
  15. data/lib/imap/backup/cli/local.rb +4 -2
  16. data/lib/imap/backup/cli/setup.rb +1 -1
  17. data/lib/imap/backup/cli/utils.rb +3 -2
  18. data/lib/imap/backup/{configuration/store.rb → configuration.rb} +49 -14
  19. data/lib/imap/backup/downloader.rb +26 -12
  20. data/lib/imap/backup/logger.rb +42 -0
  21. data/lib/imap/backup/sanitizer.rb +42 -0
  22. data/lib/imap/backup/serializer/mbox_store.rb +2 -2
  23. data/lib/imap/backup/setup/account.rb +177 -0
  24. data/lib/imap/backup/{configuration → setup}/asker.rb +5 -5
  25. data/lib/imap/backup/setup/connection_tester.rb +26 -0
  26. data/lib/imap/backup/{configuration → setup}/folder_chooser.rb +25 -17
  27. data/lib/imap/backup/setup/helpers.rb +15 -0
  28. data/lib/imap/backup/{configuration/setup.rb → setup.rb} +33 -25
  29. data/lib/imap/backup/uploader.rb +2 -2
  30. data/lib/imap/backup/version.rb +2 -2
  31. data/lib/imap/backup.rb +7 -33
  32. data/lib/retry_on_error.rb +1 -1
  33. data/spec/features/backup_spec.rb +1 -0
  34. data/spec/features/support/email_server.rb +5 -2
  35. data/spec/features/support/shared/connection_context.rb +7 -5
  36. data/spec/support/higline_test_helpers.rb +1 -1
  37. data/spec/support/silence_logging.rb +1 -1
  38. data/spec/unit/email/provider/{default_spec.rb → base_spec.rb} +1 -7
  39. data/spec/unit/email/provider_spec.rb +2 -2
  40. data/spec/unit/imap/backup/account/connection_spec.rb +22 -26
  41. data/spec/unit/imap/backup/cli/accounts_spec.rb +47 -0
  42. data/spec/unit/imap/backup/cli/local_spec.rb +15 -4
  43. data/spec/unit/imap/backup/cli/utils_spec.rb +54 -42
  44. data/spec/unit/imap/backup/{configuration/store_spec.rb → configuration_spec.rb} +23 -24
  45. data/spec/unit/imap/backup/downloader_spec.rb +1 -1
  46. data/spec/unit/imap/backup/logger_spec.rb +48 -0
  47. data/spec/unit/imap/backup/{configuration → setup}/account_spec.rb +78 -70
  48. data/spec/unit/imap/backup/{configuration → setup}/asker_spec.rb +2 -2
  49. data/spec/unit/imap/backup/{configuration → setup}/connection_tester_spec.rb +10 -10
  50. data/spec/unit/imap/backup/{configuration → setup}/folder_chooser_spec.rb +25 -26
  51. data/spec/unit/imap/backup/{configuration/setup_spec.rb → setup_spec.rb} +81 -52
  52. metadata +54 -51
  53. data/lib/imap/backup/configuration/account.rb +0 -159
  54. data/lib/imap/backup/configuration/connection_tester.rb +0 -14
  55. data/lib/imap/backup/configuration/list.rb +0 -53
  56. data/spec/support/shared_examples/account_flagging.rb +0 -23
  57. data/spec/unit/imap/backup/configuration/list_spec.rb +0 -89
  58. data/spec/unit/imap/backup_spec.rb +0 -28
@@ -1,23 +0,0 @@
1
- shared_examples "it flags the account as modified" do
2
- it "flags that the account has changed" do
3
- expect(account[:modified]).to be_truthy
4
- end
5
- end
6
-
7
- shared_examples "it doesn't flag the account as modified" do
8
- it "does not flag that the account has changed" do
9
- expect(account[:modified]).to be_falsey
10
- end
11
- end
12
-
13
- shared_examples "it flags the account to be deleted" do
14
- it "flags that the account is to be deleted" do
15
- expect(account[:delete]).to be_truthy
16
- end
17
- end
18
-
19
- shared_examples "it doesn't flag the account to be deleted" do
20
- it "does not flags that the account is to be deleted" do
21
- expect(account[:delete]).to be_falsey
22
- end
23
- end
@@ -1,89 +0,0 @@
1
- describe Imap::Backup::Configuration::List do
2
- subject { described_class.new }
3
-
4
- let(:accounts) do
5
- [
6
- {username: "a1@example.com"},
7
- {username: "a2@example.com"}
8
- ]
9
- end
10
- let(:store) do
11
- instance_double(Imap::Backup::Configuration::Store, accounts: accounts)
12
- end
13
- let(:exists) { true }
14
- let(:connection1) do
15
- instance_double(Imap::Backup::Account::Connection, disconnect: nil)
16
- end
17
- let(:connection2) do
18
- instance_double(Imap::Backup::Account::Connection, disconnect: nil)
19
- end
20
-
21
- before do
22
- allow(Imap::Backup::Configuration::Store).to receive(:new) { store }
23
- allow(Imap::Backup::Configuration::Store).
24
- to receive(:exist?) { exists }
25
- allow(Imap::Backup::Account::Connection).
26
- to receive(:new).with(accounts[0]) { connection1 }
27
- allow(Imap::Backup::Account::Connection).
28
- to receive(:new).with(accounts[1]) { connection2 }
29
- end
30
-
31
- describe "#setup_logging" do
32
- let(:config_exists) { true }
33
-
34
- before do
35
- allow(Imap::Backup::Configuration::Store).
36
- to receive(:exist?) { config_exists }
37
- allow(Imap::Backup).to receive(:setup_logging)
38
- allow(store).to receive(:debug?)
39
- end
40
-
41
- it "sets global logging level" do
42
- expect(Imap::Backup).to receive(:setup_logging).with(store)
43
-
44
- subject.setup_logging
45
- end
46
-
47
- context "without a config" do
48
- let(:config_exists) { false }
49
-
50
- it "does nothing" do
51
- expect(Imap::Backup).to_not receive(:setup_logging).with(store)
52
-
53
- subject.setup_logging
54
- end
55
- end
56
- end
57
-
58
- describe "#each_connection" do
59
- specify "calls the block with each account's connection" do
60
- connections = []
61
-
62
- subject.each_connection { |a| connections << a }
63
-
64
- expect(connections).to eq([connection1, connection2])
65
- end
66
-
67
- context "with account parameter" do
68
- subject { described_class.new(["a2@example.com"]) }
69
-
70
- it "only creates requested accounts" do
71
- connections = []
72
-
73
- subject.each_connection { |a| connections << a }
74
-
75
- expect(connections).to eq([connection2])
76
- end
77
- end
78
-
79
- context "when the configuration file is missing" do
80
- let(:exists) { false }
81
-
82
- it "fails" do
83
- expect do
84
- subject.each_connection {}
85
- end.to raise_error(Imap::Backup::ConfigurationNotFound, /not found/)
86
- end
87
- end
88
- end
89
- end
@@ -1,28 +0,0 @@
1
- require "ostruct"
2
- require "imap/backup"
3
-
4
- describe Imap::Backup do
5
- describe ".setup_logging" do
6
- let!(:previous) { described_class.logger.level }
7
-
8
- before { described_class.setup_logging(config) }
9
-
10
- after { described_class.logger.level = previous }
11
-
12
- context "when config.debug?" do
13
- let(:config) { OpenStruct.new(debug?: true) }
14
-
15
- it "sets logger level to debug" do
16
- expect(described_class.logger.level).to eq(::Logger::Severity::DEBUG)
17
- end
18
- end
19
-
20
- context "when not config.debug?" do
21
- let(:config) { OpenStruct.new(debug?: false) }
22
-
23
- it "sets logger level to debug" do
24
- expect(described_class.logger.level).to eq(::Logger::Severity::ERROR)
25
- end
26
- end
27
- end
28
- end