File: imap-fetch-data-decoder-test.vala

package info (click to toggle)
geary 46.0-13
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,092 kB
  • sloc: javascript: 972; ansic: 722; sql: 247; xml: 183; python: 30; makefile: 28; sh: 24
file content (135 lines) | stat: -rw-r--r-- 6,015 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*
 * Copyright 2019 Michael Gratton <mike@vee.net>
 *
 * This software is licensed under the GNU Lesser General Public License
 * (version 2.1 or later). See the COPYING file in this distribution.
 */

class Geary.Imap.FetchDataDecoderTest : TestCase {


    public FetchDataDecoderTest() {
        base("Geary.Imap.FetchDataDecoderTest");
        add_test("envelope_basic", envelope_basic);
        add_test(
            "envelope_mailbox_missing_mailbox_name_quirk",
            envelope_mailbox_missing_mailbox_name_quirk
        );
        add_test(
            "envelope_mailbox_missing_host_name_quirk",
            envelope_mailbox_missing_host_name_quirk
        );
    }

    public void envelope_basic() throws GLib.Error {
        ListParameter env = new ListParameter();
        env.add(new QuotedStringParameter("Wed, 17 Jul 1996 02:23:25 -0700 (PDT)"));
        env.add(new QuotedStringParameter("Test subject"));

        // From
        env.add(new ListParameter.single(new_mailbox_structure("From", "from", "example.com")));

        // Sender
        env.add(new ListParameter.single(new_mailbox_structure("From", "from", "example.com")));

        // Reply-To
        env.add(new ListParameter.single(new_mailbox_structure("From", "from", "example.com")));

        env.add(new ListParameter.single(new_mailbox_structure("To", "to", "example.com")));
        env.add(new ListParameter.single(new_mailbox_structure("Cc", "cc", "example.com")));
        env.add(new ListParameter.single(new_mailbox_structure("Bcc", "bcc", "example.com")));

        // In-Reply-To
        env.add(new QuotedStringParameter("<1234@example.com>"));

        // Message-Id
        env.add(new QuotedStringParameter("<5678@example.com>"));

        var test_article = new EnvelopeDecoder(new Quirks());
        var decoded_generic = test_article.decode(env);
        var decoded = decoded_generic as Envelope;

        assert_non_null(decoded, "decoded type");
        assert_non_null(decoded.sent, "decoded sent");
        assert_equal(decoded.subject.value, "Test subject");
        assert_equal(decoded.from.to_rfc822_string(), "From <from@example.com>");
        assert_equal(decoded.sender.to_rfc822_string(), "From <from@example.com>");
        assert_equal(decoded.reply_to.to_rfc822_string(), "From <from@example.com>");

        assert_non_null(decoded.to, "to");
        assert_equal(decoded.to.to_rfc822_string(), "To <to@example.com>");

        assert_non_null(decoded.cc, "cc");
        assert_equal(decoded.cc.to_rfc822_string(), "Cc <cc@example.com>");

        assert_non_null(decoded.bcc, "bcc");
        assert_equal(decoded.bcc.to_rfc822_string(), "Bcc <bcc@example.com>");

        assert_non_null(decoded.in_reply_to, "in_reply_to");
        assert_equal(decoded.in_reply_to.to_rfc822_string(), "<1234@example.com>");

        assert_non_null(decoded.message_id, "message_id");
        assert_equal(decoded.message_id.to_rfc822_string(), "<5678@example.com>");
    }

    public void envelope_mailbox_missing_mailbox_name_quirk() throws GLib.Error {
        ListParameter env = new ListParameter();
        env.add(new QuotedStringParameter("Wed, 17 Jul 1996 02:23:25 -0700 (PDT)"));
        env.add(new QuotedStringParameter("Test subject"));
        env.add(new ListParameter.single(new_mailbox_structure("From", "from", "example.com")));
        env.add(new ListParameter.single(new_mailbox_structure("From", "from", "example.com")));
        env.add(new ListParameter.single(new_mailbox_structure("From", "from", "example.com")));

        env.add(new ListParameter.single(new_mailbox_structure("To", "BOGUS", "example.com")));
        env.add(new ListParameter.single(new_mailbox_structure("Cc", "cc", "example.com")));
        env.add(NilParameter.instance);
        env.add(NilParameter.instance);
        env.add(NilParameter.instance);

        var quirks = new Quirks();
        quirks.empty_envelope_mailbox_name = "BOGUS";

        var test_article = new EnvelopeDecoder(quirks);
        var decoded = test_article.decode(env) as Envelope;

        assert_non_null(decoded.to, "to");
        assert_equal(decoded.to.to_rfc822_string(), "To <@example.com>");
        assert_non_null(decoded.cc, "cc");
        assert_equal(decoded.cc.to_rfc822_string(), "Cc <cc@example.com>");
    }

    public void envelope_mailbox_missing_host_name_quirk() throws GLib.Error {
        ListParameter env = new ListParameter();
        env.add(new QuotedStringParameter("Wed, 17 Jul 1996 02:23:25 -0700 (PDT)"));
        env.add(new QuotedStringParameter("Test subject"));
        env.add(new ListParameter.single(new_mailbox_structure("From", "from", "example.com")));
        env.add(new ListParameter.single(new_mailbox_structure("From", "from", "example.com")));
        env.add(new ListParameter.single(new_mailbox_structure("From", "from", "example.com")));

        env.add(new ListParameter.single(new_mailbox_structure("To name", "to", "BOGUS")));
        env.add(new ListParameter.single(new_mailbox_structure("Cc", "cc", "example.com")));
        env.add(NilParameter.instance);
        env.add(NilParameter.instance);
        env.add(NilParameter.instance);

        var quirks = new Quirks();
        quirks.empty_envelope_host_name = "BOGUS";

        var test_article = new EnvelopeDecoder(quirks);
        var decoded = test_article.decode(env) as Envelope;

        assert_non_null(decoded.to, "to");
        assert_equal(decoded.to.to_rfc822_string(), "To name <to>");
        assert_non_null(decoded.cc, "cc");
        assert_equal(decoded.cc.to_rfc822_string(), "Cc <cc@example.com>");
    }

    private ListParameter new_mailbox_structure(string name, string local, string domain) {
        ListParameter mailbox = new ListParameter();
        mailbox.add(new QuotedStringParameter(name));
        mailbox.add(NilParameter.instance);
        mailbox.add(new QuotedStringParameter(local));
        mailbox.add(new QuotedStringParameter(domain));
        return mailbox;
    }
}