1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.commons.mail;
18
19 import org.apache.commons.mail.mocks.MockEmailConcrete;
20
21 /**
22 * JUnit test case for invalid Addresses in Email Class
23 *
24 * @since 1.0
25 * @version $Id: InvalidAddressTest.java 1420381 2012-12-11 20:18:05Z tn $
26 */
27 public class InvalidAddressTest extends BaseEmailTestCase
28 {
29 /** */
30 private static final String [] ARR_INVALID_EMAILS = {
31 "local name@domain.com",
32 "local(name@domain.com",
33 "local)name@domain.com",
34 "local<name@domain.com",
35 "local>name@domain.com",
36 "local,name@domain.com",
37 "local;name@domain.com",
38 "local:name@domain.com",
39 "local[name@domain.com",
40 "local]name@domain.com",
41 // "local\\name@domain.com", is considered valid for mail-1.4.1
42 "local\"name@domain.com",
43 "local\tname@domain.com",
44 "local\nname@domain.com",
45 "local\rname@domain.com",
46 "local.name@domain com",
47 "local.name@domain(com",
48 "local.name@domain)com",
49 "local.name@domain<com",
50 "local.name@domain>com",
51 "local.name@domain,com",
52 "local.name@domain;com",
53 "local.name@domain:com",
54
55 // "local.name@domain[com",
56 "local.name@domain]com",
57 "local.name@domain\\com",
58 "local.name@domain\tcom",
59 "local.name@domain\ncom",
60 "local.name@domain\rcom",
61 "local.name@",
62 "@domain.com"
63 };
64
65 /** */
66 private MockEmailConcrete email;
67
68 /**
69 * @param name name
70 */
71 public InvalidAddressTest(String name)
72 {
73 super(name);
74 }
75
76 /**
77 * @throws Exception */
78 @Override
79 protected void setUp() throws Exception
80 {
81 super.setUp();
82
83 // reusable objects to be used across multiple tests
84 this.email = new MockEmailConcrete();
85 }
86
87 /**
88 *
89 * @throws Exception Exception
90 */
91 public void testSetInvalidFrom()
92 throws Exception
93 {
94 // ====================================================================
95 // Test setting invalid 'from' addresses
96 // ====================================================================
97 for (int i = 0; i < ARR_INVALID_EMAILS.length; i++)
98 {
99 try
100 {
101 // set from
102 email.setFrom(ARR_INVALID_EMAILS[i]);
103
104 // Expected an exception to be thrown
105 fail("setFrom " + i + " passed: " + ARR_INVALID_EMAILS[i]);
106 }
107 catch (EmailException ignore)
108 {
109 // Expected Result
110 }
111 }
112 }
113
114 /**
115 *
116 * @throws Exception Exception
117 */
118 public void testAddInvalidTo()
119 throws Exception
120 {
121 // ====================================================================
122 // Test adding invalid 'to' addresses
123 // ====================================================================
124 for (int i = 0; i < ARR_INVALID_EMAILS.length; i++)
125 {
126 try
127 {
128 // Add To
129 email.addTo(ARR_INVALID_EMAILS[i], "Joe");
130
131 // Expected an exception to be thrown
132 fail("addTo " + i + " passed: " + ARR_INVALID_EMAILS[i]);
133 }
134 catch (EmailException ignore)
135 {
136 // Expected Result
137 }
138 }
139 }
140
141 /**
142 *
143 * @throws Exception Exception
144 */
145 public void testAddInvalidCc()
146 throws Exception
147 {
148 // ====================================================================
149 // Test adding invalid 'cc' addresses
150 // ====================================================================
151 for (int i = 0; i < ARR_INVALID_EMAILS.length; i++)
152 {
153 try
154 {
155 // add cc
156 email.addCc(ARR_INVALID_EMAILS[i], "Joe");
157
158 // Expected an exception to be thrown
159 fail("addCc " + i + " passed: " + ARR_INVALID_EMAILS[i]);
160 }
161 catch (EmailException ignore)
162 {
163 // Expected Result
164 }
165 }
166 }
167
168 /**
169 *
170 * @throws Exception Exception
171 */
172 public void testAddInvalidBcc()
173 throws Exception
174 {
175 // ====================================================================
176 // Test adding invalid 'Bcc' addresses
177 // ====================================================================
178 for (int i = 0; i < ARR_INVALID_EMAILS.length; i++)
179 {
180 try
181 {
182 // add bcc
183 email.addBcc(ARR_INVALID_EMAILS[i], "Joe");
184
185 // Expected an exception to be thrown
186 fail("addBcc " + i + " passed: " + ARR_INVALID_EMAILS[i]);
187 }
188 catch (EmailException ignore)
189 {
190 // Expected Result
191 }
192 }
193 }
194 }