rims 0.2.5 → 0.2.6
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.
- checksums.yaml +4 -4
- data/ChangeLog +60 -0
- data/lib/rims/cmd.rb +44 -28
- data/lib/rims/protocol/decoder.rb +53 -29
- data/lib/rims/protocol/parser.rb +136 -109
- data/lib/rims/service.rb +21 -21
- data/lib/rims/test.rb +21 -3
- data/lib/rims/version.rb +1 -1
- data/rims.gemspec +1 -0
- data/test/cmd/test_command.rb +114 -22
- data/test/test_protocol_decoder.rb +190 -46
- data/test/test_protocol_fetch.rb +380 -189
- data/test/test_protocol_search.rb +1 -0
- metadata +16 -5
- data/lib/rims/rfc822.rb +0 -463
- data/test/test_rfc822.rb +0 -696
data/test/test_protocol_fetch.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
|
+
require 'digest'
|
3
4
|
require 'logger'
|
4
5
|
require 'rims'
|
5
6
|
require 'set'
|
@@ -162,7 +163,7 @@ module RIMS::Test
|
|
162
163
|
assert_fetch(0, [ "BODY[] #{literal(@simple_mail.raw_source)}" ])
|
163
164
|
assert_fetch(1, [ "BODY[] #{literal(@mpart_mail.raw_source)}" ])
|
164
165
|
assert_fetch(2, [ 'BODY[] ""' ])
|
165
|
-
assert_fetch(3, [
|
166
|
+
assert_fetch(3, [ "BODY[] #{literal(@no_body_mail.raw_source)}" ])
|
166
167
|
}
|
167
168
|
|
168
169
|
parse_fetch_attribute(make_body('BODY[TEXT]')) {
|
@@ -176,7 +177,7 @@ module RIMS::Test
|
|
176
177
|
assert_fetch(0, [ "BODY[HEADER] #{literal(@simple_mail.header.raw_source)}" ])
|
177
178
|
assert_fetch(1, [ "BODY[HEADER] #{literal(@mpart_mail.header.raw_source)}" ])
|
178
179
|
assert_fetch(2, [ 'BODY[HEADER] ""' ])
|
179
|
-
assert_fetch(3, [
|
180
|
+
assert_fetch(3, [ "BODY[HEADER] #{literal(@no_body_mail.header.raw_source)}" ])
|
180
181
|
}
|
181
182
|
|
182
183
|
parse_fetch_attribute(make_body('BODY[HEADER.FIELDS (From To)]')) {
|
@@ -441,100 +442,247 @@ module RIMS::Test
|
|
441
442
|
add_mail_no_body
|
442
443
|
}
|
443
444
|
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
445
|
+
parse_fetch_attribute('BODY') {
|
446
|
+
assert_fetch(0,
|
447
|
+
[
|
448
|
+
'BODY ' +
|
449
|
+
encode_bodystructure([ 'TEXT',
|
450
|
+
'PLAIN',
|
451
|
+
%w[ charset us-ascii ],
|
452
|
+
nil,
|
453
|
+
nil,
|
454
|
+
'7BIT',
|
455
|
+
@simple_mail.raw_source.bytesize,
|
456
|
+
@simple_mail.raw_source.each_line.count
|
457
|
+
])
|
458
|
+
])
|
459
|
+
assert_fetch(1,
|
460
|
+
[
|
461
|
+
'BODY ' +
|
462
|
+
encode_bodystructure([ [ 'TEXT', 'PLAIN', %w[ charset us-ascii], nil, nil, nil,
|
463
|
+
@mpart_mail.parts[0].raw_source.bytesize,
|
464
|
+
@mpart_mail.parts[0].raw_source.each_line.count
|
465
|
+
],
|
466
|
+
[ 'APPLICATION', 'OCTET-STREAM', nil, nil, nil, nil,
|
467
|
+
@mpart_mail.parts[1].raw_source.bytesize
|
468
|
+
],
|
469
|
+
[ 'MESSAGE', 'RFC822', nil, nil, nil, nil,
|
470
|
+
@mpart_mail.parts[2].raw_source.bytesize,
|
471
|
+
[ 'Fri, 8 Nov 2013 19:31:03 +0900', 'inner multipart',
|
472
|
+
[ [ nil, nil, 'foo', 'nonet.com' ] ], nil, nil, [ [ nil, nil, 'bar', 'nonet.com' ] ], nil, nil, nil, nil
|
473
|
+
],
|
474
|
+
[ [ 'TEXT', 'PLAIN', %w[ charset us-ascii ], nil, nil, nil,
|
475
|
+
@mpart_mail.parts[2].message.parts[0].raw_source.bytesize,
|
476
|
+
@mpart_mail.parts[2].message.parts[0].raw_source.each_line.count
|
477
|
+
],
|
478
|
+
[ 'APPLICATION', 'OCTET-STREAM', nil, nil, nil, nil,
|
479
|
+
@mpart_mail.parts[2].message.parts[1].raw_source.bytesize
|
480
|
+
],
|
481
|
+
'MIXED'
|
463
482
|
],
|
464
|
-
[
|
465
|
-
|
483
|
+
@mpart_mail.parts[2].raw_source.each_line.count
|
484
|
+
],
|
485
|
+
[ [ 'IMAGE', 'GIF', nil, nil, nil, nil,
|
486
|
+
@mpart_mail.parts[3].parts[0].raw_source.bytesize
|
466
487
|
],
|
467
|
-
[ 'MESSAGE', 'RFC822',
|
468
|
-
@mpart_mail.parts[
|
488
|
+
[ 'MESSAGE', 'RFC822', nil, nil, nil, nil,
|
489
|
+
@mpart_mail.parts[3].parts[1].raw_source.bytesize,
|
469
490
|
[ 'Fri, 8 Nov 2013 19:31:03 +0900', 'inner multipart',
|
470
491
|
[ [ nil, nil, 'foo', 'nonet.com' ] ], nil, nil, [ [ nil, nil, 'bar', 'nonet.com' ] ], nil, nil, nil, nil
|
471
492
|
],
|
472
493
|
[ [ 'TEXT', 'PLAIN', %w[ charset us-ascii ], nil, nil, nil,
|
473
|
-
@mpart_mail.parts[
|
474
|
-
@mpart_mail.parts[
|
494
|
+
@mpart_mail.parts[3].parts[1].message.parts[0].raw_source.bytesize,
|
495
|
+
@mpart_mail.parts[3].parts[1].message.parts[0].raw_source.each_line.count
|
475
496
|
],
|
476
|
-
[ '
|
477
|
-
|
497
|
+
[ [ 'TEXT', 'PLAIN', %w[ charset us-ascii ], nil, nil, nil,
|
498
|
+
@mpart_mail.parts[3].parts[1].message.parts[1].parts[0].raw_source.bytesize,
|
499
|
+
@mpart_mail.parts[3].parts[1].message.parts[1].parts[0].raw_source.each_line.count
|
500
|
+
],
|
501
|
+
[ 'TEXT', 'HTML', %w[ charset us-ascii ], nil, nil, nil,
|
502
|
+
@mpart_mail.parts[3].parts[1].message.parts[1].parts[1].raw_source.bytesize,
|
503
|
+
@mpart_mail.parts[3].parts[1].message.parts[1].parts[1].raw_source.each_line.count
|
504
|
+
],
|
505
|
+
'ALTERNATIVE'
|
478
506
|
],
|
479
507
|
'MIXED'
|
480
508
|
],
|
481
|
-
@mpart_mail.parts[
|
509
|
+
@mpart_mail.parts[3].parts[1].raw_source.each_line.count
|
510
|
+
],
|
511
|
+
'MIXED',
|
512
|
+
],
|
513
|
+
'MIXED'
|
514
|
+
])
|
515
|
+
])
|
516
|
+
assert_fetch(2,
|
517
|
+
[
|
518
|
+
'BODY ' +
|
519
|
+
encode_bodystructure([ 'APPLICATION',
|
520
|
+
'OCTET-STREAM',
|
521
|
+
nil,
|
522
|
+
nil,
|
523
|
+
nil,
|
524
|
+
nil,
|
525
|
+
@empty_mail.raw_source.bytesize
|
526
|
+
])
|
527
|
+
])
|
528
|
+
assert_fetch(3,
|
529
|
+
[
|
530
|
+
'BODY ' +
|
531
|
+
encode_bodystructure([ 'APPLICATION',
|
532
|
+
'OCTET-STREAM',
|
533
|
+
nil,
|
534
|
+
nil,
|
535
|
+
nil,
|
536
|
+
nil,
|
537
|
+
@no_body_mail.raw_source.bytesize
|
538
|
+
])
|
539
|
+
])
|
540
|
+
}
|
541
|
+
end
|
542
|
+
|
543
|
+
def test_parse_bodystructure_extension_data
|
544
|
+
make_fetch_parser{
|
545
|
+
add_mail_simple
|
546
|
+
add_mail_multipart
|
547
|
+
add_mail_empty
|
548
|
+
add_mail_no_body
|
549
|
+
}
|
550
|
+
|
551
|
+
parse_fetch_attribute('BODYSTRUCTURE') {
|
552
|
+
assert_fetch(0,
|
553
|
+
[
|
554
|
+
'BODYSTRUCTURE ' +
|
555
|
+
encode_bodystructure([ 'TEXT',
|
556
|
+
'PLAIN',
|
557
|
+
%w[ charset us-ascii ],
|
558
|
+
nil,
|
559
|
+
nil,
|
560
|
+
'7BIT',
|
561
|
+
@simple_mail.raw_source.bytesize,
|
562
|
+
@simple_mail.raw_source.each_line.count,
|
563
|
+
[ Digest::MD5.digest(@simple_mail_body) ].pack('m').strip,
|
564
|
+
nil,
|
565
|
+
%w[ EN-US EN ],
|
566
|
+
nil
|
567
|
+
])
|
568
|
+
])
|
569
|
+
assert_fetch(1,
|
570
|
+
[
|
571
|
+
'BODYSTRUCTURE ' +
|
572
|
+
encode_bodystructure([ [ 'TEXT', 'PLAIN', %w[ charset us-ascii], nil, nil, nil,
|
573
|
+
@mpart_mail.parts[0].raw_source.bytesize,
|
574
|
+
@mpart_mail.parts[0].raw_source.each_line.count,
|
575
|
+
nil, nil, nil, nil
|
576
|
+
],
|
577
|
+
[ 'APPLICATION', 'OCTET-STREAM', nil, nil, nil, nil,
|
578
|
+
@mpart_mail.parts[1].raw_source.bytesize,
|
579
|
+
nil,
|
580
|
+
[ 'ATTACHMENT', [ 'filename', 'test.dat', 'modification-date', 'Wed, 12 Feb 1997 16:29:51 -0500' ] ],
|
581
|
+
nil, nil
|
582
|
+
],
|
583
|
+
[ 'MESSAGE', 'RFC822', nil, nil, nil, nil,
|
584
|
+
@mpart_mail.parts[2].raw_source.bytesize,
|
585
|
+
[ 'Fri, 8 Nov 2013 19:31:03 +0900', 'inner multipart',
|
586
|
+
[ [ nil, nil, 'foo', 'nonet.com' ] ], nil, nil, [ [ nil, nil, 'bar', 'nonet.com' ] ], nil, nil, nil, nil
|
587
|
+
],
|
588
|
+
[ [ 'TEXT', 'PLAIN', %w[ charset us-ascii ], nil, nil, nil,
|
589
|
+
@mpart_mail.parts[2].message.parts[0].raw_source.bytesize,
|
590
|
+
@mpart_mail.parts[2].message.parts[0].raw_source.each_line.count,
|
591
|
+
nil, nil, nil, nil
|
592
|
+
],
|
593
|
+
[ 'APPLICATION', 'OCTET-STREAM', nil, nil, nil, nil,
|
594
|
+
@mpart_mail.parts[2].message.parts[1].raw_source.bytesize,
|
595
|
+
nil, nil, nil, nil
|
596
|
+
],
|
597
|
+
'MIXED',
|
598
|
+
%w[ boundary 1383.905529.351298 ],
|
599
|
+
[ 'ATTACHMENT', %w[ filename hello.txt ] ],
|
600
|
+
'EN',
|
601
|
+
'test'
|
602
|
+
],
|
603
|
+
@mpart_mail.parts[2].raw_source.each_line.count,
|
604
|
+
nil, nil, nil, nil
|
605
|
+
],
|
606
|
+
[ [ 'IMAGE', 'GIF', nil, nil, nil, nil,
|
607
|
+
@mpart_mail.parts[3].parts[0].raw_source.bytesize,
|
608
|
+
nil,
|
609
|
+
[ 'INLINE', nil ],
|
610
|
+
nil, nil
|
482
611
|
],
|
483
|
-
[
|
484
|
-
|
612
|
+
[ 'MESSAGE', 'RFC822', nil, nil, nil, nil,
|
613
|
+
@mpart_mail.parts[3].parts[1].raw_source.bytesize,
|
614
|
+
[ 'Fri, 8 Nov 2013 19:31:03 +0900', 'inner multipart',
|
615
|
+
[ [ nil, nil, 'foo', 'nonet.com' ] ], nil, nil, [ [ nil, nil, 'bar', 'nonet.com' ] ], nil, nil, nil, nil
|
485
616
|
],
|
486
|
-
[ '
|
487
|
-
|
488
|
-
|
489
|
-
|
617
|
+
[ [ 'TEXT', 'PLAIN', %w[ charset us-ascii ], nil, nil, nil,
|
618
|
+
@mpart_mail.parts[3].parts[1].message.parts[0].raw_source.bytesize,
|
619
|
+
@mpart_mail.parts[3].parts[1].message.parts[0].raw_source.each_line.count,
|
620
|
+
nil, nil, nil,
|
621
|
+
'foo'
|
490
622
|
],
|
491
623
|
[ [ 'TEXT', 'PLAIN', %w[ charset us-ascii ], nil, nil, nil,
|
492
|
-
@mpart_mail.parts[3].parts[1].message.parts[0].raw_source.bytesize,
|
493
|
-
@mpart_mail.parts[3].parts[1].message.parts[0].raw_source.each_line.count
|
624
|
+
@mpart_mail.parts[3].parts[1].message.parts[1].parts[0].raw_source.bytesize,
|
625
|
+
@mpart_mail.parts[3].parts[1].message.parts[1].parts[0].raw_source.each_line.count,
|
626
|
+
nil, nil, nil,
|
627
|
+
'bar'
|
494
628
|
],
|
495
|
-
[
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
@mpart_mail.parts[3].parts[1].message.parts[1].parts[1].raw_source.bytesize,
|
501
|
-
@mpart_mail.parts[3].parts[1].message.parts[1].parts[1].raw_source.each_line.count
|
502
|
-
],
|
503
|
-
'ALTERNATIVE'
|
629
|
+
[ 'TEXT', 'HTML', %w[ charset us-ascii ], nil, nil, nil,
|
630
|
+
@mpart_mail.parts[3].parts[1].message.parts[1].parts[1].raw_source.bytesize,
|
631
|
+
@mpart_mail.parts[3].parts[1].message.parts[1].parts[1].raw_source.each_line.count,
|
632
|
+
nil, nil, nil,
|
633
|
+
'baz'
|
504
634
|
],
|
505
|
-
'
|
635
|
+
'ALTERNATIVE',
|
636
|
+
%w[ boundary 1383.905529.351301 ],
|
637
|
+
nil, nil, nil
|
506
638
|
],
|
507
|
-
|
639
|
+
'MIXED',
|
640
|
+
%w[ boundary 1383.905529.351300 ],
|
641
|
+
nil, nil, nil
|
508
642
|
],
|
509
|
-
|
643
|
+
@mpart_mail.parts[3].parts[1].raw_source.each_line.count,
|
644
|
+
nil, nil, nil, nil
|
510
645
|
],
|
511
|
-
'MIXED'
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
646
|
+
'MIXED',
|
647
|
+
%w[ boundary 1383.905529.351299 ],
|
648
|
+
nil, nil, nil
|
649
|
+
],
|
650
|
+
'MIXED',
|
651
|
+
%w[ boundary 1383.905529.351297 ],
|
652
|
+
nil, nil, nil
|
653
|
+
])
|
654
|
+
])
|
655
|
+
assert_fetch(2, [
|
656
|
+
'BODYSTRUCTURE ' +
|
657
|
+
encode_bodystructure([ 'APPLICATION',
|
658
|
+
'OCTET-STREAM',
|
659
|
+
nil,
|
660
|
+
nil,
|
661
|
+
nil,
|
662
|
+
nil,
|
663
|
+
@empty_mail.raw_source.bytesize,
|
664
|
+
nil,
|
665
|
+
nil,
|
666
|
+
nil,
|
667
|
+
nil
|
668
|
+
])
|
669
|
+
])
|
670
|
+
assert_fetch(3, [
|
671
|
+
'BODYSTRUCTURE ' +
|
672
|
+
encode_bodystructure([ 'APPLICATION',
|
673
|
+
'OCTET-STREAM',
|
674
|
+
nil,
|
675
|
+
nil,
|
676
|
+
nil,
|
677
|
+
nil,
|
678
|
+
@no_body_mail.raw_source.bytesize,
|
679
|
+
nil,
|
680
|
+
nil,
|
681
|
+
nil,
|
682
|
+
nil
|
683
|
+
])
|
684
|
+
])
|
685
|
+
}
|
538
686
|
end
|
539
687
|
|
540
688
|
def test_parse_envelope
|
@@ -590,7 +738,7 @@ module RIMS::Test
|
|
590
738
|
]
|
591
739
|
])
|
592
740
|
assert_fetch(3, [ 'ENVELOPE (NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL)' ])
|
593
|
-
assert_fetch(4, [ 'ENVELOPE (NIL
|
741
|
+
assert_fetch(4, [ 'ENVELOPE (NIL "foo" NIL NIL NIL NIL NIL NIL NIL NIL)' ])
|
594
742
|
assert_fetch(5, [
|
595
743
|
'ENVELOPE',
|
596
744
|
[ '"Fri, 8 Nov 2013 06:47:50 +0900 (JST)"', # Date
|
@@ -734,10 +882,10 @@ module RIMS::Test
|
|
734
882
|
@mpart_mail.parts[0].raw_source.bytesize,
|
735
883
|
@mpart_mail.parts[0].raw_source.each_line.count
|
736
884
|
],
|
737
|
-
[ 'APPLICATION', 'OCTET-STREAM',
|
885
|
+
[ 'APPLICATION', 'OCTET-STREAM', nil, nil, nil, nil,
|
738
886
|
@mpart_mail.parts[1].raw_source.bytesize
|
739
887
|
],
|
740
|
-
[ 'MESSAGE', 'RFC822',
|
888
|
+
[ 'MESSAGE', 'RFC822', nil, nil, nil, nil,
|
741
889
|
@mpart_mail.parts[2].raw_source.bytesize,
|
742
890
|
[ 'Fri, 8 Nov 2013 19:31:03 +0900', 'inner multipart',
|
743
891
|
[ [ nil, nil, 'foo', 'nonet.com' ] ], nil, nil, [ [ nil, nil, 'bar', 'nonet.com' ] ], nil, nil, nil, nil
|
@@ -746,7 +894,7 @@ module RIMS::Test
|
|
746
894
|
@mpart_mail.parts[2].message.parts[0].raw_source.bytesize,
|
747
895
|
@mpart_mail.parts[2].message.parts[0].raw_source.each_line.count
|
748
896
|
],
|
749
|
-
[ 'APPLICATION', 'OCTET-STREAM',
|
897
|
+
[ 'APPLICATION', 'OCTET-STREAM', nil, nil, nil, nil,
|
750
898
|
@mpart_mail.parts[2].message.parts[1].raw_source.bytesize
|
751
899
|
],
|
752
900
|
'MIXED'
|
@@ -754,10 +902,10 @@ module RIMS::Test
|
|
754
902
|
@mpart_mail.parts[2].raw_source.each_line.count
|
755
903
|
],
|
756
904
|
[
|
757
|
-
[ 'IMAGE', 'GIF',
|
905
|
+
[ 'IMAGE', 'GIF', nil, nil, nil, nil,
|
758
906
|
@mpart_mail.parts[3].parts[0].raw_source.bytesize
|
759
907
|
],
|
760
|
-
[ 'MESSAGE', 'RFC822',
|
908
|
+
[ 'MESSAGE', 'RFC822', nil, nil, nil, nil,
|
761
909
|
@mpart_mail.parts[3].parts[1].raw_source.bytesize,
|
762
910
|
[ 'Fri, 8 Nov 2013 19:31:03 +0900', 'inner multipart',
|
763
911
|
[ [ nil, nil, 'foo', 'nonet.com' ] ], nil, nil, [ [ nil, nil, 'bar', 'nonet.com' ] ], nil, nil, nil, nil
|
@@ -932,112 +1080,155 @@ module RIMS::Test
|
|
932
1080
|
assert_equal(expected_value, RIMS::Protocol::FetchParser::Utils.encode_list(array))
|
933
1081
|
end
|
934
1082
|
|
935
|
-
data('text/plain' =>
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
|
983
|
-
|
984
|
-
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
|
999
|
-
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1083
|
+
data('text/plain' =>
|
1084
|
+
[ '("TEXT" "PLAIN" ("CHARSET" "UTF-8") NIL NIL "BASE64" 16722 335)',
|
1085
|
+
[ 'TEXT',
|
1086
|
+
'PLAIN',
|
1087
|
+
%w[ CHARSET UTF-8 ],
|
1088
|
+
nil,
|
1089
|
+
nil,
|
1090
|
+
'BASE64',
|
1091
|
+
16722,
|
1092
|
+
335
|
1093
|
+
]
|
1094
|
+
],
|
1095
|
+
|
1096
|
+
'multipart/alternative' =>
|
1097
|
+
[ '(("TEXT" "PLAIN" ("CHARSET" "UTF-8" "DELSP" "yes" "FORMAT" "flowed") NIL NIL "BASE64" 1756 36)("TEXT" "HTML" ("CHARSET" "UTF-8") NIL NIL "QUOTED-PRINTABLE" 5921 119) "ALTERNATIVE")',
|
1098
|
+
[ [ 'TEXT',
|
1099
|
+
'PLAIN',
|
1100
|
+
%w[ CHARSET UTF-8 DELSP yes FORMAT flowed ],
|
1101
|
+
nil,
|
1102
|
+
nil,
|
1103
|
+
'BASE64',
|
1104
|
+
1756,
|
1105
|
+
36
|
1106
|
+
],
|
1107
|
+
[ 'TEXT',
|
1108
|
+
'HTML',
|
1109
|
+
%w[ CHARSET UTF-8 ],
|
1110
|
+
nil,
|
1111
|
+
nil,
|
1112
|
+
'QUOTED-PRINTABLE',
|
1113
|
+
5921,
|
1114
|
+
119
|
1115
|
+
],
|
1116
|
+
'ALTERNATIVE'
|
1117
|
+
]
|
1118
|
+
],
|
1119
|
+
|
1120
|
+
'message/rfc822:plain/text' =>
|
1121
|
+
[ '("MESSAGE" "RFC822" NIL NIL NIL NIL 16822 ("8 Nov 2013 06:47:50 +0900 (JST)" "test" (NIL NIL "alice" "example.net") NIL NIL (NIL NIL "bob" "example.net") NIL NIL NIL NIL) ("TEXT" "PLAIN" ("CHARSET" "UTF-8") NIL NIL "BASE64" 16722 335) 345)',
|
1122
|
+
[ 'MESSAGE',
|
1123
|
+
'RFC822',
|
1124
|
+
nil, # not allowed empty body field parameters
|
1125
|
+
nil,
|
1126
|
+
nil,
|
1127
|
+
nil,
|
1128
|
+
16822,
|
1129
|
+
[ '8 Nov 2013 06:47:50 +0900 (JST)', # Date
|
1130
|
+
'test', # Subject
|
1131
|
+
[ nil, nil, 'alice', 'example.net' ], # From
|
1132
|
+
nil, # Reply-To
|
1133
|
+
nil, # Sender
|
1134
|
+
[ nil, nil, 'bob', 'example.net'], # To
|
1135
|
+
nil, # Cc
|
1136
|
+
nil, # Bcc
|
1137
|
+
nil, # In-Reply-To
|
1138
|
+
nil # Message-Id
|
1139
|
+
],
|
1140
|
+
[ 'TEXT',
|
1141
|
+
'PLAIN',
|
1142
|
+
%w[ CHARSET UTF-8 ],
|
1143
|
+
nil,
|
1144
|
+
nil,
|
1145
|
+
'BASE64',
|
1146
|
+
16722,
|
1147
|
+
335
|
1148
|
+
],
|
1149
|
+
345
|
1150
|
+
]
|
1151
|
+
],
|
1152
|
+
|
1153
|
+
'message/rfc822:multipart/alternative' =>
|
1154
|
+
[ '("MESSAGE" "RFC822" NIL NIL NIL NIL 16822 ("8 Nov 2013 06:47:50 +0900 (JST)" "test" (NIL NIL "alice" "example.net") NIL NIL (NIL NIL "bob" "example.net") NIL NIL NIL NIL) (("TEXT" "PLAIN" ("CHARSET" "UTF-8" "DELSP" "yes" "FORMAT" "flowed") NIL NIL "BASE64" 1756 36)("TEXT" "HTML" ("CHARSET" "UTF-8") NIL NIL "QUOTED-PRINTABLE" 5921 119) "ALTERNATIVE") 345)',
|
1155
|
+
[ 'MESSAGE',
|
1156
|
+
'RFC822',
|
1157
|
+
nil, # not allowed empty body field parameters
|
1158
|
+
nil,
|
1159
|
+
nil,
|
1160
|
+
nil,
|
1161
|
+
16822,
|
1162
|
+
[ '8 Nov 2013 06:47:50 +0900 (JST)', # Date
|
1163
|
+
'test', # Subject
|
1164
|
+
[ nil, nil, 'alice', 'example.net' ], # From
|
1165
|
+
nil, # Reply-To
|
1166
|
+
nil, # Sender
|
1167
|
+
[ nil, nil, 'bob', 'example.net'], # To
|
1168
|
+
nil, # Cc
|
1169
|
+
nil, # Bcc
|
1170
|
+
nil, # In-Reply-To
|
1171
|
+
nil # Message-Id
|
1172
|
+
],
|
1173
|
+
[ [ 'TEXT',
|
1174
|
+
'PLAIN',
|
1175
|
+
%w[ CHARSET UTF-8 DELSP yes FORMAT flowed ],
|
1176
|
+
nil,
|
1177
|
+
nil,
|
1178
|
+
'BASE64',
|
1179
|
+
1756,
|
1180
|
+
36
|
1181
|
+
],
|
1182
|
+
[ 'TEXT',
|
1183
|
+
'HTML',
|
1184
|
+
%w[ CHARSET UTF-8 ],
|
1185
|
+
nil,
|
1186
|
+
nil,
|
1187
|
+
'QUOTED-PRINTABLE',
|
1188
|
+
5921,
|
1189
|
+
119
|
1190
|
+
],
|
1191
|
+
'ALTERNATIVE'
|
1192
|
+
],
|
1193
|
+
345
|
1194
|
+
]
|
1195
|
+
],
|
1196
|
+
|
1197
|
+
'multipart/alternative:extension' =>
|
1198
|
+
[ '(("TEXT" "PLAIN" ("CHARSET" "UTF-8" "DELSP" "yes" "FORMAT" "flowed") NIL NIL "BASE64" 1756 36 "Q2hlY2sgSW50ZWdyaXR5IQ==" ("INLINE" NIL) NIL NIL)("TEXT" "HTML" ("CHARSET" "UTF-8") NIL NIL "QUOTED-PRINTABLE" 5921 119 NIL ("ATTACHMENT" ("filename" "halo.html")) ("EN-US" "EN") NIL) "ALTERNATIVE" ("boundary" "1383.905529.351297") NIL "EN" "test")',
|
1199
|
+
[ [ 'TEXT',
|
1200
|
+
'PLAIN',
|
1201
|
+
%w[ CHARSET UTF-8 DELSP yes FORMAT flowed ],
|
1202
|
+
nil,
|
1203
|
+
nil,
|
1204
|
+
'BASE64',
|
1205
|
+
1756,
|
1206
|
+
36,
|
1207
|
+
'Q2hlY2sgSW50ZWdyaXR5IQ==',
|
1208
|
+
[ 'INLINE', nil ],
|
1209
|
+
nil,
|
1210
|
+
nil
|
1211
|
+
],
|
1212
|
+
[ 'TEXT',
|
1213
|
+
'HTML',
|
1214
|
+
%w[ CHARSET UTF-8 ],
|
1215
|
+
nil,
|
1216
|
+
nil,
|
1217
|
+
'QUOTED-PRINTABLE',
|
1218
|
+
5921,
|
1219
|
+
119,
|
1220
|
+
nil,
|
1221
|
+
[ 'ATTACHMENT', %w[ filename halo.html ] ],
|
1222
|
+
%w[ EN-US EN ],
|
1223
|
+
nil
|
1224
|
+
],
|
1225
|
+
'ALTERNATIVE',
|
1226
|
+
%w[ boundary 1383.905529.351297 ],
|
1227
|
+
nil,
|
1228
|
+
"EN",
|
1229
|
+
"test"
|
1230
|
+
]
|
1231
|
+
])
|
1041
1232
|
def test_encode_bodystructure(data)
|
1042
1233
|
expected_value, array = data
|
1043
1234
|
assert_equal(expected_value, RIMS::Protocol::FetchParser::Utils.encode_bodystructure(array))
|