View Javadoc

1   /*
2    * $Id: EndpointURITestCase.java 22387 2011-07-12 03:53:36Z 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  package org.mule.test;
11  
12  import org.mule.DefaultMuleMessage;
13  import org.mule.MessageExchangePattern;
14  import org.mule.api.MuleContext;
15  import org.mule.api.MuleException;
16  import org.mule.api.MuleMessage;
17  import org.mule.api.endpoint.ImmutableEndpoint;
18  import org.mule.api.endpoint.InboundEndpoint;
19  import org.mule.api.endpoint.OutboundEndpoint;
20  import org.mule.endpoint.DynamicOutboundEndpoint;
21  import org.mule.module.client.MuleClient;
22  import org.mule.tck.junit4.AbstractMuleContextTestCase;
23  
24  import java.util.HashMap;
25  import java.util.Map;
26  
27  import org.junit.Test;
28  
29  import static org.junit.Assert.assertEquals;
30  
31  public class EndpointURITestCase extends AbstractMuleContextTestCase
32  {
33  
34      @Test
35      public void testEndpoints() throws Exception
36      {
37          Client client = new Client(muleContext);
38  
39          EndpointUri[] uris =
40          {
41              new EndpointUri("vm://#[header:INBOUND:prop1]/#[header:INBOUND:prop2]", "vm://apple/orange"),
42              new EndpointUri("imap://mule%40mule.net:secretpassword@gmail.com:143"),
43              new EndpointUri("vm://bucket:somefiles?query=%7B%22filename%22%3A%22foo%22%7D"),
44              new EndpointUri("http://localhost:1313"),
45              new EndpointUri("http://localhost:1313?${foo}", "http://localhost:1313?$[foo]"),
46              new EndpointUri("vm://#[header:INBOUND:prop1]", "vm://apple"),
47          };
48  
49          for (EndpointUri uri : uris)
50          {
51              if (!uri.isDynamic())
52              {
53                  InboundEndpoint ei = client.getInboundEndpoint(uri.getUri());
54                  uri.checkResultUri(ei);
55              }
56              if (!uri.getUri().startsWith("imap:"))
57              {
58                  OutboundEndpoint oi = client.getOutboundEndpoint(uri.getUri());
59                  uri.checkResultUri(oi);
60              }
61          }
62      }
63  
64      static class Client extends MuleClient
65      {
66          Client(MuleContext context) throws MuleException
67          {
68              super(context);
69          }
70  
71          @Override
72          public InboundEndpoint getInboundEndpoint(String uri) throws MuleException
73          {
74              return super.getInboundEndpoint(uri);
75          }
76  
77          public OutboundEndpoint getOutboundEndpoint(String uri) throws MuleException
78          {
79              MessageExchangePattern mep = MessageExchangePattern.ONE_WAY;
80              return getOutboundEndpoint(uri, mep, 0);
81          }
82      }
83  
84      static class EndpointUri
85      {
86          private String uri;
87          private boolean isDynamic;
88          private String resultUri;
89          private MuleMessage message;
90          {
91              Map<String, Object> inbound = new HashMap<String, Object>();
92              inbound.put("prop1", "apple");
93              inbound.put("prop2", "orange");
94              inbound.put("prop3", "banana");
95              message = new DefaultMuleMessage("Hello, world", inbound, null, null, muleContext);
96          }
97  
98          EndpointUri(String uri, String resultUri)
99          {
100             this.uri = uri;
101             this.resultUri = resultUri;
102             this.isDynamic = true;
103         }
104 
105         EndpointUri(String uri)
106         {
107             this.uri = uri;
108             this.resultUri = uri;
109             this.isDynamic = false;
110         }
111 
112         public String getUri()
113         {
114             return uri;
115         }
116 
117         public boolean isDynamic()
118         {
119             return isDynamic;
120         }
121 
122         public String getResultUri()
123         {
124             return resultUri;
125         }
126 
127         public void checkResultUri(ImmutableEndpoint ep)
128         {
129             String epUri;
130             if (ep instanceof DynamicOutboundEndpoint)
131             {
132                 epUri = muleContext.getExpressionManager().parse(ep.getAddress(), message, true);   
133             }
134             else
135             {
136                 epUri = ep.getAddress();
137             }
138             assertEquals(resultUri, epUri);
139         }
140     }
141 }