This project has retired. For details please refer to its Attic page.
UDDI_160_RESTIntergrationTest xref
View Javadoc
1   /*
2    * Copyright 2013 The Apache Software Foundation.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.apache.juddi.v3.tck;
17  
18  import java.rmi.RemoteException;
19  import java.util.logging.Level;
20  import java.util.logging.Logger;
21  import javax.xml.bind.JAXB;
22  import org.apache.commons.configuration.ConfigurationException;
23  import org.apache.commons.logging.Log;
24  import org.apache.commons.logging.LogFactory;
25  import org.apache.http.HttpResponse;
26  import org.apache.http.client.HttpClient;
27  import org.apache.http.client.methods.HttpGet;
28  import org.apache.http.impl.client.DefaultHttpClient;
29  import org.apache.juddi.v3.client.UDDIConstants;
30  import org.apache.juddi.v3.client.config.UDDIClient;
31  import org.apache.juddi.v3.client.cryptor.XmlUtils;
32  import org.apache.juddi.v3.client.transport.Transport;
33  import org.junit.AfterClass;
34  import org.junit.Assert;
35  import org.junit.Assume;
36  import org.junit.BeforeClass;
37  import org.junit.Test;
38  import org.uddi.api_v3.BindingTemplate;
39  import org.uddi.api_v3.BusinessEntity;
40  import org.uddi.api_v3.BusinessList;
41  import org.uddi.api_v3.BusinessService;
42  import org.uddi.api_v3.FindBusiness;
43  import org.uddi.api_v3.FindQualifiers;
44  import org.uddi.api_v3.FindService;
45  import org.uddi.api_v3.FindTModel;
46  import org.uddi.api_v3.GetServiceDetail;
47  import org.uddi.api_v3.Name;
48  import org.uddi.api_v3.ServiceDetail;
49  import org.uddi.api_v3.ServiceList;
50  import org.uddi.api_v3.TModel;
51  import org.uddi.api_v3.TModelList;
52  import org.uddi.v3_service.DispositionReportFaultMessage;
53  import org.uddi.v3_service.UDDIInquiryPortType;
54  
55  /**
56   * Optional HTTP GET, REST style web services for UDDI
57   *
58   * @author Alex O'Ree
59   */
60  public class UDDI_160_RESTIntergrationTest {
61  
62          private static UDDIInquiryPortType inquiry = null;
63          private static Log logger = LogFactory.getLog(UDDI_160_RESTIntergrationTest.class);
64          private static String authInfo = null;
65          private static UDDIClient manager;
66  
67          @BeforeClass
68          public static void startRegistry() throws ConfigurationException {
69  
70                  if (!TckPublisher.isEnabled()) {
71                          return;
72                  }
73                  manager = new UDDIClient();
74                  manager.start();
75  
76                  try {
77                          Transport transport = manager.getTransport("uddiv3");
78                          inquiry = transport.getUDDIInquiryService();
79                  } catch (Exception e) {
80                          logger.error(e.getMessage(), e);
81                          Assert.fail("Could not obtain authInfo token.");
82                  }
83                  JUDDI_300_MultiNodeIntegrationTest.testSetupReplicationConfig();
84          }
85  
86          @AfterClass
87          public static void stopRegistry() throws ConfigurationException {
88                  if (!TckPublisher.isEnabled()) {
89                          return;
90                  }
91                  manager.stop();
92          }
93  
94          /*@Test
95           public void InquiryREST_WADL_GET() throws Exception {
96           Assume.assumeTrue(TckPublisher.isInquiryRestEnabled());
97  
98           String url = manager.getClientConfig().getHomeNode().getInquiry_REST_Url();
99           Assume.assumeNotNull(url);
100          HttpClient client = new DefaultHttpClient();
101          HttpGet httpGet = new HttpGet(url + "?_wadl");
102          HttpResponse response = client.execute(httpGet);
103          Assert.assertTrue(response.getStatusLine().getStatusCode() == 200);
104 
105          }*/
106         @Test
107         public void InquiryREST_GET_Business() throws Exception {
108                 Assume.assumeTrue(TckPublisher.isEnabled());
109                 Assume.assumeTrue(TckPublisher.isInquiryRestEnabled());
110                 FindBusiness fb = new FindBusiness();
111                 fb.setMaxRows(1);
112                 fb.getName().add(new Name(UDDIConstants.WILDCARD, null));
113                 fb.setFindQualifiers(new FindQualifiers());
114                 fb.getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
115                 BusinessList findBusiness = inquiry.findBusiness(fb);
116                 Assume.assumeTrue(findBusiness != null);
117                 Assume.assumeTrue(findBusiness.getBusinessInfos() != null);
118                 Assume.assumeTrue(!findBusiness.getBusinessInfos().getBusinessInfo().isEmpty());
119 
120                 String url = manager.getClientConfig().getHomeNode().getInquiry_REST_Url();
121 
122                 Assume.assumeNotNull(url);
123                 HttpClient client = new DefaultHttpClient();
124                 HttpGet httpGet = new HttpGet(url + "?businessKey=" + findBusiness.getBusinessInfos().getBusinessInfo().get(0).getBusinessKey());
125                 logger.info("Fetching " + httpGet.getURI());
126                 HttpResponse response = client.execute(httpGet);
127 
128                 Assert.assertTrue(response.getStatusLine().getStatusCode() == 200);
129                 logger.info("Response content: " + response.getEntity().getContent());
130                 BusinessEntity unmarshal = (BusinessEntity) XmlUtils.unmarshal(response.getEntity().getContent(), BusinessEntity.class);
131                 client.getConnectionManager().shutdown();
132                 Assert.assertNotNull(unmarshal);
133                 Assert.assertEquals(unmarshal.getBusinessKey(), findBusiness.getBusinessInfos().getBusinessInfo().get(0).getBusinessKey());
134 
135         }
136 
137         @Test
138         public void InquiryREST_GET_TModel() throws Exception {
139                 Assume.assumeTrue(TckPublisher.isEnabled());
140                 Assume.assumeTrue(TckPublisher.isInquiryRestEnabled());
141                 FindTModel fb = new FindTModel();
142                 fb.setMaxRows(1);
143                 fb.setName(new Name(UDDIConstants.WILDCARD, null));
144                 fb.setFindQualifiers(new FindQualifiers());
145                 fb.getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
146                 TModelList findTModel = inquiry.findTModel(fb);
147                 Assume.assumeTrue(findTModel != null);
148                 Assume.assumeTrue(findTModel.getTModelInfos() != null);
149                 Assume.assumeTrue(!findTModel.getTModelInfos().getTModelInfo().isEmpty());
150 
151                 String url = manager.getClientConfig().getHomeNode().getInquiry_REST_Url();
152 
153                 Assume.assumeNotNull(url);
154 
155                 HttpClient client = new DefaultHttpClient();
156 
157                 HttpGet httpGet = new HttpGet(url + "?tModelKey=" + findTModel.getTModelInfos().getTModelInfo().get(0).getTModelKey());
158                 logger.info("Fetching " + httpGet.getURI());
159                 HttpResponse response = client.execute(httpGet);
160 
161                 Assert.assertTrue(response.getStatusLine().getStatusCode() == 200);
162                 logger.info("Response content: " + response.getEntity().getContent());
163                 TModel unmarshal = (TModel) XmlUtils.unmarshal(response.getEntity().getContent(), TModel.class);
164                 client.getConnectionManager().shutdown();
165                 Assert.assertNotNull(unmarshal);
166                 Assert.assertEquals(unmarshal.getTModelKey(), findTModel.getTModelInfos().getTModelInfo().get(0).getTModelKey());
167 
168         }
169 
170         @Test
171         public void InquiryREST_GET_Service() throws Exception {
172                 Assume.assumeTrue(TckPublisher.isEnabled());
173                 Assume.assumeTrue(TckPublisher.isInquiryRestEnabled());
174                 //find the first service via inquriy soap
175                 FindService fb = new FindService();
176                 fb.setMaxRows(1);
177                 fb.getName().add(new Name(UDDIConstants.WILDCARD, null));
178                 fb.setFindQualifiers(new FindQualifiers());
179                 fb.getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
180                 ServiceList findService = inquiry.findService(fb);
181                 Assume.assumeTrue(findService != null);
182                 Assume.assumeTrue(findService.getServiceInfos() != null);
183                 Assume.assumeTrue(!findService.getServiceInfos().getServiceInfo().isEmpty());
184 
185                 String url = manager.getClientConfig().getHomeNode().getInquiry_REST_Url();
186 
187                 Assume.assumeNotNull(url);
188 
189                 //get the results via inquiry rest
190                 HttpClient client = new DefaultHttpClient();
191                 HttpGet httpGet = new HttpGet(url + "?serviceKey=" + findService.getServiceInfos().getServiceInfo().get(0).getServiceKey());
192                 logger.info("Fetching " + httpGet.getURI());
193                 HttpResponse response = client.execute(httpGet);
194 
195                 Assert.assertTrue(response.getStatusLine().getStatusCode() == 200);
196                 logger.info("Response content: " + response.getEntity().getContent());
197                 BusinessService unmarshal = (BusinessService) XmlUtils.unmarshal(response.getEntity().getContent(), BusinessService.class);
198                 client.getConnectionManager().shutdown();
199                 Assert.assertNotNull(unmarshal);
200                 Assert.assertEquals(unmarshal.getServiceKey(), findService.getServiceInfos().getServiceInfo().get(0).getServiceKey());
201 
202         }
203 
204         private BindingTemplate getFirstBindingTemplate() {
205                 try {
206                         int fetch = 10;
207                         int offset = 0;
208                         FindService fb = new FindService();
209                         fb.setMaxRows(fetch);
210                         fb.setListHead(offset);
211                         fb.getName().add(new Name(UDDIConstants.WILDCARD, null));
212                         fb.setFindQualifiers(new FindQualifiers());
213                         fb.getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
214                         ServiceList findService = inquiry.findService(fb);
215                         int returnedcount = findService.getServiceInfos().getServiceInfo().size();
216                         do {
217                                 for (int i = 0; i < findService.getServiceInfos().getServiceInfo().size(); i++) {
218                                         GetServiceDetail gsd = new GetServiceDetail();
219                                         gsd.getServiceKey().add(findService.getServiceInfos().getServiceInfo().get(i).getServiceKey());
220                                         ServiceDetail serviceDetail = inquiry.getServiceDetail(gsd);
221                                         if (serviceDetail.getBusinessService().get(0).getBindingTemplates() != null
222                                                 && !serviceDetail.getBusinessService().get(0).getBindingTemplates().getBindingTemplate().isEmpty()) {
223                                                 return serviceDetail.getBusinessService().get(0).getBindingTemplates().getBindingTemplate().get(0);
224                                         }
225 
226                                 }
227                                 offset = fetch;
228                                 fetch = fetch + 10;
229                                 fb = new FindService();
230                                 fb.setMaxRows(fetch);
231                                 fb.setListHead(offset);
232                                 fb.getName().add(new Name(UDDIConstants.WILDCARD, null));
233                                 fb.setFindQualifiers(new FindQualifiers());
234                                 fb.getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
235                                 findService = inquiry.findService(fb);
236                                 returnedcount = findService.getServiceInfos().getServiceInfo().size();
237 
238                         } while (returnedcount > 0);
239                 } catch (DispositionReportFaultMessage ex) {
240                         Logger.getLogger(UDDI_160_RESTIntergrationTest.class.getName()).log(Level.SEVERE, null, ex);
241                 } catch (RemoteException ex) {
242                         Logger.getLogger(UDDI_160_RESTIntergrationTest.class.getName()).log(Level.SEVERE, null, ex);
243                 }
244                 return null;
245         }
246 
247         @Test
248         public void InquiryREST_GET_Binding() throws Exception {
249                 Assume.assumeTrue(TckPublisher.isEnabled());
250                 Assume.assumeTrue(TckPublisher.isInquiryRestEnabled());
251 
252                 BindingTemplate bt = getFirstBindingTemplate();
253                 Assume.assumeTrue(bt != null);
254 
255                 String url = manager.getClientConfig().getHomeNode().getInquiry_REST_Url();
256 
257                 Assume.assumeNotNull(url);
258                 HttpClient client = new DefaultHttpClient();
259                 HttpGet httpGet = new HttpGet(url + "?bindingKey=" + bt.getBindingKey());
260                 logger.info("Fetching " + httpGet.getURI());
261                 HttpResponse response = client.execute(httpGet);
262 
263                 Assert.assertTrue(response.getStatusLine().getStatusCode() == 200);
264                 logger.info("Response content: " + response.getEntity().getContent());
265                 BindingTemplate unmarshal = (BindingTemplate) XmlUtils.unmarshal(response.getEntity().getContent(), BindingTemplate.class);
266                 client.getConnectionManager().shutdown();
267                 Assert.assertNotNull(unmarshal);
268                 Assert.assertEquals(unmarshal.getServiceKey(), bt.getServiceKey());
269                 Assert.assertEquals(unmarshal.getBindingKey(), bt.getBindingKey());
270 
271         }
272 }