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;
}
}
|