imap-backup 6.0.0.rc2 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/imap-backup.gemspec +5 -1
  3. data/lib/cli_coverage.rb +11 -11
  4. data/lib/email/provider/base.rb +2 -0
  5. data/lib/email/provider/unknown.rb +2 -0
  6. data/lib/email/provider.rb +2 -0
  7. data/lib/imap/backup/account/connection/backup_folders.rb +27 -0
  8. data/lib/imap/backup/account/connection/client_factory.rb +54 -0
  9. data/lib/imap/backup/account/connection/folder_names.rb +26 -0
  10. data/lib/imap/backup/account/connection.rb +11 -95
  11. data/lib/imap/backup/account/folder.rb +9 -6
  12. data/lib/imap/backup/account.rb +3 -5
  13. data/lib/imap/backup/cli/backup.rb +1 -3
  14. data/lib/imap/backup/cli/helpers.rb +24 -22
  15. data/lib/imap/backup/cli/local.rb +20 -13
  16. data/lib/imap/backup/cli/migrate.rb +4 -10
  17. data/lib/imap/backup/cli/restore.rb +8 -7
  18. data/lib/imap/backup/cli/setup.rb +10 -8
  19. data/lib/imap/backup/cli/stats.rb +78 -0
  20. data/lib/imap/backup/cli/status.rb +2 -2
  21. data/lib/imap/backup/cli/utils.rb +4 -6
  22. data/lib/imap/backup/cli.rb +24 -3
  23. data/lib/imap/backup/configuration.rb +9 -11
  24. data/lib/imap/backup/downloader.rb +48 -30
  25. data/lib/imap/backup/migrator.rb +5 -5
  26. data/lib/imap/backup/sanitizer.rb +3 -2
  27. data/lib/imap/backup/serializer/appender.rb +49 -0
  28. data/lib/imap/backup/serializer/message_enumerator.rb +29 -0
  29. data/lib/imap/backup/serializer/unused_name_finder.rb +27 -0
  30. data/lib/imap/backup/serializer.rb +24 -78
  31. data/lib/imap/backup/setup/account/header.rb +75 -0
  32. data/lib/imap/backup/setup/account.rb +14 -91
  33. data/lib/imap/backup/setup/asker.rb +4 -15
  34. data/lib/imap/backup/setup/backup_path.rb +41 -0
  35. data/lib/imap/backup/setup/email.rb +45 -0
  36. data/lib/imap/backup/setup/folder_chooser.rb +3 -3
  37. data/lib/imap/backup/setup/helpers.rb +1 -1
  38. data/lib/imap/backup/setup.rb +5 -4
  39. data/lib/imap/backup/thunderbird/mailbox_exporter.rb +39 -20
  40. data/lib/imap/backup/uploader.rb +46 -8
  41. data/lib/imap/backup/utils.rb +1 -1
  42. data/lib/imap/backup/version.rb +1 -1
  43. data/lib/imap/backup.rb +0 -1
  44. metadata +31 -134
  45. data/spec/features/backup_spec.rb +0 -100
  46. data/spec/features/configuration/minimal_configuration.rb +0 -15
  47. data/spec/features/configuration/missing_configuration.rb +0 -14
  48. data/spec/features/folders_spec.rb +0 -36
  49. data/spec/features/helper.rb +0 -2
  50. data/spec/features/local/list_accounts_spec.rb +0 -12
  51. data/spec/features/local/list_emails_spec.rb +0 -21
  52. data/spec/features/local/list_folders_spec.rb +0 -21
  53. data/spec/features/local/show_an_email_spec.rb +0 -34
  54. data/spec/features/migrate_spec.rb +0 -35
  55. data/spec/features/remote/list_account_folders_spec.rb +0 -16
  56. data/spec/features/restore_spec.rb +0 -162
  57. data/spec/features/status_spec.rb +0 -43
  58. data/spec/features/support/aruba.rb +0 -78
  59. data/spec/features/support/backup_directory.rb +0 -43
  60. data/spec/features/support/email_server.rb +0 -110
  61. data/spec/features/support/shared/connection_context.rb +0 -14
  62. data/spec/features/support/shared/message_fixtures.rb +0 -16
  63. data/spec/fixtures/connection.yml +0 -7
  64. data/spec/spec_helper.rb +0 -15
  65. data/spec/support/fixtures.rb +0 -11
  66. data/spec/support/higline_test_helpers.rb +0 -8
  67. data/spec/support/silence_logging.rb +0 -7
  68. data/spec/unit/email/mboxrd/message_spec.rb +0 -177
  69. data/spec/unit/email/provider/apple_mail_spec.rb +0 -7
  70. data/spec/unit/email/provider/base_spec.rb +0 -11
  71. data/spec/unit/email/provider/fastmail_spec.rb +0 -7
  72. data/spec/unit/email/provider/gmail_spec.rb +0 -7
  73. data/spec/unit/email/provider_spec.rb +0 -27
  74. data/spec/unit/imap/backup/account/connection_spec.rb +0 -433
  75. data/spec/unit/imap/backup/account/folder_spec.rb +0 -261
  76. data/spec/unit/imap/backup/account_spec.rb +0 -246
  77. data/spec/unit/imap/backup/cli/accounts_spec.rb +0 -58
  78. data/spec/unit/imap/backup/cli/backup_spec.rb +0 -19
  79. data/spec/unit/imap/backup/cli/folders_spec.rb +0 -39
  80. data/spec/unit/imap/backup/cli/helpers_spec.rb +0 -87
  81. data/spec/unit/imap/backup/cli/local_spec.rb +0 -100
  82. data/spec/unit/imap/backup/cli/migrate_spec.rb +0 -80
  83. data/spec/unit/imap/backup/cli/restore_spec.rb +0 -67
  84. data/spec/unit/imap/backup/cli/setup_spec.rb +0 -17
  85. data/spec/unit/imap/backup/cli/utils_spec.rb +0 -125
  86. data/spec/unit/imap/backup/cli_spec.rb +0 -93
  87. data/spec/unit/imap/backup/client/apple_mail_spec.rb +0 -9
  88. data/spec/unit/imap/backup/client/default_spec.rb +0 -22
  89. data/spec/unit/imap/backup/configuration_spec.rb +0 -238
  90. data/spec/unit/imap/backup/downloader_spec.rb +0 -96
  91. data/spec/unit/imap/backup/logger_spec.rb +0 -48
  92. data/spec/unit/imap/backup/migrator_spec.rb +0 -58
  93. data/spec/unit/imap/backup/sanitizer_spec.rb +0 -42
  94. data/spec/unit/imap/backup/serializer/directory_spec.rb +0 -37
  95. data/spec/unit/imap/backup/serializer/imap_spec.rb +0 -218
  96. data/spec/unit/imap/backup/serializer/mbox_enumerator_spec.rb +0 -45
  97. data/spec/unit/imap/backup/serializer/mbox_spec.rb +0 -101
  98. data/spec/unit/imap/backup/serializer_spec.rb +0 -296
  99. data/spec/unit/imap/backup/setup/account_spec.rb +0 -461
  100. data/spec/unit/imap/backup/setup/asker_spec.rb +0 -137
  101. data/spec/unit/imap/backup/setup/connection_tester_spec.rb +0 -51
  102. data/spec/unit/imap/backup/setup/folder_chooser_spec.rb +0 -146
  103. data/spec/unit/imap/backup/setup/helpers_spec.rb +0 -15
  104. data/spec/unit/imap/backup/setup_spec.rb +0 -301
  105. data/spec/unit/imap/backup/thunderbird/mailbox_exporter_spec.rb +0 -116
  106. data/spec/unit/imap/backup/uploader_spec.rb +0 -54
  107. data/spec/unit/imap/backup/utils_spec.rb +0 -92
  108. data/spec/unit/retry_on_error_spec.rb +0 -34
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: 6.0.0.rc2
4
+ version: 6.0.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: 2022-03-04 00:00:00.000000000 Z
11
+ date: 2022-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline
@@ -164,6 +164,20 @@ dependencies:
164
164
  - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: yard
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
167
181
  description: Backup GMail, or any other IMAP email service, to disk.
168
182
  email:
169
183
  - joe.g.yates@gmail.com
@@ -190,6 +204,9 @@ files:
190
204
  - lib/imap/backup.rb
191
205
  - lib/imap/backup/account.rb
192
206
  - lib/imap/backup/account/connection.rb
207
+ - lib/imap/backup/account/connection/backup_folders.rb
208
+ - lib/imap/backup/account/connection/client_factory.rb
209
+ - lib/imap/backup/account/connection/folder_names.rb
193
210
  - lib/imap/backup/account/folder.rb
194
211
  - lib/imap/backup/cli.rb
195
212
  - lib/imap/backup/cli/accounts.rb
@@ -201,6 +218,7 @@ files:
201
218
  - lib/imap/backup/cli/remote.rb
202
219
  - lib/imap/backup/cli/restore.rb
203
220
  - lib/imap/backup/cli/setup.rb
221
+ - lib/imap/backup/cli/stats.rb
204
222
  - lib/imap/backup/cli/status.rb
205
223
  - lib/imap/backup/cli/utils.rb
206
224
  - lib/imap/backup/client/apple_mail.rb
@@ -211,14 +229,20 @@ files:
211
229
  - lib/imap/backup/migrator.rb
212
230
  - lib/imap/backup/sanitizer.rb
213
231
  - lib/imap/backup/serializer.rb
232
+ - lib/imap/backup/serializer/appender.rb
214
233
  - lib/imap/backup/serializer/directory.rb
215
234
  - lib/imap/backup/serializer/imap.rb
216
235
  - lib/imap/backup/serializer/mbox.rb
217
236
  - lib/imap/backup/serializer/mbox_enumerator.rb
237
+ - lib/imap/backup/serializer/message_enumerator.rb
238
+ - lib/imap/backup/serializer/unused_name_finder.rb
218
239
  - lib/imap/backup/setup.rb
219
240
  - lib/imap/backup/setup/account.rb
241
+ - lib/imap/backup/setup/account/header.rb
220
242
  - lib/imap/backup/setup/asker.rb
243
+ - lib/imap/backup/setup/backup_path.rb
221
244
  - lib/imap/backup/setup/connection_tester.rb
245
+ - lib/imap/backup/setup/email.rb
222
246
  - lib/imap/backup/setup/folder_chooser.rb
223
247
  - lib/imap/backup/setup/helpers.rb
224
248
  - lib/imap/backup/thunderbird/mailbox_exporter.rb
@@ -226,74 +250,11 @@ files:
226
250
  - lib/imap/backup/utils.rb
227
251
  - lib/imap/backup/version.rb
228
252
  - lib/retry_on_error.rb
229
- - spec/features/backup_spec.rb
230
- - spec/features/configuration/minimal_configuration.rb
231
- - spec/features/configuration/missing_configuration.rb
232
- - spec/features/folders_spec.rb
233
- - spec/features/helper.rb
234
- - spec/features/local/list_accounts_spec.rb
235
- - spec/features/local/list_emails_spec.rb
236
- - spec/features/local/list_folders_spec.rb
237
- - spec/features/local/show_an_email_spec.rb
238
- - spec/features/migrate_spec.rb
239
- - spec/features/remote/list_account_folders_spec.rb
240
- - spec/features/restore_spec.rb
241
- - spec/features/status_spec.rb
242
- - spec/features/support/aruba.rb
243
- - spec/features/support/backup_directory.rb
244
- - spec/features/support/email_server.rb
245
- - spec/features/support/shared/connection_context.rb
246
- - spec/features/support/shared/message_fixtures.rb
247
- - spec/fixtures/connection.yml
248
- - spec/spec_helper.rb
249
- - spec/support/fixtures.rb
250
- - spec/support/higline_test_helpers.rb
251
- - spec/support/silence_logging.rb
252
- - spec/unit/email/mboxrd/message_spec.rb
253
- - spec/unit/email/provider/apple_mail_spec.rb
254
- - spec/unit/email/provider/base_spec.rb
255
- - spec/unit/email/provider/fastmail_spec.rb
256
- - spec/unit/email/provider/gmail_spec.rb
257
- - spec/unit/email/provider_spec.rb
258
- - spec/unit/imap/backup/account/connection_spec.rb
259
- - spec/unit/imap/backup/account/folder_spec.rb
260
- - spec/unit/imap/backup/account_spec.rb
261
- - spec/unit/imap/backup/cli/accounts_spec.rb
262
- - spec/unit/imap/backup/cli/backup_spec.rb
263
- - spec/unit/imap/backup/cli/folders_spec.rb
264
- - spec/unit/imap/backup/cli/helpers_spec.rb
265
- - spec/unit/imap/backup/cli/local_spec.rb
266
- - spec/unit/imap/backup/cli/migrate_spec.rb
267
- - spec/unit/imap/backup/cli/restore_spec.rb
268
- - spec/unit/imap/backup/cli/setup_spec.rb
269
- - spec/unit/imap/backup/cli/utils_spec.rb
270
- - spec/unit/imap/backup/cli_spec.rb
271
- - spec/unit/imap/backup/client/apple_mail_spec.rb
272
- - spec/unit/imap/backup/client/default_spec.rb
273
- - spec/unit/imap/backup/configuration_spec.rb
274
- - spec/unit/imap/backup/downloader_spec.rb
275
- - spec/unit/imap/backup/logger_spec.rb
276
- - spec/unit/imap/backup/migrator_spec.rb
277
- - spec/unit/imap/backup/sanitizer_spec.rb
278
- - spec/unit/imap/backup/serializer/directory_spec.rb
279
- - spec/unit/imap/backup/serializer/imap_spec.rb
280
- - spec/unit/imap/backup/serializer/mbox_enumerator_spec.rb
281
- - spec/unit/imap/backup/serializer/mbox_spec.rb
282
- - spec/unit/imap/backup/serializer_spec.rb
283
- - spec/unit/imap/backup/setup/account_spec.rb
284
- - spec/unit/imap/backup/setup/asker_spec.rb
285
- - spec/unit/imap/backup/setup/connection_tester_spec.rb
286
- - spec/unit/imap/backup/setup/folder_chooser_spec.rb
287
- - spec/unit/imap/backup/setup/helpers_spec.rb
288
- - spec/unit/imap/backup/setup_spec.rb
289
- - spec/unit/imap/backup/thunderbird/mailbox_exporter_spec.rb
290
- - spec/unit/imap/backup/uploader_spec.rb
291
- - spec/unit/imap/backup/utils_spec.rb
292
- - spec/unit/retry_on_error_spec.rb
293
253
  homepage: https://github.com/joeyates/imap-backup
294
254
  licenses:
295
255
  - MIT
296
- metadata: {}
256
+ metadata:
257
+ rubygems_mfa_required: 'true'
297
258
  post_install_message:
298
259
  rdoc_options: []
299
260
  require_paths:
@@ -305,76 +266,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
305
266
  version: '2.5'
306
267
  required_rubygems_version: !ruby/object:Gem::Requirement
307
268
  requirements:
308
- - - ">"
269
+ - - ">="
309
270
  - !ruby/object:Gem::Version
310
- version: 1.3.1
271
+ version: '0'
311
272
  requirements: []
312
273
  rubygems_version: 3.1.6
313
274
  signing_key:
314
275
  specification_version: 4
315
276
  summary: Backup GMail (or other IMAP) accounts to disk
316
- test_files:
317
- - spec/spec_helper.rb
318
- - spec/unit/imap/backup/account_spec.rb
319
- - spec/unit/imap/backup/serializer/imap_spec.rb
320
- - spec/unit/imap/backup/serializer/directory_spec.rb
321
- - spec/unit/imap/backup/serializer/mbox_spec.rb
322
- - spec/unit/imap/backup/serializer/mbox_enumerator_spec.rb
323
- - spec/unit/imap/backup/cli_spec.rb
324
- - spec/unit/imap/backup/setup_spec.rb
325
- - spec/unit/imap/backup/logger_spec.rb
326
- - spec/unit/imap/backup/configuration_spec.rb
327
- - spec/unit/imap/backup/setup/account_spec.rb
328
- - spec/unit/imap/backup/setup/connection_tester_spec.rb
329
- - spec/unit/imap/backup/setup/asker_spec.rb
330
- - spec/unit/imap/backup/setup/helpers_spec.rb
331
- - spec/unit/imap/backup/setup/folder_chooser_spec.rb
332
- - spec/unit/imap/backup/cli/folders_spec.rb
333
- - spec/unit/imap/backup/cli/setup_spec.rb
334
- - spec/unit/imap/backup/cli/backup_spec.rb
335
- - spec/unit/imap/backup/cli/restore_spec.rb
336
- - spec/unit/imap/backup/cli/helpers_spec.rb
337
- - spec/unit/imap/backup/cli/accounts_spec.rb
338
- - spec/unit/imap/backup/cli/migrate_spec.rb
339
- - spec/unit/imap/backup/cli/utils_spec.rb
340
- - spec/unit/imap/backup/cli/local_spec.rb
341
- - spec/unit/imap/backup/downloader_spec.rb
342
- - spec/unit/imap/backup/migrator_spec.rb
343
- - spec/unit/imap/backup/uploader_spec.rb
344
- - spec/unit/imap/backup/account/folder_spec.rb
345
- - spec/unit/imap/backup/account/connection_spec.rb
346
- - spec/unit/imap/backup/utils_spec.rb
347
- - spec/unit/imap/backup/serializer_spec.rb
348
- - spec/unit/imap/backup/client/default_spec.rb
349
- - spec/unit/imap/backup/client/apple_mail_spec.rb
350
- - spec/unit/imap/backup/thunderbird/mailbox_exporter_spec.rb
351
- - spec/unit/imap/backup/sanitizer_spec.rb
352
- - spec/unit/retry_on_error_spec.rb
353
- - spec/unit/email/mboxrd/message_spec.rb
354
- - spec/unit/email/provider/gmail_spec.rb
355
- - spec/unit/email/provider/apple_mail_spec.rb
356
- - spec/unit/email/provider/fastmail_spec.rb
357
- - spec/unit/email/provider/base_spec.rb
358
- - spec/unit/email/provider_spec.rb
359
- - spec/features/folders_spec.rb
360
- - spec/features/configuration/missing_configuration.rb
361
- - spec/features/configuration/minimal_configuration.rb
362
- - spec/features/backup_spec.rb
363
- - spec/features/helper.rb
364
- - spec/features/restore_spec.rb
365
- - spec/features/local/list_emails_spec.rb
366
- - spec/features/local/list_accounts_spec.rb
367
- - spec/features/local/show_an_email_spec.rb
368
- - spec/features/local/list_folders_spec.rb
369
- - spec/features/status_spec.rb
370
- - spec/features/support/email_server.rb
371
- - spec/features/support/backup_directory.rb
372
- - spec/features/support/aruba.rb
373
- - spec/features/support/shared/connection_context.rb
374
- - spec/features/support/shared/message_fixtures.rb
375
- - spec/features/migrate_spec.rb
376
- - spec/features/remote/list_account_folders_spec.rb
377
- - spec/support/fixtures.rb
378
- - spec/support/silence_logging.rb
379
- - spec/support/higline_test_helpers.rb
380
- - spec/fixtures/connection.yml
277
+ test_files: []
@@ -1,100 +0,0 @@
1
- require "features/helper"
2
-
3
- RSpec.describe "backup", type: :aruba, docker: true do
4
- include_context "imap-backup connection"
5
- include_context "message-fixtures"
6
-
7
- let(:local_backup_path) { File.expand_path("~/backup") }
8
- let(:backup_folders) { [{name: folder}] }
9
- let(:folder) { "my-stuff" }
10
- let(:messages_as_mbox) do
11
- message_as_mbox_entry(msg1) + message_as_mbox_entry(msg2)
12
- end
13
-
14
- let!(:pre) {}
15
- let!(:setup) do
16
- server_create_folder folder
17
- send_email folder, msg1
18
- send_email folder, msg2
19
- create_config(accounts: [account.to_h])
20
-
21
- run_command_and_stop("imap-backup backup")
22
- end
23
-
24
- after do
25
- server_delete_folder folder
26
- end
27
-
28
- it "downloads messages" do
29
- expect(mbox_content(folder)).to eq(messages_as_mbox)
30
- end
31
-
32
- describe "IMAP metadata" do
33
- let(:imap_metadata) { imap_parsed(folder) }
34
- let(:folder_uids) { server_uids(folder) }
35
-
36
- it "saves IMAP metadata in a JSON file" do
37
- expect { imap_metadata }.to_not raise_error
38
- end
39
-
40
- it "saves a file version" do
41
- expect(imap_metadata[:version].to_s).to match(/^[0-9.]$/)
42
- end
43
-
44
- it "records IMAP ids" do
45
- expect(imap_metadata[:uids]).to eq(folder_uids)
46
- end
47
-
48
- it "records uid_validity" do
49
- expect(imap_metadata[:uid_validity]).to eq(server_uid_validity(folder))
50
- end
51
-
52
- context "when uid_validity does not match" do
53
- let(:new_name) { "NEWNAME" }
54
- let(:original_folder_uid_validity) { server_uid_validity(folder) }
55
- let!(:pre) do
56
- server_create_folder folder
57
- send_email folder, msg3
58
- original_folder_uid_validity
59
- connection.run_backup
60
- connection.disconnect
61
- server_rename_folder folder, new_name
62
- end
63
- let(:renamed_folder) { "#{folder}-#{original_folder_uid_validity}" }
64
-
65
- after do
66
- server_delete_folder new_name
67
- end
68
-
69
- it "renames the old backup" do
70
- expect(mbox_content(renamed_folder)).to eq(message_as_mbox_entry(msg3))
71
- end
72
-
73
- it "renames the old metadata file" do
74
- expect(imap_parsed(renamed_folder)).to be_a Hash
75
- end
76
-
77
- it "downloads messages" do
78
- expect(mbox_content(folder)).to eq(messages_as_mbox)
79
- end
80
-
81
- it "creates a metadata file" do
82
- expect(imap_parsed(folder)).to be_a Hash
83
- end
84
-
85
- context "when a renamed local backup exists" do
86
- let!(:pre) do
87
- super()
88
- create_directory local_backup_path
89
- File.write(imap_path(renamed_folder), "existing imap")
90
- File.write(mbox_path(renamed_folder), "existing mbox")
91
- end
92
-
93
- it "moves the old backup to a uniquely named directory" do
94
- renamed = "#{folder}-#{original_folder_uid_validity}-1"
95
- expect(mbox_content(renamed)).to eq(message_as_mbox_entry(msg3))
96
- end
97
- end
98
- end
99
- end
100
- end
@@ -1,15 +0,0 @@
1
- require "features/helper"
2
-
3
- RSpec.describe "Running commands", type: :aruba do
4
- before do
5
- create_config(accounts: [])
6
- run_command("imap-backup local accounts")
7
- last_command_started.stop
8
- end
9
-
10
- context "when no accounts are configured" do
11
- it "succeeds" do
12
- expect(last_command_started).to have_exit_status(0)
13
- end
14
- end
15
- end
@@ -1,14 +0,0 @@
1
- require "features/helper"
2
-
3
- RSpec.describe "Running commands", type: :aruba do
4
- before do
5
- run_command("imap-backup")
6
- last_command_started.stop
7
- end
8
-
9
- context "when the configuration file is missing" do
10
- it "fails" do
11
- expect(last_command_started).not_to have_exit_status(0)
12
- end
13
- end
14
- end
@@ -1,36 +0,0 @@
1
- require "features/helper"
2
- require "imap/backup/cli/folders"
3
-
4
- RSpec.describe "folders", type: :feature, docker: true do
5
- include_context "imap-backup connection"
6
-
7
- let(:options) do
8
- {accounts: "address@example.org"}
9
- end
10
- let(:folder) { "my-stuff" }
11
- let(:output) { StringIO.new }
12
-
13
- before do
14
- allow(Imap::Backup::CLI::Accounts).to receive(:new) { [account] }
15
- server_create_folder folder
16
- end
17
-
18
- around do |example|
19
- stdout = $stdout
20
- $stdout = output
21
- example.run
22
- $stdout = stdout
23
- end
24
-
25
- after do
26
- FileUtils.rm_rf local_backup_path
27
- server_delete_folder folder
28
- connection.disconnect
29
- end
30
-
31
- it "lists account folders" do
32
- Imap::Backup::CLI::Folders.new(options).run
33
-
34
- expect(output.string).to match(/^\tmy-stuff\n/)
35
- end
36
- end
@@ -1,2 +0,0 @@
1
- support_glob = File.expand_path("support/**/*.rb", __dir__)
2
- Dir[support_glob].sort.each { |f| require f }
@@ -1,12 +0,0 @@
1
- require "features/helper"
2
-
3
- RSpec.describe "Listing accounts", type: :aruba do
4
- before do
5
- create_config(accounts: [{"username": "me@example.com"}])
6
- run_command_and_stop("imap-backup local accounts")
7
- end
8
-
9
- it "lists accounts" do
10
- expect(last_command_started).to have_output("me@example.com")
11
- end
12
- end
@@ -1,21 +0,0 @@
1
- require "features/helper"
2
-
3
- RSpec.describe "Listing emails", type: :aruba do
4
- let(:email) { "me@example.com" }
5
- let(:account) do
6
- {
7
- username: email,
8
- local_path: File.join(config_path, email.gsub("@", "_"))
9
- }
10
- end
11
-
12
- before do
13
- create_config(accounts: [account])
14
- store_email(email: email, folder: "my_folder", subject: "Ciao")
15
- run_command_and_stop("imap-backup local list #{email} my_folder")
16
- end
17
-
18
- it "lists emails" do
19
- expect(last_command_started).to have_output(/1: Ciao/)
20
- end
21
- end
@@ -1,21 +0,0 @@
1
- require "features/helper"
2
-
3
- RSpec.describe "Listing account folders", type: :aruba do
4
- let(:email) { "me@example.com" }
5
- let(:account) do
6
- {
7
- username: email,
8
- local_path: File.join(config_path, email.gsub("@", "_"))
9
- }
10
- end
11
-
12
- before do
13
- create_config(accounts: [account])
14
- store_email(email: email, folder: "my_folder", body: "Hi")
15
- run_command_and_stop("imap-backup local folders #{email}")
16
- end
17
-
18
- it "lists folders that have been backed up" do
19
- expect(last_command_started).to have_output(%q("my_folder"))
20
- end
21
- end
@@ -1,34 +0,0 @@
1
- require "features/helper"
2
-
3
- RSpec.describe "Show an email", type: :aruba do
4
- let(:email) { "me@example.com" }
5
- let(:account) do
6
- {
7
- username: email,
8
- local_path: File.join(config_path, email.gsub("@", "_"))
9
- }
10
- end
11
-
12
- before do
13
- create_config(accounts: [account])
14
- store_email(
15
- email: email,
16
- folder: "my_folder",
17
- uid: 99,
18
- from: "me@example.com",
19
- subject: "Hello",
20
- body: "How're things?"
21
- )
22
- run_command_and_stop("imap-backup local show #{email} my_folder 99")
23
- end
24
-
25
- it "shows the email" do
26
- expected = <<~BODY
27
- From: me@example.com
28
- Subject: Hello
29
-
30
- How're things?
31
- BODY
32
- expect(last_command_started).to have_output(expected)
33
- end
34
- end
@@ -1,35 +0,0 @@
1
- require "features/helper"
2
-
3
- RSpec.describe "Migration", type: :aruba, docker: true do
4
- let(:email) { "me@example.com" }
5
- let(:folder) { "my_folder" }
6
- let(:source_account) do
7
- {
8
- username: email,
9
- local_path: File.join(config_path, email.gsub("@", "_"))
10
- }
11
- end
12
- let(:destination_account) { fixture("connection") }
13
-
14
- before do
15
- create_config(accounts: [source_account, destination_account])
16
- store_email(email: email, folder: folder, subject: "Ciao")
17
- run_command_and_stop("imap-backup migrate #{email} #{destination_account[:username]}")
18
- end
19
-
20
- after do
21
- delete_emails(folder)
22
- end
23
-
24
- it "copies email to the destination account" do
25
- messages = server_messages(folder)
26
- expected = <<~MESSAGE.gsub("\n", "\r\n")
27
- From: sender@example.com
28
- Subject: Ciao
29
-
30
- body
31
-
32
- MESSAGE
33
- expect(messages[0]["BODY[]"]).to eq(expected)
34
- end
35
- end
@@ -1,16 +0,0 @@
1
- require "features/helper"
2
-
3
- RSpec.describe "List account folders", type: :aruba do
4
- let(:account) do
5
- fixture("connection")
6
- end
7
-
8
- before do
9
- create_config(accounts: [account])
10
- run_command_and_stop("imap-backup remote folders #{account[:username]}")
11
- end
12
-
13
- it "lists folders" do
14
- expect(last_command_started).to have_output(/"INBOX"/)
15
- end
16
- end