View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.endpoint;
8   
9   import org.mule.api.MuleException;
10  import org.mule.tck.junit4.AbstractMuleContextTestCase;
11  
12  import java.util.Properties;
13  
14  import org.junit.Test;
15  
16  import static org.junit.Assert.assertEquals;
17  import static org.junit.Assert.assertNull;
18  
19  public class MuleEndpointURITestCase extends AbstractMuleContextTestCase
20  {
21      @Test
22      public void testEquality() throws Exception
23      {
24          MuleEndpointURI u1 = new MuleEndpointURI("test://mule:secret@jabber.org:6666/ross@jabber.org", muleContext);
25          MuleEndpointURI u2 = new MuleEndpointURI("test://mule:secret@jabber.org:6666/ross@jabber.org", muleContext);
26  
27          assertEquals(u1, u2);
28          assertEquals(u2, u1);
29          assertEquals(u1.hashCode(), u2.hashCode());
30          assertEquals(u2.hashCode(), u1.hashCode());
31  
32          MuleEndpointURI u3 = new MuleEndpointURI(u1);
33          assertEquals(u1, u3);
34          assertEquals(u2, u3);
35          assertEquals(u3, u1);
36          assertEquals(u3, u2);
37          assertEquals(u1.hashCode(), u3.hashCode());
38          assertEquals(u2.hashCode(), u3.hashCode());
39      }
40  
41      @Test
42      public void testUriWithHostOnly() throws Exception
43      {
44          MuleEndpointURI uri = buildEndpointUri("test://theHost");
45          assertSchemeAndHostAndEnpointName(uri);
46          assertEquals(-1, uri.getPort());
47          assertEquals(0, uri.getParams().size());
48      }
49  
50      @Test
51      public void testUriWithHostAndPort() throws Exception
52      {
53          MuleEndpointURI uri = buildEndpointUri("test://theHost:9999");
54          assertSchemeAndHostAndEnpointName(uri);
55          assertEquals(9999, uri.getPort());
56          assertEquals(0, uri.getParams().size());
57      }
58      
59      @Test
60      public void testUriWithUsername() throws Exception
61      {
62          MuleEndpointURI uri = buildEndpointUri("test://theUser@theHost");
63          assertSchemeAndHostAndEnpointName(uri);
64          assertEquals(-1, uri.getPort());
65          assertEquals("theUser", uri.getUser());
66          assertEquals(0, uri.getParams().size());
67      }
68          
69      @Test
70      public void testUriWithUsernameAndPassword() throws Exception
71      {
72          MuleEndpointURI uri = buildEndpointUri("test://theUser:secret@theHost");
73          assertSchemeAndHostAndEnpointName(uri);
74          assertEquals(-1, uri.getPort());
75          assertEquals("theUser", uri.getUser());
76          assertEquals("secret", uri.getPassword());
77          assertEquals("theUser:secret", uri.getUserInfo());
78          assertEquals(0, uri.getParams().size());
79      }
80      
81      @Test
82      public void testUriWithUsernameContainingAtSignAndPassword() throws Exception
83      {
84          MuleEndpointURI uri = buildEndpointUri("test://theUser%40theEmailHost:secret@theHost");
85          assertSchemeAndHostAndEnpointName(uri);
86          assertEquals(-1, uri.getPort());
87          assertEquals("theUser@theEmailHost", uri.getUser());
88          assertEquals("secret", uri.getPassword());
89          assertEquals(0, uri.getParams().size());
90      }
91  
92      @Test
93      public void testUriWithUsernameAndPasswordContainingAtSign() throws Exception
94      {
95          MuleEndpointURI uri = buildEndpointUri("test://theUser:secret%40secret@theHost");
96          assertSchemeAndHostAndEnpointName(uri);
97          assertEquals(-1, uri.getPort());
98          assertEquals("theUser", uri.getUser());
99          assertEquals("secret@secret", uri.getPassword());
100         assertEquals(0, uri.getParams().size());
101     }
102 
103     @Test
104     public void testUriWithPath() throws Exception
105     {
106         MuleEndpointURI uri = buildEndpointUri("test://theHost/thePath");
107         assertSchemeAndHostAndEnpointName(uri);
108         assertEquals(-1, uri.getPort());
109         assertEquals("/thePath", uri.getPath());
110         assertEquals(0, uri.getParams().size());
111     }
112     
113     @Test
114     public void testUriWithQuery() throws Exception
115     {
116         MuleEndpointURI uri = buildEndpointUri("test://theHost?query=xxx");
117         assertSchemeAndHostAndEnpointName(uri);
118         assertEquals(-1, uri.getPort());
119         assertEquals("query=xxx", uri.getQuery());
120         
121         Properties params = uri.getParams();
122         assertEquals(1, params.size());
123         assertEquals("xxx", params.getProperty("query"));
124     }
125     
126     @Test
127     public void testUriWithQueryContainingAtSign() throws Exception
128     {
129         MuleEndpointURI uri = buildEndpointUri("test://theHost?query=xxx@yyy");
130         assertSchemeAndHostAndEnpointName(uri);
131         assertEquals(-1, uri.getPort());
132         assertEquals("query=xxx@yyy", uri.getQuery());
133         
134         Properties params = uri.getParams();
135         assertEquals(1, params.size());
136         assertEquals("xxx@yyy", params.getProperty("query"));
137     }
138 
139     @Test
140     public void testUriWithPathAndQuery() throws Exception
141     {
142         MuleEndpointURI uri = buildEndpointUri("test://theHost/thePath?query=xxx");
143         assertSchemeAndHostAndEnpointName(uri);
144         assertEquals(-1, uri.getPort());
145         assertEquals("/thePath", uri.getPath());
146         assertEquals("query=xxx", uri.getQuery());
147         
148         Properties params = uri.getParams();
149         assertEquals(1, params.size());
150         assertEquals("xxx", params.getProperty("query"));
151     }
152     
153     @Test
154     public void testPasswordMasking() throws Exception
155     {
156         MuleEndpointURI uri = new MuleEndpointURI("test://theUser:password@theHost", muleContext);
157         assertEquals("test://theUser:****@theHost", uri.toString());
158     }
159     
160     @Test
161     public void testPasswordMaskingWithUsernameContainingAtSign() throws Exception
162     {
163         MuleEndpointURI uri = new MuleEndpointURI("test://theUser%40theEmailHost:password@theHost", muleContext);
164         assertEquals("test://theUser%40theEmailHost:****@theHost", uri.toString());
165     }
166     
167     private MuleEndpointURI buildEndpointUri(String uriString) throws MuleException
168     {
169         MuleEndpointURI uri = new MuleEndpointURI(uriString, muleContext);
170         uri.initialise();
171         return uri;
172     }
173 
174     private void assertSchemeAndHostAndEnpointName(MuleEndpointURI uri)
175     {
176         assertEquals("test", uri.getScheme());
177         assertEquals("theHost", uri.getHost());
178         assertNull(uri.getEndpointName());
179     }
180 }