This project has retired. For details please refer to its Attic page.
UDDI_120_CombineCategoryBagsFindServiceIntegrationTest xref
View Javadoc
1   package org.apache.juddi.v3.tck;
2   
3   /*
4    * Copyright 2001-2009 The Apache Software Foundation.
5    * 
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  import java.util.List;
18  import javax.xml.ws.BindingProvider;
19  
20  import org.apache.commons.configuration.ConfigurationException;
21  import org.apache.commons.logging.Log;
22  import org.apache.commons.logging.LogFactory;
23  import org.apache.juddi.v3.client.UDDIConstants;
24  import org.apache.juddi.v3.client.config.UDDIClient;
25  import org.apache.juddi.v3.client.transport.Transport;
26  import org.junit.AfterClass;
27  import org.junit.Assert;
28  import org.junit.Assume;
29  import org.junit.BeforeClass;
30  import org.junit.Test;
31  import org.uddi.api_v3.CategoryBag;
32  import org.uddi.api_v3.FindQualifiers;
33  import org.uddi.api_v3.FindService;
34  import org.uddi.api_v3.KeyedReference;
35  import org.uddi.api_v3.ServiceInfo;
36  import org.uddi.api_v3.ServiceList;
37  import org.uddi.v3_service.UDDIInquiryPortType;
38  import org.uddi.v3_service.UDDIPublicationPortType;
39  import org.uddi.v3_service.UDDISecurityPortType;
40  
41  /**
42   * Test to verify JUDDI-456
43   *
44   * Test does a find_service with the combinedCategoryBags findQualifier set,
45   * expects back one service with a serviceKey of
46   * uddi:uddi.tompublisher.com:servicetest02.
47   *
48   * @author <a href="mailto:tcunning@apache.org">Tom Cunningham</a>
49   * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
50   */
51  public class UDDI_120_CombineCategoryBagsFindServiceIntegrationTest {
52  
53          final static String TOM_PUBLISHER_TMODEL_XML = "uddi_data/tompublisher/tModelKeyGen.xml";
54          final static String TOM_PUBLISHER_TMODEL01_XML = "uddi_data/tompublisher/tModel01.xml";
55          final static String TOM_PUBLISHER_TMODEL02_XML = "uddi_data/tompublisher/tModel02.xml";
56          final static String TOM_PUBLISHER_TMODEL_KEY = "uddi:uddi.tompublisher.com:keygenerator";
57          final static String TOM_PUBLISHER_TMODEL01_KEY = "uddi:uddi.tompublisher.com:tmodeltest01";
58          final static String TOM_PUBLISHER_TMODEL01_NAME = "tmodeltest01";
59          final static String TOM_PUBLISHER_TMODEL02_KEY = "uddi:uddi.tompublisher.com:tmodeltest02";
60          final static String TOM_BUSINESS1_XML = "uddi_data/tompublisher/juddi456-business1.xml";
61          final static String TOM_BUSINESS2_XML = "uddi_data/tompublisher/juddi456-business2.xml";
62          final static String TOM_BUSINESS5_XML = "uddi_data/tompublisher/juddi456-business5.xml";
63          final static String TOM_BUSINESS1_KEY = "uddi:uddi.tompublisher.com:businesstest01";
64          final static String TOM_BUSINESS2_KEY = "uddi:uddi.tompublisher.com:businesstest02";
65          final static String TOM_BUSINESS5_KEY = "uddi:uddi.tompublisher.com:businesstest05";
66          final static String SERVICE_KEY1 = "uddi:uddi.tompublisher.com:servicetest01";
67          final static String SERVICE_KEY5 = "uddi:uddi.tompublisher.com:servicetest05";
68          final static String TOM_PUBLISHER_SERVICEINFO_NAME = "servicetest01";
69          private static Log logger = LogFactory.getLog(UDDI_120_CombineCategoryBagsFindServiceIntegrationTest.class);
70          protected static TckTModel tckTModel = null;
71          protected static TckBusiness tckBusiness = null;
72          protected static String authInfoJoe = null;
73          private static UDDIInquiryPortType inquiry = null;
74          private static UDDIClient manager;
75  
76          @AfterClass
77          public static void stopManager() throws ConfigurationException {
78               if (!TckPublisher.isEnabled()) return;
79                  tckTModel.deleteCreatedTModels(authInfoJoe);
80                  manager.stop();
81          }
82  
83          @BeforeClass
84          public static void startManager() throws ConfigurationException {
85               if (!TckPublisher.isEnabled()) return;
86                  manager = new UDDIClient();
87                  manager.start();
88  
89                  logger.debug("Getting auth tokens..");
90                  try {
91                          Transport transport = manager.getTransport("uddiv3");
92                          UDDISecurityPortType security = transport.getUDDISecurityService();
93                          authInfoJoe = TckSecurity.getAuthToken(security, TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
94                          //Assert.assertNotNull(authInfoJoe);
95                          UDDIPublicationPortType publication = transport.getUDDIPublishService();
96                          inquiry = transport.getUDDIInquiryService();
97  
98                          if (!TckPublisher.isUDDIAuthMode()){
99                                  TckSecurity.setCredentials((BindingProvider) publication, TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
100                                 TckSecurity.setCredentials((BindingProvider) inquiry, TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
101                         }
102                         tckTModel = new TckTModel(publication, inquiry);
103                         tckBusiness = new TckBusiness(publication, inquiry);
104                 } catch (Exception e) {
105                         logger.error(e.getMessage(), e);
106                         Assert.fail("Could not obtain authInfo token.");
107                 }
108                 JUDDI_300_MultiNodeIntegrationTest.testSetupReplicationConfig();
109         }
110 
111         @Test
112         public void findServiceByCategoryBag() {
113              Assume.assumeTrue(TckPublisher.isEnabled());
114                 try {
115                         tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL_XML, TOM_PUBLISHER_TMODEL_KEY);
116                         tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL01_XML, TOM_PUBLISHER_TMODEL01_KEY);
117                         tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL02_XML, TOM_PUBLISHER_TMODEL02_KEY);
118 
119                         tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS1_XML, TOM_BUSINESS1_KEY, 1);
120                         tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS2_XML, TOM_BUSINESS2_KEY, 1);
121                         tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS5_XML, TOM_BUSINESS5_KEY, 1);
122                         try {
123                                 int size = 0;
124                                 ServiceList sl = null;
125 
126                                 FindService fs = new FindService();
127 
128                                 //by default keys are ADD, we should only find service 5
129                                 KeyedReference keyRef1 = new KeyedReference();
130                                 keyRef1.setTModelKey(TOM_PUBLISHER_TMODEL01_KEY);
131                                 keyRef1.setKeyValue("value-z");
132 
133                                 KeyedReference keyRef2 = new KeyedReference();
134                                 keyRef2.setTModelKey(TOM_PUBLISHER_TMODEL02_KEY);
135                                 keyRef2.setKeyValue("value-x");
136 
137                                 CategoryBag cb = new CategoryBag();
138                                 cb.getKeyedReference().add(keyRef1);
139                                 cb.getKeyedReference().add(keyRef2);
140                                 fs.setCategoryBag(cb);
141 
142                                 sl = inquiry.findService(fs);
143                                 if (sl.getServiceInfos() == null) {
144                                         Assert.fail("Should have found one entry on FindService with TModelBag, "
145                                                 + "found " + size);
146                                 }
147                                 size = sl.getServiceInfos().getServiceInfo().size();
148                                 if (size != 1) {
149                                         Assert.fail("Should have found one entry on FindService with TModelBag, "
150                                                 + "found " + size);
151                                 } else {
152                                         List<ServiceInfo> siList = sl.getServiceInfos().getServiceInfo();
153                                         String serviceKey = siList.get(0).getServiceKey();
154                                         if (!SERVICE_KEY5.equals(serviceKey)) {
155                                                 Assert.fail("Should have found service key " + SERVICE_KEY5
156                                                         + " but found [" + serviceKey + "]");
157                                         }
158                                 }
159                         } catch (Exception e) {
160                                 e.printStackTrace();
161                                 Assert.fail(e.getMessage());
162                         }
163                 } finally {
164                         tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS1_XML, TOM_BUSINESS1_KEY, 1);
165                         tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS2_XML, TOM_BUSINESS2_KEY, 1);
166                         tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS5_XML, TOM_BUSINESS5_KEY, 1);
167 
168                         tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL_XML, TOM_PUBLISHER_TMODEL_KEY);
169                         tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL01_XML, TOM_PUBLISHER_TMODEL01_KEY);
170                         tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL02_XML, TOM_PUBLISHER_TMODEL02_KEY);
171                 }
172         }
173 
174         @Test
175         public void findNoServiceByCategoryBag() {
176              Assume.assumeTrue(TckPublisher.isEnabled());
177                 try {
178                         tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL_XML, TOM_PUBLISHER_TMODEL_KEY);
179                         tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL01_XML, TOM_PUBLISHER_TMODEL01_KEY);
180                         tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL02_XML, TOM_PUBLISHER_TMODEL02_KEY);
181 
182                         tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS1_XML, TOM_BUSINESS1_KEY, 1);
183                         tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS2_XML, TOM_BUSINESS2_KEY, 1);
184                         tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS5_XML, TOM_BUSINESS5_KEY, 1);
185                         try {
186                                 int size = 0;
187                                 ServiceList sl = null;
188 
189                                 FindService fs = new FindService();
190 
191                                 //by default keys are ADD, we should only find service 5
192                                 KeyedReference keyRef1 = new KeyedReference();
193                                 keyRef1.setTModelKey(TOM_PUBLISHER_TMODEL01_KEY);
194                                 keyRef1.setKeyValue("value-y");
195 
196                                 CategoryBag cb = new CategoryBag();
197                                 cb.getKeyedReference().add(keyRef1);
198                                 fs.setCategoryBag(cb);
199 
200                                 sl = inquiry.findService(fs);
201                                 if (sl.getServiceInfos() != null) {
202                                         Assert.fail("Should have found no entries on FindService, "
203                                                 + " found " + size);
204                                 }
205                         } catch (Exception e) {
206                                 e.printStackTrace();
207                                 Assert.fail(e.getMessage());
208                         }
209                 } finally {
210                         tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS1_XML, TOM_BUSINESS1_KEY, 1);
211                         tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS2_XML, TOM_BUSINESS2_KEY, 1);
212                         tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS5_XML, TOM_BUSINESS5_KEY, 1);
213 
214                         tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL_XML, TOM_PUBLISHER_TMODEL_KEY);
215                         tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL01_XML, TOM_PUBLISHER_TMODEL01_KEY);
216                         tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL02_XML, TOM_PUBLISHER_TMODEL02_KEY);
217                 }
218         }
219         /*
220          * For a combinedCategoryBag, we find a service if either the categoryBag on the service
221          * matches, or one of the categoryBags on the bindings.
222          */
223 
224         @Test
225         public void findServiceByCombinedCategoryBag() {
226              Assume.assumeTrue(TckPublisher.isEnabled());
227                 try {
228                         tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL_XML, TOM_PUBLISHER_TMODEL_KEY);
229                         tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL01_XML, TOM_PUBLISHER_TMODEL01_KEY);
230                         tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL02_XML, TOM_PUBLISHER_TMODEL02_KEY);
231 
232                         tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS1_XML, TOM_BUSINESS1_KEY, 1);
233                         tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS2_XML, TOM_BUSINESS2_KEY, 1);
234                         try {
235                                 int size = 0;
236                                 ServiceList sl = null;
237 
238                                 FindService fs = new FindService();
239                                 FindQualifiers fqs = new FindQualifiers();
240                                 fqs.getFindQualifier().add(UDDIConstants.COMBINE_CATEGORY_BAGS);
241                                 fs.setFindQualifiers(fqs);
242 
243                                 KeyedReference keyRef1 = new KeyedReference();
244                                 keyRef1.setTModelKey(TOM_PUBLISHER_TMODEL01_KEY);
245                                 keyRef1.setKeyValue("value-y");
246 
247                                 CategoryBag cb = new CategoryBag();
248                                 cb.getKeyedReference().add(keyRef1);
249                                 fs.setCategoryBag(cb);
250 
251                                 sl = inquiry.findService(fs);
252                                 if (sl.getServiceInfos() == null) {
253                                         Assert.fail("Should have found one entry on FindService with TModelBag, "
254                                                 + "found " + size);
255                                 }
256                                 size = sl.getServiceInfos().getServiceInfo().size();
257                                 if (size != 1) {
258                                         Assert.fail("Should have found one entry on FindService with TModelBag, "
259                                                 + "found " + size);
260                                 } else {
261                                         List<ServiceInfo> siList = sl.getServiceInfos().getServiceInfo();
262                                         String serviceKey = siList.get(0).getServiceKey();
263                                         if (!SERVICE_KEY1.equals(serviceKey)) {
264                                                 Assert.fail("Should have found service key " + SERVICE_KEY1
265                                                         + " but found [" + serviceKey + "]");
266                                         }
267                                 }
268                         } catch (Exception e) {
269                                 e.printStackTrace();
270                                 Assert.fail(e.getMessage());
271                         }
272                 } finally {
273                         tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS1_XML, TOM_BUSINESS1_KEY, 1);
274                         tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS2_XML, TOM_BUSINESS2_KEY, 1);
275 
276                         tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL_XML, TOM_PUBLISHER_TMODEL_KEY);
277                         tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL01_XML, TOM_PUBLISHER_TMODEL01_KEY);
278                         tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL02_XML, TOM_PUBLISHER_TMODEL02_KEY);
279                 }
280         }
281 }