1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.jsieve.util.check;
21
22 import java.util.List;
23
24 import junit.framework.TestCase;
25
26 import org.apache.jsieve.javaxmail.MockMimeMessage;
27
28 public class ScriptCheckMailAdapterHeadersTest extends TestCase {
29 private static final String BCC = "Bcc";
30
31 private static final String TO = "To";
32
33 private static final String FROM = "From";
34
35 private static final int MESSAGE_SIZE = 100;
36
37 private static final String BCC_ADDRESS_ONE = "bugs@toons.example.org";
38
39 private static final String BCC_ADDRESS_TWO = "daffy@toons.example.org";
40
41 private static final String TO_ADDRESS = "roadrunner@acme.example.com";
42
43 private static final String X_HEADER_NAME = "X-Toon";
44
45 private static final String X_HEADER_WITH_WS = " "
46 + X_HEADER_NAME.toLowerCase();
47
48 private static final String X_HEADER_VALUE = "Road Runner";
49
50 private static final String X_HEADER_VALUE_ALT = "Wile E. Coyote And Road Runner";
51
52 private static final String FROM_ADDRESS = "coyote@desert.example.org";
53
54 ScriptCheckMailAdapter adapter;
55
56 MockMimeMessage message;
57
58 protected void setUp() throws Exception {
59 super.setUp();
60 adapter = new ScriptCheckMailAdapter();
61 message = new MockMimeMessage();
62 message.addHeader(FROM, FROM_ADDRESS);
63 message.addHeader(TO, TO_ADDRESS);
64 message.addHeader(BCC, BCC_ADDRESS_ONE);
65 message.addHeader(BCC, BCC_ADDRESS_TWO);
66 message.addHeader(X_HEADER_NAME, X_HEADER_VALUE);
67 message.addHeader(X_HEADER_NAME.toLowerCase(), X_HEADER_VALUE
68 .toLowerCase());
69 message.addHeader(X_HEADER_WITH_WS, X_HEADER_VALUE_ALT);
70 message.setSize(MESSAGE_SIZE);
71 adapter.setMail(message);
72 }
73
74 public void testGetHeader() throws Exception {
75 List<String> headers = adapter.getHeader(FROM);
76 assertNotNull(headers);
77 assertEquals("From header", 1, headers.size());
78 assertEquals("From header", FROM_ADDRESS, headers.get(0));
79 headers = adapter.getHeader(BCC);
80 assertEquals("Bcc headers", 2, headers.size());
81 assertTrue("Bcc headers", headers.contains(BCC_ADDRESS_ONE));
82 assertTrue("Bcc headers", headers.contains(BCC_ADDRESS_TWO));
83 headers = adapter.getHeader(X_HEADER_NAME);
84 assertEquals("Case and whitespace sensitive", 1, headers.size());
85 assertEquals("Case and whitespace sensitive", X_HEADER_VALUE, headers
86 .get(0));
87 headers = adapter.getHeader(X_HEADER_NAME.toLowerCase());
88 assertEquals("Case and whitespace sensitive", 1, headers.size());
89 assertEquals("Case and whitespace sensitive", X_HEADER_VALUE
90 .toLowerCase(), headers.get(0));
91 headers = adapter.getHeader(X_HEADER_WITH_WS);
92 assertEquals("Case and whitespace sensitive", 1, headers.size());
93 assertEquals("Case and whitespace sensitive", X_HEADER_VALUE_ALT,
94 headers.get(0));
95 }
96
97 public void testGetHeaderNames() throws Exception {
98 List headers = adapter.getHeaderNames();
99 assertNotNull(headers);
100 assertEquals("All headers set returned", 6, headers.size());
101 assertTrue("All headers set returned", headers.contains(BCC));
102 assertTrue("All headers set returned", headers.contains(TO));
103 assertTrue("All headers set returned", headers.contains(FROM));
104 assertTrue("All headers set returned", headers.contains(X_HEADER_NAME));
105 assertTrue("All headers set returned", headers.contains(X_HEADER_NAME
106 .toLowerCase()));
107 assertTrue("All headers set returned", headers
108 .contains(X_HEADER_WITH_WS));
109 }
110
111 public void testGetMatchingHeader() throws Exception {
112 List<String> headers = adapter.getMatchingHeader(FROM);
113 assertNotNull(headers);
114 assertEquals("From headers set returned", 1, headers.size());
115 assertTrue("From headers set returned", headers.contains(FROM_ADDRESS));
116 headers = adapter.getMatchingHeader(X_HEADER_NAME);
117 assertNotNull(headers);
118 assertEquals(
119 "Matches ignoring whitespace and capitalisation headers set returned",
120 3, headers.size());
121 assertTrue(
122 "Matches ignoring whitespace and capitalisation headers set returned",
123 headers.contains(X_HEADER_VALUE));
124 assertTrue(
125 "Matches ignoring whitespace and capitalisation headers set returned",
126 headers.contains(X_HEADER_VALUE_ALT));
127 assertTrue(
128 "Matches ignoring whitespace and capitalisation headers set returned",
129 headers.contains(X_HEADER_VALUE.toLowerCase()));
130 }
131
132 public void testGetSize() throws Exception {
133 int size = adapter.getSize();
134 assertEquals("Message size set", MESSAGE_SIZE, size);
135 }
136 }