View Javadoc

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