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   * @author Niall Pemberton
26   * @version $Id: InvalidAddressTest.java 512612 2007-02-28 05:39:57Z dion $
27   */
28  public class InvalidAddressTest extends BaseEmailTestCase
29  {
30      /** */
31      private static final String [] ARR_INVALID_EMAILS = {
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",
42          "local\\name@domain.com",
43  
44          //      "local\"name@domain.com",
45          "local\tname@domain.com",
46          "local\nname@domain.com",
47          "local\rname@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          "local.name@domain;com",
55          "local.name@domain:com",
56  
57          //      "local.name@domain[com",
58          "local.name@domain]com",
59          "local.name@domain\\com",
60          "local.name@domain\tcom",
61          "local.name@domain\ncom",
62          "local.name@domain\rcom",
63          "local.name@",
64          "@domain.com"
65      };
66  
67      /** */
68      private MockEmailConcrete email;
69  
70      /**
71       * @param name name
72       */
73      public InvalidAddressTest(String name)
74      {
75          super(name);
76      }
77  
78      /**
79       * @throws Exception  */
80      protected void setUp() throws Exception
81      {
82          super.setUp();
83  
84          // reusable objects to be used across multiple tests
85          this.email = new MockEmailConcrete();
86      }
87  
88      /**
89       *
90       * @throws Exception Exception
91       */
92      public void testSetInvalidFrom()
93              throws Exception
94      {
95          // ====================================================================
96          // Test setting invalid 'from' addresses
97          // ====================================================================
98          for (int i = 0; i < ARR_INVALID_EMAILS.length; i++)
99          {
100             try
101             {
102                 // set from
103                 email.setFrom(ARR_INVALID_EMAILS[i]);
104 
105                 // Expected an exception to be thrown
106                 fail("setFrom " + i + " passed: " + ARR_INVALID_EMAILS[i]);
107             }
108             catch (EmailException ignore)
109             {
110                 // Expected Result
111             }
112         }
113     }
114 
115     /**
116      *
117      * @throws Exception Exception
118      */
119     public void testAddInvalidTo()
120             throws Exception
121     {
122         // ====================================================================
123         // Test adding invalid 'to' addresses
124         // ====================================================================
125         for (int i = 0; i < ARR_INVALID_EMAILS.length; i++)
126         {
127             try
128             {
129                 // Add To
130                 email.addTo(ARR_INVALID_EMAILS[i], "Joe");
131 
132                 // Expected an exception to be thrown
133                 fail("addTo " + i + " passed: " + ARR_INVALID_EMAILS[i]);
134             }
135             catch (EmailException ignore)
136             {
137                 // Expected Result
138             }
139         }
140     }
141 
142     /**
143      *
144      * @throws Exception Exception
145      */
146     public void testAddInvalidCc()
147             throws Exception
148     {
149         // ====================================================================
150         // Test adding invalid 'cc' addresses
151         // ====================================================================
152         for (int i = 0; i < ARR_INVALID_EMAILS.length; i++)
153         {
154             try
155             {
156                 // add cc
157                 email.addCc(ARR_INVALID_EMAILS[i], "Joe");
158 
159                 // Expected an exception to be thrown
160                 fail("addCc " + i + " passed: " + ARR_INVALID_EMAILS[i]);
161             }
162             catch (EmailException ignore)
163             {
164                 // Expected Result
165             }
166         }
167     }
168 
169     /**
170      *
171      * @throws Exception Exception
172      */
173     public void testAddInvalidBcc()
174             throws Exception
175     {
176         // ====================================================================
177         // Test adding invalid 'Bcc' addresses
178         // ====================================================================
179         for (int i = 0; i < ARR_INVALID_EMAILS.length; i++)
180         {
181             try
182             {
183                 // add bcc
184                 email.addBcc(ARR_INVALID_EMAILS[i], "Joe");
185 
186                 // Expected an exception to be thrown
187                 fail("addBcc " + i + " passed: " + ARR_INVALID_EMAILS[i]);
188             }
189             catch (EmailException ignore)
190             {
191                 // Expected Result
192             }
193         }
194     }
195 }