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