View Javadoc

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