1   /*
2    * $Id: URIBuilderTestCase.java 11549 2008-04-09 05:12:30Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.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 queries;
23  
24      static
25      {
26          queries = new HashMap();
27          queries.put("aname", "avalue");
28          queries.put("bname", "bvalue");
29      }
30  
31      public void testAddressForProtocol()
32      {
33          URIBuilder uri = new URIBuilder();
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();
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();
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();
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();
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();
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");
80          EndpointURI endpointURI = uri.getEndpoint();
81          assertEquals("test://bar", endpointURI.getUri().toString());
82          assertEquals("test", endpointURI.getSchemeMetaInfo());
83          uri = new URIBuilder("meta:test://bar");
84          endpointURI = uri.getEndpoint();
85          assertEquals("test://bar", endpointURI.getUri().toString());
86          assertEquals("meta", endpointURI.getSchemeMetaInfo());
87      }
88  
89  }