View Javadoc

1   /*
2    * $Id: URIBuilderTestCase.java 20321 2010-11-24 15:21:24Z dfeist $
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.endpoint;
12  
13  import org.mule.api.endpoint.EndpointURI;
14  import org.mule.tck.AbstractMuleTestCase;
15  
16  import java.util.HashMap;
17  import java.util.Map;
18  
19  public class URIBuilderTestCase extends AbstractMuleTestCase
20  {
21  
22      private static final Map<String, String> queries;
23  
24      static
25      {
26          queries = new HashMap<String, String>();
27          queries.put("aname", "avalue");
28          queries.put("bname", "bvalue");
29      }
30  
31      public void testAddressForProtocol()
32      {
33          URIBuilder uri = new URIBuilder(muleContext);
34          uri.setProtocol("foo");
35          uri.setAddress("foo://bar");
36          assertEquals("foo://bar", uri.toString());
37      }
38  
39      public void testAddressForMeta()
40      {
41          URIBuilder uri = new URIBuilder(muleContext);
42          uri.setMeta("foo");
43          uri.setAddress("baz://bar");
44          assertEquals("foo:baz://bar", uri.toString());
45      }
46  
47      public void testQueriesWithAddress()
48      {
49          URIBuilder uri = new URIBuilder(muleContext);
50          uri.setAddress("foo://bar");
51          uri.setQueryMap(queries);
52          assertEquals("foo://bar?aname=avalue&bname=bvalue", uri.toString());
53      }
54  
55      // note that explicit properties over-rule those in the uri when duplicated
56      // and we keep parameter ordering as in original url
57      public void testLiteralQueries()
58      {
59          URIBuilder uri1 = new URIBuilder(muleContext);
60          uri1.setAddress("foo://bar?cname=cvalue&aname=anothervalue");
61          uri1.setQueryMap(queries);
62          assertEquals("foo://bar?cname=cvalue&aname=avalue&bname=bvalue", uri1.toString());
63          URIBuilder uri2 = new URIBuilder(muleContext);
64          uri2.setQueryMap(queries);
65          uri2.setAddress("foo://bar?cname=cvalue&aname=anothervalue");
66          assertEquals("foo://bar?cname=cvalue&aname=avalue&bname=bvalue", uri2.toString());
67      }
68  
69      public void testNullQueries()
70      {
71          URIBuilder uri1 = new URIBuilder(muleContext);
72          uri1.setAddress("foo://bar?cname&aname");
73          uri1.setQueryMap(queries);
74          assertEquals("foo://bar?cname&aname=avalue&bname=bvalue", uri1.toString());
75      }
76  
77      public void testFromString()
78      {
79          URIBuilder uri = new URIBuilder("test://bar", muleContext);
80          EndpointURI endpointURI = uri.getEndpoint();
81          assertEquals("test://bar", endpointURI.getUri().toString());
82          assertEquals("test", endpointURI.getSchemeMetaInfo());
83          uri = new URIBuilder("meta:test://bar", muleContext);
84          endpointURI = uri.getEndpoint();
85          assertEquals("test://bar", endpointURI.getUri().toString());
86          assertEquals("meta", endpointURI.getSchemeMetaInfo());
87      }
88  
89      public void testMultiValueParam() 
90      {
91          // Test from uri string
92          URIBuilder uri = new URIBuilder("test://bar?aname=avalue&aname=bvalue&aname=cvalue", muleContext);
93          EndpointURI endpointURI = uri.getEndpoint();
94          assertEquals("test://bar?aname=avalue&aname=bvalue&aname=cvalue", endpointURI.getUri().toString());
95  
96          // Test modifying values with a map (only first should change)
97          Map<String, String> tq = new HashMap<String, String>();
98          tq.put("aname", "zvalue");
99          tq.put("dname", "dvalue");
100 
101         uri = new URIBuilder("test://bar?aname=avalue&aname=bvalue&aname=cvalue", muleContext);
102         uri.setQueryMap(tq);
103         endpointURI = uri.getEndpoint();
104         assertEquals("test://bar?aname=zvalue&aname=bvalue&aname=cvalue&dname=dvalue", endpointURI.getUri().toString());
105     }
106     
107 }