View Javadoc

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