imap-backup 2.1.1 → 2.2.0

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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -0
  3. data/README.md +6 -2
  4. data/bin/imap-backup +1 -1
  5. data/lib/email/mboxrd/message.rb +0 -1
  6. data/lib/imap/backup/account/connection.rb +28 -21
  7. data/lib/imap/backup/account/folder.rb +0 -1
  8. data/lib/imap/backup/serializer/mbox_enumerator.rb +1 -1
  9. data/lib/imap/backup/uploader.rb +10 -1
  10. data/lib/imap/backup/version.rb +2 -2
  11. data/spec/features/restore_spec.rb +75 -27
  12. data/spec/features/support/email_server.rb +1 -3
  13. data/spec/features/support/shared/message_fixtures.rb +8 -0
  14. data/spec/unit/email/mboxrd/message_spec.rb +0 -6
  15. data/spec/unit/imap/backup/account/connection_spec.rb +58 -43
  16. data/spec/unit/imap/backup/account/folder_spec.rb +16 -20
  17. data/spec/unit/imap/backup/configuration/account_spec.rb +31 -25
  18. data/spec/unit/imap/backup/configuration/asker_spec.rb +20 -17
  19. data/spec/unit/imap/backup/configuration/connection_tester_spec.rb +6 -10
  20. data/spec/unit/imap/backup/configuration/folder_chooser_spec.rb +16 -10
  21. data/spec/unit/imap/backup/configuration/list_spec.rb +6 -3
  22. data/spec/unit/imap/backup/configuration/setup_spec.rb +40 -25
  23. data/spec/unit/imap/backup/configuration/store_spec.rb +18 -16
  24. data/spec/unit/imap/backup/downloader_spec.rb +14 -14
  25. data/spec/unit/imap/backup/serializer/mbox_enumerator_spec.rb +6 -1
  26. data/spec/unit/imap/backup/serializer/mbox_spec.rb +54 -40
  27. data/spec/unit/imap/backup/serializer/mbox_store_spec.rb +49 -31
  28. data/spec/unit/imap/backup/uploader_spec.rb +20 -7
  29. data/spec/unit/imap/backup/utils_spec.rb +8 -9
  30. metadata +2 -2
@@ -2,7 +2,9 @@ describe Imap::Backup::Uploader do
2
2
  subject { described_class.new(folder, serializer) }
3
3
 
4
4
  let(:folder) do
5
- instance_double(Imap::Backup::Account::Folder, uids: [2, 3], append: 99)
5
+ instance_double(
6
+ Imap::Backup::Account::Folder, uids: [2, 3], append: 99, name: "foo"
7
+ )
6
8
  end
7
9
  let(:serializer) do
8
10
  instance_double(
@@ -11,27 +13,38 @@ describe Imap::Backup::Uploader do
11
13
  update_uid: nil
12
14
  )
13
15
  end
16
+ let(:missing_message) do
17
+ instance_double(Email::Mboxrd::Message, supplied_body: "missing message")
18
+ end
19
+ let(:existing_message) do
20
+ instance_double(Email::Mboxrd::Message, supplied_body: "existing message")
21
+ end
14
22
 
15
23
  describe "#run" do
16
24
  before do
17
- allow(serializer).to receive(:load).with(1) { "missing message" }
18
- allow(serializer).to receive(:load).with(2) { "existing message" }
19
- subject.run
25
+ allow(serializer).to receive(:load).with(1) { missing_message }
26
+ allow(serializer).to receive(:load).with(2) { existing_message }
20
27
  end
21
28
 
22
29
  context "with messages that are missing" do
23
30
  it "restores them" do
24
- expect(folder).to have_received(:append).with("missing message")
31
+ expect(folder).to receive(:append).with(missing_message)
32
+
33
+ subject.run
25
34
  end
26
35
 
27
36
  it "updates the local message id" do
28
- expect(serializer).to have_received(:update_uid).with(1, 99)
37
+ expect(serializer).to receive(:update_uid).with(1, 99)
38
+
39
+ subject.run
29
40
  end
30
41
  end
31
42
 
32
43
  context "with messages that are present on server" do
33
44
  it "does nothing" do
34
- expect(folder).to_not have_received(:append).with("existing message")
45
+ expect(folder).to_not receive(:append).with(existing_message)
46
+
47
+ subject.run
35
48
  end
36
49
  end
37
50
  end
@@ -5,8 +5,8 @@ describe Imap::Backup::Utils do
5
5
  let(:exists) { true }
6
6
 
7
7
  before do
8
- allow(File).to receive(:stat).and_return(stat)
9
- allow(File).to receive(:exist?).with(filename).and_return(exists)
8
+ allow(File).to receive(:stat) { stat }
9
+ allow(File).to receive(:exist?).with(filename) { exists }
10
10
  end
11
11
 
12
12
  describe ".check_permissions" do
@@ -72,22 +72,21 @@ describe Imap::Backup::Utils do
72
72
  end
73
73
 
74
74
  it "does nothing if an empty path is supplied" do
75
- described_class.make_folder("aaa", "", 0o222)
75
+ expect(FileUtils).to_not receive(:mkdir_p)
76
76
 
77
- expect(FileUtils).to_not have_received(:mkdir_p)
77
+ described_class.make_folder("aaa", "", 0o222)
78
78
  end
79
79
 
80
80
  it "creates the path" do
81
- described_class.make_folder("/base/path", "new/folder", 0o222)
81
+ expect(FileUtils).to receive(:mkdir_p).with("/base/path/new/folder")
82
82
 
83
- expect(FileUtils).to have_received(:mkdir_p).with("/base/path/new/folder")
83
+ described_class.make_folder("/base/path", "new/folder", 0o222)
84
84
  end
85
85
 
86
86
  it "sets permissions on the path" do
87
- described_class.make_folder("/base/path/new", "folder", 0o222)
87
+ expect(FileUtils).to receive(:chmod).with(0o222, "/base/path/new/folder")
88
88
 
89
- expect(FileUtils).
90
- to have_received(:chmod).with(0o222, "/base/path/new/folder")
89
+ described_class.make_folder("/base/path/new", "folder", 0o222)
91
90
  end
92
91
  end
93
92
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imap-backup
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Yates
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-12 00:00:00.000000000 Z
11
+ date: 2019-09-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline