imapflow 1.0.171 → 1.0.173

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.
@@ -0,0 +1,994 @@
1
+ 'use strict';
2
+
3
+ const { parseBodystructure } = require('../lib/tools');
4
+
5
+ module.exports['Process correct TEXT with line count'] = test => {
6
+ let attribute = [
7
+ [
8
+ [
9
+ {
10
+ type: 'STRING',
11
+ value: 'text'
12
+ },
13
+ {
14
+ type: 'STRING',
15
+ value: 'plain'
16
+ },
17
+ [
18
+ {
19
+ type: 'STRING',
20
+ value: 'charset'
21
+ },
22
+ {
23
+ type: 'STRING',
24
+ value: 'UTF-8'
25
+ }
26
+ ],
27
+ null,
28
+ null,
29
+ {
30
+ type: 'STRING',
31
+ value: '7bit'
32
+ },
33
+ {
34
+ type: 'ATOM',
35
+ value: '23'
36
+ },
37
+ {
38
+ type: 'ATOM',
39
+ value: '1'
40
+ },
41
+ null,
42
+ null,
43
+ null,
44
+ null
45
+ ],
46
+ [
47
+ {
48
+ type: 'STRING',
49
+ value: 'text'
50
+ },
51
+ {
52
+ type: 'STRING',
53
+ value: 'html'
54
+ },
55
+ [
56
+ {
57
+ type: 'STRING',
58
+ value: 'charset'
59
+ },
60
+ {
61
+ type: 'STRING',
62
+ value: 'UTF-8'
63
+ }
64
+ ],
65
+ null,
66
+ null,
67
+ {
68
+ type: 'STRING',
69
+ value: '7bit'
70
+ },
71
+ {
72
+ type: 'ATOM',
73
+ value: '49'
74
+ },
75
+ {
76
+ type: 'ATOM',
77
+ value: '1'
78
+ },
79
+ null,
80
+ null,
81
+ null,
82
+ null
83
+ ],
84
+ {
85
+ type: 'STRING',
86
+ value: 'alternative'
87
+ },
88
+ [
89
+ {
90
+ type: 'STRING',
91
+ value: 'boundary'
92
+ },
93
+ {
94
+ type: 'STRING',
95
+ value: '000000000000b56402062b1fba83'
96
+ }
97
+ ],
98
+ null,
99
+ null,
100
+ null
101
+ ],
102
+ [
103
+ {
104
+ type: 'STRING',
105
+ value: 'text'
106
+ },
107
+ {
108
+ type: 'STRING',
109
+ value: 'plain'
110
+ },
111
+ [
112
+ {
113
+ type: 'STRING',
114
+ value: 'charset'
115
+ },
116
+ {
117
+ type: 'STRING',
118
+ value: 'US-ASCII'
119
+ },
120
+ {
121
+ type: 'STRING',
122
+ value: 'name'
123
+ },
124
+ {
125
+ type: 'STRING',
126
+ value: 'log_imap_missing_attachments.txt'
127
+ }
128
+ ],
129
+ {
130
+ type: 'STRING',
131
+ value: '<f_m5mnf91y1>'
132
+ },
133
+ null,
134
+ {
135
+ type: 'STRING',
136
+ value: 'base64'
137
+ },
138
+ {
139
+ type: 'ATOM',
140
+ value: '33954'
141
+ },
142
+ {
143
+ type: 'ATOM',
144
+ value: '435'
145
+ },
146
+ null,
147
+ [
148
+ {
149
+ type: 'STRING',
150
+ value: 'attachment'
151
+ },
152
+ [
153
+ {
154
+ type: 'STRING',
155
+ value: 'filename'
156
+ },
157
+ {
158
+ type: 'STRING',
159
+ value: 'log_imap_missing_attachments.txt'
160
+ }
161
+ ]
162
+ ],
163
+ null,
164
+ null
165
+ ],
166
+ [
167
+ {
168
+ type: 'STRING',
169
+ value: 'image'
170
+ },
171
+ {
172
+ type: 'STRING',
173
+ value: 'jpeg'
174
+ },
175
+ [
176
+ {
177
+ type: 'STRING',
178
+ value: 'name'
179
+ },
180
+ {
181
+ type: 'STRING',
182
+ value: 'img2.jpeg'
183
+ }
184
+ ],
185
+ {
186
+ type: 'STRING',
187
+ value: '<f_m5mnf4c70>'
188
+ },
189
+ null,
190
+ {
191
+ type: 'STRING',
192
+ value: 'base64'
193
+ },
194
+ {
195
+ type: 'ATOM',
196
+ value: '3776960'
197
+ },
198
+ null,
199
+ [
200
+ {
201
+ type: 'STRING',
202
+ value: 'attachment'
203
+ },
204
+ [
205
+ {
206
+ type: 'STRING',
207
+ value: 'filename'
208
+ },
209
+ {
210
+ type: 'STRING',
211
+ value: 'img2.jpeg'
212
+ }
213
+ ]
214
+ ],
215
+ null,
216
+ null
217
+ ],
218
+ {
219
+ type: 'STRING',
220
+ value: 'mixed'
221
+ },
222
+ [
223
+ {
224
+ type: 'STRING',
225
+ value: 'boundary'
226
+ },
227
+ {
228
+ type: 'STRING',
229
+ value: '000000000000b56402062b1fba85'
230
+ }
231
+ ],
232
+ null,
233
+ null,
234
+ null
235
+ ];
236
+
237
+ attribute = [
238
+ [
239
+ [
240
+ {
241
+ type: 'STRING',
242
+ value: 'text'
243
+ },
244
+ {
245
+ type: 'STRING',
246
+ value: 'plain'
247
+ },
248
+ [
249
+ {
250
+ type: 'STRING',
251
+ value: 'charset'
252
+ },
253
+ {
254
+ type: 'STRING',
255
+ value: 'UTF-8'
256
+ }
257
+ ],
258
+ null,
259
+ null,
260
+ {
261
+ type: 'STRING',
262
+ value: '7bit'
263
+ },
264
+ {
265
+ type: 'ATOM',
266
+ value: '23'
267
+ },
268
+ {
269
+ type: 'ATOM',
270
+ value: '1'
271
+ },
272
+ null,
273
+ null,
274
+ null,
275
+ null
276
+ ],
277
+ [
278
+ {
279
+ type: 'STRING',
280
+ value: 'text'
281
+ },
282
+ {
283
+ type: 'STRING',
284
+ value: 'html'
285
+ },
286
+ [
287
+ {
288
+ type: 'STRING',
289
+ value: 'charset'
290
+ },
291
+ {
292
+ type: 'STRING',
293
+ value: 'UTF-8'
294
+ }
295
+ ],
296
+ null,
297
+ null,
298
+ {
299
+ type: 'STRING',
300
+ value: '7bit'
301
+ },
302
+ {
303
+ type: 'ATOM',
304
+ value: '49'
305
+ },
306
+ {
307
+ type: 'ATOM',
308
+ value: '1'
309
+ },
310
+ null,
311
+ null,
312
+ null,
313
+ null
314
+ ],
315
+ {
316
+ type: 'STRING',
317
+ value: 'alternative'
318
+ },
319
+ [
320
+ {
321
+ type: 'STRING',
322
+ value: 'boundary'
323
+ },
324
+ {
325
+ type: 'STRING',
326
+ value: '000000000000b56402062b1fba83'
327
+ }
328
+ ],
329
+ null,
330
+ null,
331
+ null
332
+ ],
333
+ [
334
+ {
335
+ type: 'STRING',
336
+ value: 'text'
337
+ },
338
+ {
339
+ type: 'STRING',
340
+ value: 'plain'
341
+ },
342
+ [
343
+ {
344
+ type: 'STRING',
345
+ value: 'charset'
346
+ },
347
+ {
348
+ type: 'STRING',
349
+ value: 'US-ASCII'
350
+ },
351
+ {
352
+ type: 'STRING',
353
+ value: 'name'
354
+ },
355
+ {
356
+ type: 'STRING',
357
+ value: 'log_imap_missing_attachments.txt'
358
+ }
359
+ ],
360
+ {
361
+ type: 'STRING',
362
+ value: '<f_m5mnf91y1>'
363
+ },
364
+ null,
365
+ {
366
+ type: 'STRING',
367
+ value: 'base64'
368
+ },
369
+ {
370
+ type: 'ATOM',
371
+ value: '33954'
372
+ },
373
+ {
374
+ type: 'ATOM',
375
+ value: '435'
376
+ },
377
+ null,
378
+ [
379
+ {
380
+ type: 'STRING',
381
+ value: 'attachment'
382
+ },
383
+ [
384
+ {
385
+ type: 'STRING',
386
+ value: 'filename'
387
+ },
388
+ {
389
+ type: 'STRING',
390
+ value: 'log_imap_missing_attachments.txt'
391
+ }
392
+ ]
393
+ ],
394
+ null,
395
+ null
396
+ ],
397
+ [
398
+ {
399
+ type: 'STRING',
400
+ value: 'image'
401
+ },
402
+ {
403
+ type: 'STRING',
404
+ value: 'jpeg'
405
+ },
406
+ [
407
+ {
408
+ type: 'STRING',
409
+ value: 'name'
410
+ },
411
+ {
412
+ type: 'STRING',
413
+ value: 'img2.jpeg'
414
+ }
415
+ ],
416
+ {
417
+ type: 'STRING',
418
+ value: '<f_m5mnf4c70>'
419
+ },
420
+ null,
421
+ {
422
+ type: 'STRING',
423
+ value: 'base64'
424
+ },
425
+ {
426
+ type: 'ATOM',
427
+ value: '3776960'
428
+ },
429
+ null,
430
+ [
431
+ {
432
+ type: 'STRING',
433
+ value: 'attachment'
434
+ },
435
+ [
436
+ {
437
+ type: 'STRING',
438
+ value: 'filename'
439
+ },
440
+ {
441
+ type: 'STRING',
442
+ value: 'img2.jpeg'
443
+ }
444
+ ]
445
+ ],
446
+ null,
447
+ null
448
+ ],
449
+ {
450
+ type: 'STRING',
451
+ value: 'mixed'
452
+ },
453
+ [
454
+ {
455
+ type: 'STRING',
456
+ value: 'boundary'
457
+ },
458
+ {
459
+ type: 'STRING',
460
+ value: '000000000000b56402062b1fba85'
461
+ }
462
+ ],
463
+ null,
464
+ null,
465
+ null
466
+ ];
467
+
468
+ let bodyStruct = parseBodystructure(attribute);
469
+
470
+ test.deepEqual(bodyStruct, {
471
+ childNodes: [
472
+ {
473
+ part: '1',
474
+ childNodes: [
475
+ {
476
+ part: '1.1',
477
+ type: 'text/plain',
478
+ parameters: {
479
+ charset: 'UTF-8'
480
+ },
481
+ encoding: '7bit',
482
+ size: 23,
483
+ lineCount: 1
484
+ },
485
+ {
486
+ part: '1.2',
487
+ type: 'text/html',
488
+ parameters: {
489
+ charset: 'UTF-8'
490
+ },
491
+ encoding: '7bit',
492
+ size: 49,
493
+ lineCount: 1
494
+ }
495
+ ],
496
+ type: 'multipart/alternative',
497
+ parameters: {
498
+ boundary: '000000000000b56402062b1fba83'
499
+ }
500
+ },
501
+ {
502
+ part: '2',
503
+ type: 'text/plain',
504
+ parameters: {
505
+ charset: 'US-ASCII',
506
+ name: 'log_imap_missing_attachments.txt'
507
+ },
508
+ id: '<f_m5mnf91y1>',
509
+ encoding: 'base64',
510
+ size: 33954,
511
+ lineCount: 435,
512
+ disposition: 'attachment',
513
+ dispositionParameters: {
514
+ filename: 'log_imap_missing_attachments.txt'
515
+ }
516
+ },
517
+ {
518
+ part: '3',
519
+ type: 'image/jpeg',
520
+ parameters: {
521
+ name: 'img2.jpeg'
522
+ },
523
+ id: '<f_m5mnf4c70>',
524
+ encoding: 'base64',
525
+ size: 3776960,
526
+ disposition: 'attachment',
527
+ dispositionParameters: {
528
+ filename: 'img2.jpeg'
529
+ }
530
+ }
531
+ ],
532
+ type: 'multipart/mixed',
533
+ parameters: {
534
+ boundary: '000000000000b56402062b1fba85'
535
+ }
536
+ });
537
+ test.done();
538
+ };
539
+
540
+ module.exports['Process invalid TEXT without line count'] = test => {
541
+ let attribute = [
542
+ [
543
+ [
544
+ {
545
+ type: 'STRING',
546
+ value: 'TEXT'
547
+ },
548
+ {
549
+ type: 'STRING',
550
+ value: 'PLAIN'
551
+ },
552
+ [
553
+ {
554
+ type: 'STRING',
555
+ value: 'CHARSET'
556
+ },
557
+ {
558
+ type: 'STRING',
559
+ value: 'UTF-8'
560
+ }
561
+ ],
562
+ null,
563
+ null,
564
+ {
565
+ type: 'STRING',
566
+ value: '7bit'
567
+ },
568
+ {
569
+ type: 'ATOM',
570
+ value: '2'
571
+ },
572
+ null,
573
+ null,
574
+ null,
575
+ null,
576
+ null
577
+ ],
578
+ [
579
+ {
580
+ type: 'STRING',
581
+ value: 'TEXT'
582
+ },
583
+ {
584
+ type: 'STRING',
585
+ value: 'HTML'
586
+ },
587
+ [
588
+ {
589
+ type: 'STRING',
590
+ value: 'CHARSET'
591
+ },
592
+ {
593
+ type: 'STRING',
594
+ value: 'UTF-8'
595
+ }
596
+ ],
597
+ null,
598
+ null,
599
+ {
600
+ type: 'STRING',
601
+ value: '7bit'
602
+ },
603
+ {
604
+ type: 'ATOM',
605
+ value: '27'
606
+ },
607
+ null,
608
+ null,
609
+ null,
610
+ null,
611
+ null
612
+ ],
613
+ {
614
+ type: 'STRING',
615
+ value: 'ALTERNATIVE'
616
+ },
617
+ [
618
+ {
619
+ type: 'ATOM',
620
+ value: 'BOUNDARY'
621
+ },
622
+ {
623
+ type: 'STRING',
624
+ value: '-=Part.1=-'
625
+ }
626
+ ],
627
+ null,
628
+ null,
629
+ null
630
+ ],
631
+ [
632
+ {
633
+ type: 'STRING',
634
+ value: 'TEXT'
635
+ },
636
+ {
637
+ type: 'STRING',
638
+ value: 'PLAIN'
639
+ },
640
+ [
641
+ {
642
+ type: 'STRING',
643
+ value: 'CHARSET'
644
+ },
645
+ {
646
+ type: 'STRING',
647
+ value: 'US-ASCII'
648
+ }
649
+ ],
650
+ {
651
+ type: 'STRING',
652
+ value: '<f_m5mjjzj32>'
653
+ },
654
+ null,
655
+ {
656
+ type: 'STRING',
657
+ value: 'base64'
658
+ },
659
+ {
660
+ type: 'ATOM',
661
+ value: '49'
662
+ },
663
+ null,
664
+ [
665
+ {
666
+ type: 'STRING',
667
+ value: 'ATTACHMENT'
668
+ },
669
+ [
670
+ {
671
+ type: 'STRING',
672
+ value: 'FILENAME'
673
+ },
674
+ {
675
+ type: 'STRING',
676
+ value: 'logs.txt'
677
+ }
678
+ ]
679
+ ],
680
+ null,
681
+ null
682
+ ],
683
+ [
684
+ {
685
+ type: 'STRING',
686
+ value: 'TEXT'
687
+ },
688
+ {
689
+ type: 'STRING',
690
+ value: 'HTML'
691
+ },
692
+ [
693
+ {
694
+ type: 'STRING',
695
+ value: 'CHARSET'
696
+ },
697
+ {
698
+ type: 'STRING',
699
+ value: 'US-ASCII'
700
+ }
701
+ ],
702
+ {
703
+ type: 'STRING',
704
+ value: '<f_m5mjjziw1>'
705
+ },
706
+ null,
707
+ {
708
+ type: 'STRING',
709
+ value: 'base64'
710
+ },
711
+ {
712
+ type: 'ATOM',
713
+ value: '4437'
714
+ },
715
+ null,
716
+ [
717
+ {
718
+ type: 'STRING',
719
+ value: 'ATTACHMENT'
720
+ },
721
+ [
722
+ {
723
+ type: 'STRING',
724
+ value: 'FILENAME'
725
+ },
726
+ {
727
+ type: 'STRING',
728
+ value: 'TITI.html'
729
+ }
730
+ ]
731
+ ],
732
+ null,
733
+ null
734
+ ],
735
+ [
736
+ {
737
+ type: 'STRING',
738
+ value: 'IMAGE'
739
+ },
740
+ {
741
+ type: 'STRING',
742
+ value: 'PNG'
743
+ },
744
+ null,
745
+ {
746
+ type: 'STRING',
747
+ value: '<f_m5mjjzih0>'
748
+ },
749
+ null,
750
+ {
751
+ type: 'STRING',
752
+ value: 'base64'
753
+ },
754
+ {
755
+ type: 'ATOM',
756
+ value: '32085'
757
+ },
758
+ null,
759
+ [
760
+ {
761
+ type: 'STRING',
762
+ value: 'ATTACHMENT'
763
+ },
764
+ [
765
+ {
766
+ type: 'STRING',
767
+ value: 'FILENAME'
768
+ },
769
+ {
770
+ type: 'STRING',
771
+ value: 'Logo-google-icon-PNG.png'
772
+ }
773
+ ]
774
+ ],
775
+ null,
776
+ null
777
+ ],
778
+ [
779
+ {
780
+ type: 'STRING',
781
+ value: 'APPLICATION'
782
+ },
783
+ {
784
+ type: 'STRING',
785
+ value: 'OCTET-STREAM'
786
+ },
787
+ null,
788
+ {
789
+ type: 'STRING',
790
+ value: '<f_m5mjjzjb3>'
791
+ },
792
+ null,
793
+ {
794
+ type: 'STRING',
795
+ value: 'base64'
796
+ },
797
+ {
798
+ type: 'ATOM',
799
+ value: '354150'
800
+ },
801
+ null,
802
+ [
803
+ {
804
+ type: 'STRING',
805
+ value: 'ATTACHMENT'
806
+ },
807
+ [
808
+ {
809
+ type: 'STRING',
810
+ value: 'FILENAME'
811
+ },
812
+ {
813
+ type: 'STRING',
814
+ value: 'logs_not_txt'
815
+ }
816
+ ]
817
+ ],
818
+ null,
819
+ null
820
+ ],
821
+ [
822
+ {
823
+ type: 'STRING',
824
+ value: 'TEXT'
825
+ },
826
+ {
827
+ type: 'STRING',
828
+ value: 'MARKDOWN'
829
+ },
830
+ [
831
+ {
832
+ type: 'STRING',
833
+ value: 'CHARSET'
834
+ },
835
+ {
836
+ type: 'STRING',
837
+ value: 'UTF-8'
838
+ }
839
+ ],
840
+ {
841
+ type: 'STRING',
842
+ value: '<f_m5mjk5le4>'
843
+ },
844
+ null,
845
+ {
846
+ type: 'STRING',
847
+ value: 'base64'
848
+ },
849
+ {
850
+ type: 'ATOM',
851
+ value: '21064'
852
+ },
853
+ null,
854
+ [
855
+ {
856
+ type: 'STRING',
857
+ value: 'ATTACHMENT'
858
+ },
859
+ [
860
+ {
861
+ type: 'STRING',
862
+ value: 'FILENAME'
863
+ },
864
+ {
865
+ type: 'STRING',
866
+ value: 'README.md'
867
+ }
868
+ ]
869
+ ],
870
+ null,
871
+ null
872
+ ],
873
+ {
874
+ type: 'STRING',
875
+ value: 'MIXED'
876
+ },
877
+ [
878
+ {
879
+ type: 'ATOM',
880
+ value: 'BOUNDARY'
881
+ },
882
+ {
883
+ type: 'STRING',
884
+ value: '-=Part.TEXT=-'
885
+ }
886
+ ],
887
+ null,
888
+ null,
889
+ null
890
+ ];
891
+
892
+ let bodyStruct = parseBodystructure(attribute);
893
+
894
+ test.deepEqual(bodyStruct, {
895
+ childNodes: [
896
+ {
897
+ part: '1',
898
+ childNodes: [
899
+ {
900
+ part: '1.1',
901
+ type: 'text/plain',
902
+ parameters: {
903
+ charset: 'UTF-8'
904
+ },
905
+ encoding: '7bit',
906
+ size: 2
907
+ },
908
+ {
909
+ part: '1.2',
910
+ type: 'text/html',
911
+ parameters: {
912
+ charset: 'UTF-8'
913
+ },
914
+ encoding: '7bit',
915
+ size: 27
916
+ }
917
+ ],
918
+ type: 'multipart/alternative',
919
+ parameters: {
920
+ boundary: '-=Part.1=-'
921
+ }
922
+ },
923
+ {
924
+ part: '2',
925
+ type: 'text/plain',
926
+ parameters: {
927
+ charset: 'US-ASCII'
928
+ },
929
+ id: '<f_m5mjjzj32>',
930
+ encoding: 'base64',
931
+ size: 49,
932
+ disposition: 'attachment',
933
+ dispositionParameters: {
934
+ filename: 'logs.txt'
935
+ }
936
+ },
937
+ {
938
+ part: '3',
939
+ type: 'text/html',
940
+ parameters: {
941
+ charset: 'US-ASCII'
942
+ },
943
+ id: '<f_m5mjjziw1>',
944
+ encoding: 'base64',
945
+ size: 4437,
946
+ disposition: 'attachment',
947
+ dispositionParameters: {
948
+ filename: 'TITI.html'
949
+ }
950
+ },
951
+ {
952
+ part: '4',
953
+ type: 'image/png',
954
+ id: '<f_m5mjjzih0>',
955
+ encoding: 'base64',
956
+ size: 32085,
957
+ disposition: 'attachment',
958
+ dispositionParameters: {
959
+ filename: 'Logo-google-icon-PNG.png'
960
+ }
961
+ },
962
+ {
963
+ part: '5',
964
+ type: 'application/octet-stream',
965
+ id: '<f_m5mjjzjb3>',
966
+ encoding: 'base64',
967
+ size: 354150,
968
+ disposition: 'attachment',
969
+ dispositionParameters: {
970
+ filename: 'logs_not_txt'
971
+ }
972
+ },
973
+ {
974
+ part: '6',
975
+ type: 'text/markdown',
976
+ parameters: {
977
+ charset: 'UTF-8'
978
+ },
979
+ id: '<f_m5mjk5le4>',
980
+ encoding: 'base64',
981
+ size: 21064,
982
+ disposition: 'attachment',
983
+ dispositionParameters: {
984
+ filename: 'README.md'
985
+ }
986
+ }
987
+ ],
988
+ type: 'multipart/mixed',
989
+ parameters: {
990
+ boundary: '-=Part.TEXT=-'
991
+ }
992
+ });
993
+ test.done();
994
+ };