1   /*
2    * Copyright 2005 The Apache Software Foundation
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.apache.commons.mail;
17  
18  import org.apache.commons.mail.mocks.MockEmailConcrete;
19  
20  /**
21   * JUnit test case for invalid Addresses in Email Class
22   *
23   * @since 1.0
24   * @author Niall Pemberton
25   * @version $Id: InvalidAddressTest.java 279290 2005-09-07 10:16:00Z henning $
26   */
27  public class InvalidAddressTest
28          extends BaseEmailTestCase
29  {
30      /** */
31      private MockEmailConcrete email = null;
32  
33      /** */
34      private static final String [] ARR_INVALID_EMAILS = {
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",
42          "local:name@domain.com",
43          "local[name@domain.com",
44          "local]name@domain.com",
45          "local\\name@domain.com",
46  
47          //      "local\"name@domain.com",
48          "local\tname@domain.com",
49          "local\nname@domain.com",
50          "local\rname@domain.com",
51          "local.name@domain com",
52          "local.name@domain(com",
53          "local.name@domain)com",
54          "local.name@domain<com",
55          "local.name@domain>com",
56          "local.name@domain,com",
57          "local.name@domain;com",
58          "local.name@domain:com",
59  
60          //      "local.name@domain[com",
61          "local.name@domain]com",
62          "local.name@domain\\com",
63          "local.name@domain\tcom",
64          "local.name@domain\ncom",
65          "local.name@domain\rcom",
66          "local.name@",
67          "@domain.com"
68      };
69  
70      /**
71       * @param name name
72       */
73      public InvalidAddressTest(String name)
74      {
75          super(name);
76      }
77  
78      /** */
79      protected void setUp()
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 }