1
2
3
4
5
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 }