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