001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.apache.commons.mail;
018    
019    import org.apache.commons.mail.mocks.MockEmailConcrete;
020    
021    /**
022     * JUnit test case for invalid Addresses in Email Class
023     *
024     * @since 1.0
025     * @author Niall Pemberton
026     * @version $Id: InvalidAddressTest.java 512612 2007-02-28 05:39:57Z dion $
027     */
028    public class InvalidAddressTest extends BaseEmailTestCase
029    {
030        /** */
031        private static final String [] ARR_INVALID_EMAILS = {
032            "local name@domain.com",
033            "local(name@domain.com",
034            "local)name@domain.com",
035            "local<name@domain.com",
036            "local>name@domain.com",
037            "local,name@domain.com",
038            "local;name@domain.com",
039            "local:name@domain.com",
040            "local[name@domain.com",
041            "local]name@domain.com",
042            "local\\name@domain.com",
043    
044            //      "local\"name@domain.com",
045            "local\tname@domain.com",
046            "local\nname@domain.com",
047            "local\rname@domain.com",
048            "local.name@domain com",
049            "local.name@domain(com",
050            "local.name@domain)com",
051            "local.name@domain<com",
052            "local.name@domain>com",
053            "local.name@domain,com",
054            "local.name@domain;com",
055            "local.name@domain:com",
056    
057            //      "local.name@domain[com",
058            "local.name@domain]com",
059            "local.name@domain\\com",
060            "local.name@domain\tcom",
061            "local.name@domain\ncom",
062            "local.name@domain\rcom",
063            "local.name@",
064            "@domain.com"
065        };
066    
067        /** */
068        private MockEmailConcrete email;
069    
070        /**
071         * @param name name
072         */
073        public InvalidAddressTest(String name)
074        {
075            super(name);
076        }
077    
078        /**
079         * @throws Exception  */
080        protected void setUp() throws Exception
081        {
082            super.setUp();
083    
084            // reusable objects to be used across multiple tests
085            this.email = new MockEmailConcrete();
086        }
087    
088        /**
089         *
090         * @throws Exception Exception
091         */
092        public void testSetInvalidFrom()
093                throws Exception
094        {
095            // ====================================================================
096            // Test setting invalid 'from' addresses
097            // ====================================================================
098            for (int i = 0; i < ARR_INVALID_EMAILS.length; i++)
099            {
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    }