This project has retired. For details please refer to its Attic page.
API_120_CombineCategoryBagsFindServiceTest xref
View Javadoc
1   package org.apache.juddi.api.impl;
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  
18  import java.util.List;
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.Registry;
24  import org.apache.juddi.v3.client.UDDIConstants;
25  import org.apache.juddi.v3.tck.TckBusiness;
26  import org.apache.juddi.v3.tck.TckPublisher;
27  import org.apache.juddi.v3.tck.TckSecurity;
28  import org.apache.juddi.v3.tck.TckTModel;
29  import org.junit.AfterClass;
30  import org.junit.Assert;
31  import org.junit.BeforeClass;
32  import org.junit.Test;
33  import org.uddi.api_v3.CategoryBag;
34  import org.uddi.api_v3.FindQualifiers;
35  import org.uddi.api_v3.FindService;
36  import org.uddi.api_v3.KeyedReference;
37  import org.uddi.api_v3.ServiceInfo;
38  import org.uddi.api_v3.ServiceList;
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, expects
45   * back one service with a serviceKey of uddi:uddi.tompublisher.com:servicetest02.
46   * 
47   * @author <a href="mailto:tcunning@apache.org">Tom Cunningham</a>
48   */
49  public class API_120_CombineCategoryBagsFindServiceTest 
50  {
51      final static String TOM_PUBLISHER_TMODEL_XML      = "uddi_data/tompublisher/tModelKeyGen.xml";
52      final static String TOM_PUBLISHER_TMODEL01_XML 	  = "uddi_data/tompublisher/tModel01.xml";
53      final static String TOM_PUBLISHER_TMODEL02_XML 	  = "uddi_data/tompublisher/tModel02.xml";
54  
55      final static String TOM_PUBLISHER_TMODEL_KEY      = "uddi:uddi.tompublisher.com:keygenerator";
56      final static String TOM_PUBLISHER_TMODEL01_KEY    = "uddi:uddi.tompublisher.com:tmodeltest01";
57      final static String TOM_PUBLISHER_TMODEL01_NAME   = "tmodeltest01";
58      final static String TOM_PUBLISHER_TMODEL02_KEY    = "uddi:uddi.tompublisher.com:tmodeltest02";
59  
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  
67      final static String SERVICE_KEY1 = "uddi:uddi.tompublisher.com:servicetest01";
68      final static String SERVICE_KEY5 = "uddi:uddi.tompublisher.com:servicetest05";
69      
70      final static String TOM_PUBLISHER_SERVICEINFO_NAME = "servicetest01";
71      
72      private static Log logger = LogFactory.getLog(API_120_CombineCategoryBagsFindServiceTest.class);
73  	
74      private static API_010_PublisherTest api010       = new API_010_PublisherTest();
75      private static TckTModel tckTModel                = new TckTModel(new UDDIPublicationImpl(), new UDDIInquiryImpl());
76      private static TckBusiness tckBusiness            = new TckBusiness(new UDDIPublicationImpl(), new UDDIInquiryImpl());
77      private static UDDIInquiryImpl inquiry            = new UDDIInquiryImpl();
78  	protected static String authInfoJoe               = null;
79  	
80  	@AfterClass
81  	public static void stopManager() throws ConfigurationException {
82  		Registry.stop();
83  	}
84  	
85  	@BeforeClass
86  	public static void startManager() throws ConfigurationException {
87  		Registry.start();
88  		
89  		logger.debug("Getting auth tokens..");
90  		try {
91  			api010.saveJoePublisher();
92  			api010.saveSamSyndicator();
93  			UDDISecurityPortType security      = new UDDISecurityImpl();
94          	 authInfoJoe = TckSecurity.getAuthToken(security, TckPublisher.getJoePublisherId(),  TckPublisher.getJoePassword());
95          	 Assert.assertNotNull(authInfoJoe);
96      
97  	     } catch (Exception e) {
98  	    	 logger.error(e.getMessage(), e);
99  				Assert.fail("Could not obtain authInfo token.");
100 	     } 
101 	}
102 	
103 	@Test
104 	public void findServiceByCategoryBag() {
105 		try {
106 			tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL_XML, TOM_PUBLISHER_TMODEL_KEY);
107 			tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL01_XML, TOM_PUBLISHER_TMODEL01_KEY);
108 			tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL02_XML, TOM_PUBLISHER_TMODEL02_KEY);
109 			
110 			tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS1_XML, TOM_BUSINESS1_KEY, 1);
111 			tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS2_XML, TOM_BUSINESS2_KEY, 1);
112 			tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS5_XML, TOM_BUSINESS5_KEY, 1);
113 			try {
114 				int size = 0;
115 				ServiceList sl = null;
116 
117 				FindService fs = new FindService();
118 				
119 				//by default keys are ADD, we should only find service 5
120                 KeyedReference keyRef1 = new KeyedReference();
121                 keyRef1.setTModelKey(TOM_PUBLISHER_TMODEL01_KEY);
122                 keyRef1.setKeyValue("value-z");
123                 
124                 KeyedReference keyRef2 = new KeyedReference();
125                 keyRef2.setTModelKey(TOM_PUBLISHER_TMODEL02_KEY);
126 				keyRef2.setKeyValue("value-x");
127 				
128 				CategoryBag cb = new CategoryBag();
129 				cb.getKeyedReference().add(keyRef1);
130 				cb.getKeyedReference().add(keyRef2);
131 				fs.setCategoryBag(cb);
132 				
133 				sl = inquiry.findService(fs);
134 				if (sl.getServiceInfos() == null) {
135                     Assert.fail("Should have found one entry on FindService with TModelBag, "
136                        + "found " + size);
137 				}
138 				size = sl.getServiceInfos().getServiceInfo().size();
139 				if (size != 1) {
140 					Assert.fail("Should have found one entry on FindService with TModelBag, "
141 							+ "found " + size);
142 				} else {
143 				    List<ServiceInfo> siList = sl.getServiceInfos().getServiceInfo();
144 					String serviceKey = siList.get(0).getServiceKey();
145 					if (!SERVICE_KEY5.equals(serviceKey)) {
146 					    Assert.fail("Should have found service key " + SERVICE_KEY5
147 					            + " but found [" + serviceKey + "]");
148 					}
149 				}
150 			} catch (Exception e) {
151 				e.printStackTrace();
152 				Assert.fail(e.getMessage());
153 			}
154 		} finally {
155             tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS1_XML, TOM_BUSINESS1_KEY, 1);
156             tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS2_XML, TOM_BUSINESS2_KEY, 1);
157             tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS5_XML, TOM_BUSINESS5_KEY, 1);
158 			
159 			tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL_XML, TOM_PUBLISHER_TMODEL_KEY);
160 			tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL01_XML, TOM_PUBLISHER_TMODEL01_KEY);
161 			tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL02_XML, TOM_PUBLISHER_TMODEL02_KEY);
162 		}
163 	}
164 	
165 	@Test
166 	public void findNoServiceByCategoryBag() {
167 		try {
168 			tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL_XML, TOM_PUBLISHER_TMODEL_KEY);
169 			tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL01_XML, TOM_PUBLISHER_TMODEL01_KEY);
170 			tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL02_XML, TOM_PUBLISHER_TMODEL02_KEY);
171 			
172 			tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS1_XML, TOM_BUSINESS1_KEY, 1);
173 			tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS2_XML, TOM_BUSINESS2_KEY, 1);
174 			tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS5_XML, TOM_BUSINESS5_KEY, 1);
175 			try {
176 				int size = 0;
177 				ServiceList sl = null;
178 
179 				FindService fs = new FindService();
180 				
181 				//by default keys are ADD, we should only find service 5
182                 KeyedReference keyRef1 = new KeyedReference();
183                 keyRef1.setTModelKey(TOM_PUBLISHER_TMODEL01_KEY);
184                 keyRef1.setKeyValue("value-y");
185                
186 				CategoryBag cb = new CategoryBag();
187 				cb.getKeyedReference().add(keyRef1);
188 				fs.setCategoryBag(cb);
189 				
190 				sl = inquiry.findService(fs);
191 				if (sl.getServiceInfos() != null) {
192                     Assert.fail("Should have found no entries on FindService, "
193                        + " found " + size);
194 				}
195 			} catch (Exception e) {
196 				e.printStackTrace();
197 				Assert.fail(e.getMessage());
198 			}
199 		} finally {
200             tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS1_XML, TOM_BUSINESS1_KEY, 1);
201             tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS2_XML, TOM_BUSINESS2_KEY, 1);
202             tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS5_XML, TOM_BUSINESS5_KEY, 1);
203 			
204 			tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL_XML, TOM_PUBLISHER_TMODEL_KEY);
205 			tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL01_XML, TOM_PUBLISHER_TMODEL01_KEY);
206 			tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL02_XML, TOM_PUBLISHER_TMODEL02_KEY);
207 		}
208 	}
209 	/*
210 	 * For a combinedCategoryBag, we find a service if either the categoryBag on the service
211 	 * matches, or one of the categoryBags on the bindings.
212 	 */
213 	@Test
214 	public void findServiceByCombinedCategoryBag() {
215 		try {
216 			tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL_XML, TOM_PUBLISHER_TMODEL_KEY);
217 			tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL01_XML, TOM_PUBLISHER_TMODEL01_KEY);
218 			tckTModel.saveTModel(authInfoJoe, TOM_PUBLISHER_TMODEL02_XML, TOM_PUBLISHER_TMODEL02_KEY);
219 			
220 			tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS1_XML, TOM_BUSINESS1_KEY, 1);
221 			tckBusiness.saveBusinesses(authInfoJoe, TOM_BUSINESS2_XML, TOM_BUSINESS2_KEY, 1);
222 			try {
223 				int size = 0;
224 				ServiceList sl = null;
225 
226 				FindService fs = new FindService();
227 				FindQualifiers fqs = new FindQualifiers();
228 				fqs.getFindQualifier().add(UDDIConstants.COMBINE_CATEGORY_BAGS);
229 				fs.setFindQualifiers(fqs);
230 
231                 KeyedReference keyRef1 = new KeyedReference();
232                 keyRef1.setTModelKey(TOM_PUBLISHER_TMODEL01_KEY);
233                 keyRef1.setKeyValue("value-y");
234 				
235 				CategoryBag cb = new CategoryBag();
236 				cb.getKeyedReference().add(keyRef1);
237 				fs.setCategoryBag(cb);
238 				
239 				sl = inquiry.findService(fs);
240 				if (sl.getServiceInfos() == null) {
241                     Assert.fail("Should have found one entry on FindService with TModelBag, "
242                        + "found " + size);
243 				}
244 				size = sl.getServiceInfos().getServiceInfo().size();
245 				if (size != 1) {
246 					Assert.fail("Should have found one entry on FindService with TModelBag, "
247 							+ "found " + size);
248 				} else {
249 				    List<ServiceInfo> siList = sl.getServiceInfos().getServiceInfo();
250 					String serviceKey = siList.get(0).getServiceKey();
251 					if (!SERVICE_KEY1.equals(serviceKey)) {
252 					    Assert.fail("Should have found service key " + SERVICE_KEY1
253 					            + " but found [" + serviceKey + "]");
254 					}
255 				}
256 			} catch (Exception e) {
257 				e.printStackTrace();
258 				Assert.fail(e.getMessage());
259 			}
260 		} finally {
261             tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS1_XML, TOM_BUSINESS1_KEY, 1);
262             tckBusiness.deleteBusinesses(authInfoJoe, TOM_BUSINESS2_XML, TOM_BUSINESS2_KEY, 1);
263 			
264 			tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL_XML, TOM_PUBLISHER_TMODEL_KEY);
265 			tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL01_XML, TOM_PUBLISHER_TMODEL01_KEY);
266 			tckTModel.deleteTModel(authInfoJoe, TOM_PUBLISHER_TMODEL02_XML, TOM_PUBLISHER_TMODEL02_KEY);
267 		}
268 	}
269 	
270 }