1   /*
2    * $Id: EmailEndpointsTestCase.java 10489 2008-01-23 17:53:38Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.transport.email;
12  
13  import org.mule.endpoint.MuleEndpointURI;
14  import org.mule.tck.AbstractMuleTestCase;
15  import org.mule.transport.email.ImapConnector;
16  
17  public class EmailEndpointsTestCase extends AbstractMuleTestCase
18  {
19  
20      private static final int PORT = 3125;
21      
22      public void testPop3Url() throws Exception
23      {
24          MuleEndpointURI endpointUri = new MuleEndpointURI("pop3://username:password@pop3.lotsofmail.org");
25          endpointUri.initialise();
26          assertEquals("pop3", endpointUri.getScheme());
27          assertEquals("username@lotsofmail.org", endpointUri.getAddress());
28          assertNull(endpointUri.getEndpointName());
29          assertEquals(-1, endpointUri.getPort());
30          assertEquals("pop3.lotsofmail.org", endpointUri.getHost());
31          assertEquals("username:password", endpointUri.getUserInfo());
32          assertEquals("pop3://username:password@pop3.lotsofmail.org", endpointUri.toString());
33          assertEquals(0, endpointUri.getParams().size());
34      }
35  
36      public void testSmtpUrl() throws Exception
37      {
38          MuleEndpointURI endpointUri = new MuleEndpointURI("smtp://username:password@smtp.lotsofmail.org");
39          endpointUri.initialise();
40          assertEquals("smtp", endpointUri.getScheme());
41          assertEquals("username@lotsofmail.org", endpointUri.getAddress());
42          assertNull(endpointUri.getEndpointName());
43          assertEquals(-1, endpointUri.getPort());
44          assertEquals("smtp.lotsofmail.org", endpointUri.getHost());
45          assertEquals("username:password", endpointUri.getUserInfo());
46          assertEquals("smtp://username:password@smtp.lotsofmail.org", endpointUri.toString());
47          assertEquals(0, endpointUri.getParams().size());
48      }
49  
50      public void testSmtpUrlWithPort() throws Exception
51      {
52          MuleEndpointURI endpointUri = new MuleEndpointURI("smtp://user:password@hostname:" + PORT);
53          endpointUri.initialise();
54          assertEquals("smtp", endpointUri.getScheme());
55          assertEquals("user@hostname:" + PORT, endpointUri.getAddress());
56          assertNull(endpointUri.getEndpointName());
57          assertEquals(PORT, endpointUri.getPort());
58          assertEquals("hostname", endpointUri.getHost());
59          assertEquals("user:password", endpointUri.getUserInfo());
60          assertEquals("smtp://user:password@hostname:" + PORT, endpointUri.toString());
61          assertEquals(0, endpointUri.getParams().size());
62      }
63  
64      public void testImapUrlWithFolder() throws Exception
65      {
66          MuleEndpointURI endpointUri = new MuleEndpointURI(
67              "imap://username:password@imap.lotsofmail.org/MyMail");
68          endpointUri.initialise();
69          assertEquals(ImapConnector.IMAP, endpointUri.getScheme());
70          assertEquals("username@lotsofmail.org", endpointUri.getAddress());
71          assertNull(endpointUri.getEndpointName());
72          assertEquals(-1, endpointUri.getPort());
73          assertEquals("imap.lotsofmail.org", endpointUri.getHost());
74          assertEquals("username:password", endpointUri.getUserInfo());
75          assertEquals("imap://username:password@imap.lotsofmail.org/MyMail", endpointUri.toString());
76          assertEquals(0, endpointUri.getParams().size());
77          assertEquals("/MyMail", endpointUri.getPath());
78  
79      }
80  
81      public void testSmtpUrlEmailUsernameAndParams() throws Exception
82      {
83          MuleEndpointURI endpointUri = new MuleEndpointURI(
84              "smtp://test%40lotsofmail.org:password@smtpout.secureserver.net:" + PORT +
85              "?address=test@lotsofmail.org&ccAddresses=donkey@lotsofmail.org");
86          endpointUri.initialise();
87          assertEquals("smtp", endpointUri.getScheme());
88          assertEquals("test@lotsofmail.org", endpointUri.getAddress());
89          assertNull(endpointUri.getEndpointName());
90          assertEquals(PORT, endpointUri.getPort());
91          assertEquals("smtpout.secureserver.net", endpointUri.getHost());
92          assertEquals("test@lotsofmail.org:password", endpointUri.getUserInfo());
93          assertEquals(
94              "smtp://test%40lotsofmail.org:password@smtpout.secureserver.net:" + PORT +
95              "?address=test@lotsofmail.org&ccAddresses=donkey@lotsofmail.org",
96              endpointUri.toString());
97          assertEquals(2, endpointUri.getParams().size());
98          assertEquals("donkey@lotsofmail.org", endpointUri.getParams().get("ccAddresses"));
99  
100     }
101 
102     /**
103      * Mule will assume that the username is the from address as it has an @ symbol
104      * in it
105      * @throws Exception
106      */
107     public void testSmtpUrlEmailUsernameWithoutAddressParam() throws Exception
108     {
109         MuleEndpointURI endpointUri = new MuleEndpointURI(
110             "smtp://test%40lotsofmail.org:password@smtpout.secureserver.net:" + PORT +
111             "?ccAddresses=donkey@lotsofmail.org");
112         endpointUri.initialise();
113         assertEquals("smtp", endpointUri.getScheme());
114         assertEquals("test@lotsofmail.org", endpointUri.getAddress());
115         assertNull(endpointUri.getEndpointName());
116         assertEquals(PORT, endpointUri.getPort());
117         assertEquals("smtpout.secureserver.net", endpointUri.getHost());
118         assertEquals("test@lotsofmail.org:password", endpointUri.getUserInfo());
119         assertEquals(
120             "smtp://test%40lotsofmail.org:password@smtpout.secureserver.net:" + PORT +
121             "?ccAddresses=donkey@lotsofmail.org",
122             endpointUri.toString());
123         assertEquals(1, endpointUri.getParams().size());
124         assertEquals("donkey@lotsofmail.org", endpointUri.getParams().get("ccAddresses"));
125 
126     }
127 
128     /**
129      * Mule will assume that the username is the from address as it has an @ symbol
130      * in it
131      * @throws Exception
132      */
133     public void testSmtpWithoutCredentials() throws Exception
134     {
135         MuleEndpointURI endpointUri = new MuleEndpointURI(
136             "smtp://smtpout.secureserver.net:" + PORT + "?address=test@lotsofmail.org");
137         endpointUri.initialise();
138         assertEquals("smtp", endpointUri.getScheme());
139         assertEquals("test@lotsofmail.org", endpointUri.getAddress());
140         assertNull(endpointUri.getEndpointName());
141         assertEquals(PORT, endpointUri.getPort());
142         assertEquals("smtpout.secureserver.net", endpointUri.getHost());
143         assertNull(endpointUri.getUserInfo());
144         assertEquals("smtp://smtpout.secureserver.net:" + PORT + "?address=test@lotsofmail.org",
145             endpointUri.toString());
146         assertEquals(1, endpointUri.getParams().size());
147     }
148 
149     /**
150      * Added by Lajos on 2006-12-14 per Ross
151      */
152     public void testWithAddressOverrideOnly() throws Exception
153     {
154         MuleEndpointURI endpointUri = new MuleEndpointURI("smtp://?address=test@lotsofmail.org");
155         endpointUri.initialise();
156         assertEquals("smtp", endpointUri.getScheme());
157         assertEquals("test@lotsofmail.org", endpointUri.getAddress());
158         assertNull(endpointUri.getEndpointName());
159         assertEquals(-1, endpointUri.getPort());
160         assertNull(endpointUri.getHost());
161         assertNull(endpointUri.getUserInfo());
162         assertEquals("smtp://?address=test@lotsofmail.org", endpointUri.toString());
163         assertEquals(1, endpointUri.getParams().size());
164     }
165 
166 }