This project has retired. For details please refer to its Attic page.
UDDI_170_ValueSetValidationIntegrationTest 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.net.InetAddress;
19  import java.rmi.RemoteException;
20  import java.util.Random;
21  import java.util.UUID;
22  import javax.jws.WebMethod;
23  import javax.jws.WebParam;
24  import javax.jws.WebResult;
25  import javax.jws.WebService;
26  import javax.jws.soap.SOAPBinding;
27  import javax.xml.ws.BindingProvider;
28  import javax.xml.ws.Endpoint;
29  import org.apache.commons.configuration.ConfigurationException;
30  import org.apache.commons.logging.Log;
31  import org.apache.commons.logging.LogFactory;
32  import org.apache.juddi.v3.client.UDDIConstants;
33  import org.apache.juddi.v3.client.config.UDDIClient;
34  import org.apache.juddi.v3.client.transport.Transport;
35  import org.junit.AfterClass;
36  import org.junit.Assert;
37  import org.junit.Assume;
38  import org.junit.BeforeClass;
39  import org.junit.Ignore;
40  import org.junit.Test;
41  import org.uddi.api_v3.AccessPoint;
42  import org.uddi.api_v3.BindingTemplate;
43  import org.uddi.api_v3.BindingTemplates;
44  import org.uddi.api_v3.BusinessDetail;
45  import org.uddi.api_v3.BusinessEntity;
46  import org.uddi.api_v3.BusinessService;
47  import org.uddi.api_v3.BusinessServices;
48  import org.uddi.api_v3.CategoryBag;
49  import org.uddi.api_v3.DeleteBusiness;
50  import org.uddi.api_v3.DeleteTModel;
51  import org.uddi.api_v3.Description;
52  import org.uddi.api_v3.DispositionReport;
53  import org.uddi.api_v3.ErrInfo;
54  import org.uddi.api_v3.IdentifierBag;
55  import org.uddi.api_v3.KeyType;
56  import org.uddi.api_v3.KeyedReference;
57  import org.uddi.api_v3.Name;
58  import org.uddi.api_v3.Result;
59  import org.uddi.api_v3.SaveBinding;
60  import org.uddi.api_v3.SaveBusiness;
61  import org.uddi.api_v3.SaveTModel;
62  import org.uddi.api_v3.TModel;
63  import org.uddi.api_v3.TModelDetail;
64  import org.uddi.v3_service.DispositionReportFaultMessage;
65  import org.uddi.v3_service.UDDIInquiryPortType;
66  import org.uddi.v3_service.UDDIPublicationPortType;
67  import org.uddi.v3_service.UDDISecurityPortType;
68  import org.uddi.v3_service.UDDIValueSetValidationPortType;
69  import org.uddi.vs_v3.ValidateValues;
70  
71  /**
72   *
73   * @author Alex O'Ree
74   */
75  @WebService(name = "UDDI_ValueSetValidation_PortType", targetNamespace = "urn:uddi-org:v3_service")
76  public class UDDI_170_ValueSetValidationIntegrationTest implements UDDIValueSetValidationPortType {
77  
78          private static UDDIInquiryPortType inquiry = null;
79          private static UDDIPublicationPortType publicationJoe = null;
80          private static UDDIPublicationPortType publicationMary = null;
81          static UDDISecurityPortType security = null;
82          //static UDDIV vsvc = null;
83          private static Log logger = LogFactory.getLog(UDDI_170_ValueSetValidationIntegrationTest.class);
84          private static String authInfoJoe = null;
85          private static String authInfoMary = null;
86          private static UDDIClient manager;
87          private static boolean VALID = true;
88          static TckTModel maryTmodel=null;
89  
90          @BeforeClass
91          public static void startRegistry() throws ConfigurationException {
92                  if (!TckPublisher.isEnabled()) {
93                          return;
94                  }
95                  logger.info("__________________________________________________________");
96                  logger.info("UDDI_170_ValueSetValidationIntegrationTest");
97                  logger.info("__________________________________________________________");
98                  logger.info("__________________________________________________________");
99                  logger.info("__________________________________________________________");
100                 manager = new UDDIClient();
101                 manager.start();
102 
103                 try {
104                         Transport transport = manager.getTransport("uddiv3");
105                         inquiry = transport.getUDDIInquiryService();
106                         publicationJoe = transport.getUDDIPublishService();
107                         security = transport.getUDDISecurityService();
108                         authInfoJoe = TckSecurity.getAuthToken(security, TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
109                         if (!TckPublisher.isUDDIAuthMode()) {
110                                 TckSecurity.setCredentials((BindingProvider) inquiry, TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
111                                 TckSecurity.setCredentials((BindingProvider) publicationJoe, TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
112                         }
113 
114                         transport = manager.getTransport("uddiv3");
115                         inquiry = transport.getUDDIInquiryService();
116                         publicationMary = transport.getUDDIPublishService();
117                         security = transport.getUDDISecurityService();
118                         authInfoMary = TckSecurity.getAuthToken(security, TckPublisher.getMaryPublisherId(), TckPublisher.getMaryPassword());
119                         if (!TckPublisher.isUDDIAuthMode()) {
120                                 TckSecurity.setCredentials((BindingProvider) inquiry, TckPublisher.getMaryPublisherId(), TckPublisher.getMaryPassword());
121                                 TckSecurity.setCredentials((BindingProvider) publicationMary, TckPublisher.getMaryPublisherId(), TckPublisher.getMaryPassword());
122                         }
123 
124                         maryTmodel = new TckTModel(publicationMary, inquiry);
125                         maryTmodel.saveMaryPublisherTmodel(authInfoMary);
126                 } catch (Exception e) {
127                         logger.error(e.getMessage(), e);
128                         Assert.fail("Could not obtain authInfo token.");
129                 }
130                 JUDDI_300_MultiNodeIntegrationTest.testSetupReplicationConfig();
131         }
132 
133         @AfterClass
134         public static void stopRegistry() throws ConfigurationException {
135                 if (!TckPublisher.isEnabled()) {
136                         return;
137                 }
138                 maryTmodel.deleteMaryPublisherTmodel(authInfoMary);
139                 manager.stop();
140         }
141         final static String VSV_KEY = "uddi:juddi.apache.org:node1";
142         //final static String VSV_BT_KEY = "uddi:juddi.apache.org:servicebindings-valueset-cp";
143         final static String TMODEL = "validated.checked.tmodel";
144 
145         /**
146          * this will confirm that the uddi registry will call out to me during a
147          * vsv validation
148          *
149          * @throws Exception
150          */
151         @Test
152         public void testVSV() throws Exception {
153                 Assume.assumeTrue(TckPublisher.isEnabled());
154                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
155                 logger.info("testVSV");
156                 BusinessEntity SaveBusiness = null;
157                 BusinessEntity SaveVSVCallbackService = null;
158                 try {
159                         reset();
160                         VALID = true;
161                         TckTModel joe = new TckTModel(publicationJoe, inquiry);
162                         joe.saveJoePublisherTmodel(authInfoJoe);
163                         SaveVSVCallbackService = saveVSVCallbackService(authInfoJoe, publicationJoe);
164                         saveCheckedTModel(TckTModel.JOE_PUBLISHER_KEY_PREFIX + TMODEL, SaveVSVCallbackService.getBusinessServices().getBusinessService().get(0).getBindingTemplates().getBindingTemplate().get(0).getBindingKey());
165                         logger.info("Saving a business using those values");
166                         SaveBusiness = saveBusiness(authInfoJoe, true, TckTModel.JOE_PUBLISHER_KEY_PREFIX + TMODEL);
167 
168                         deleteTModel(authInfoJoe, TckTModel.JOE_PUBLISHER_KEY_PREFIX + TMODEL, publicationJoe);
169 
170                 } catch (Exception ex) {
171                         logger.error(ex);
172                         Assert.fail("unexpected failure " + ex.getMessage());
173                 } finally {
174                         if (SaveBusiness != null) {
175                                 deleteBusiness(authInfoJoe, SaveBusiness.getBusinessKey(), publicationJoe);
176                         }
177                         if (SaveVSVCallbackService != null) {
178                                 deleteBusiness(authInfoJoe, SaveVSVCallbackService.getBusinessKey(), publicationJoe);
179                         }
180 
181                 }
182                 Assert.assertTrue(messagesReceived == 1);
183         }
184 
185         @Test
186         public void testVSVInvalid() throws Exception {
187                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
188                 Assume.assumeTrue(TckPublisher.isEnabled());
189                 logger.info("testVSVInvalid");
190                 BusinessEntity SaveBusiness = null;
191                 BusinessEntity SaveVSVCallbackService = null;
192                 try {
193                         reset();
194                         VALID = false;
195                         SaveVSVCallbackService = saveVSVCallbackService(authInfoJoe, publicationJoe);
196                         saveCheckedTModel(TckTModel.JOE_PUBLISHER_KEY_PREFIX + TMODEL, SaveVSVCallbackService.getBusinessServices().getBusinessService().get(0).getBindingTemplates().getBindingTemplate().get(0).getBindingKey());
197                         logger.info("Saving a business using those values");
198                         SaveBusiness = saveBusiness(authInfoJoe, false, TckTModel.JOE_PUBLISHER_KEY_PREFIX + TMODEL);
199                         Assert.assertTrue(messagesReceived == 1);
200                         Assert.fail("unexpected success");
201                 } catch (Exception ex) {
202                         logger.info("Expected failure " + ex.getMessage());
203                 } finally {
204                         if (SaveBusiness != null) {
205                                 deleteBusiness(authInfoJoe, SaveBusiness.getBusinessKey(), publicationJoe);
206                         }
207                         if (SaveVSVCallbackService != null) {
208                                 deleteBusiness(authInfoJoe, SaveVSVCallbackService.getBusinessKey(), publicationJoe);
209                         }
210                         deleteTModel(authInfoJoe, TckTModel.JOE_PUBLISHER_KEY_PREFIX + TMODEL, publicationJoe);
211 
212                 }
213         }
214 
215         private BusinessEntity saveBusiness(String authInfoJoe, boolean isValid, String key) throws Exception {
216                 SaveBusiness sb = new SaveBusiness();
217                 sb.setAuthInfo(authInfoJoe);
218                 BusinessEntity be = new BusinessEntity();
219                 be.getName().add(new Name("VSV", null));
220                 be.setCategoryBag(new CategoryBag());
221                 if (isValid) {
222                         be.getCategoryBag().getKeyedReference().add(new KeyedReference(key, "name", "abcdefg"));
223                 } else {
224                         be.getCategoryBag().getKeyedReference().add(new KeyedReference(key, "name", "qwerty"));
225                 }
226                 sb.getBusinessEntity().add(be);
227                 BusinessDetail saveBusiness = publicationJoe.saveBusiness(sb);
228                 return saveBusiness.getBusinessEntity().get(0);
229         }
230 
231         private void saveCheckedTModel(String key, String binding) throws Exception {
232                 TModel tm = new TModel();
233                 tm.setTModelKey(key);
234                 tm.setCategoryBag(new CategoryBag());
235                 tm.setName(new Name("My Custom validated key", "en"));
236                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
237                 tm.getCategoryBag().getKeyedReference().add(
238                      new KeyedReference(UDDIConstants.IS_VALIDATED_BY, UDDIConstants.IS_VALIDATED_BY_KEY_NAME, binding));
239                 SaveTModel stm = new SaveTModel();
240                 stm.setAuthInfo(authInfoJoe);
241                 stm.getTModel().add(tm);
242                 publicationJoe.saveTModel(stm);
243         }
244 
245         @Override
246         @WebMethod(operationName = "validate_values", action = "validate_values")
247         @WebResult(name = "dispositionReport", targetNamespace = "urn:uddi-org:api_v3", partName = "body")
248         @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
249         public DispositionReport validateValues(
250              @WebParam(name = "validate_values", targetNamespace = "urn:uddi-org:vs_v3", partName = "body") ValidateValues body)
251              throws DispositionReportFaultMessage, RemoteException {
252                 messagesReceived++;
253                 if (VALID) {
254                         DispositionReport dispositionReport = new DispositionReport();
255                         dispositionReport.getResult().add(new Result());
256                         return dispositionReport;
257                 }
258                 DispositionReport dispositionReport = new DispositionReport();
259                 Result r = new Result();
260                 r.setKeyType(KeyType.T_MODEL_KEY);
261                 r.setErrno(20200);
262                 r.setErrInfo(new ErrInfo());
263                 r.getErrInfo().setErrCode("E_invalidValue");
264                 r.getErrInfo().setValue("E_invalidValue");
265 
266                 dispositionReport.getResult().add(r);
267                 throw new DispositionReportFaultMessage("error", dispositionReport);
268         }
269 
270         private BusinessEntity saveVSVCallbackService(String auth, UDDIPublicationPortType port) throws Exception {
271                 SaveBusiness sb = new SaveBusiness();
272                 sb.setAuthInfo(auth);
273                 BusinessEntity be = new BusinessEntity();
274                 be.getName().add(new Name("VSV business", null));
275                 be.setBusinessServices(new BusinessServices());
276                 BusinessService bs = new BusinessService();
277                 bs.getName().add(new Name("VSV callout", null));
278                 bs.setBindingTemplates(new BindingTemplates());
279                 BindingTemplate bt = new BindingTemplate();
280                 bt.setAccessPoint(new AccessPoint(url, "endPoint"));
281                 bs.getBindingTemplates().getBindingTemplate().add(bt);
282                 be.getBusinessServices().getBusinessService().add(bs);
283                 sb.getBusinessEntity().add(be);
284 
285                 return port.saveBusiness(sb).getBusinessEntity().get(0);
286         }
287 
288         private void deleteTModel(String auth, String key, UDDIPublicationPortType port) throws Exception {
289                 DeleteTModel db = new DeleteTModel();
290                 db.setAuthInfo(auth);
291                 db.getTModelKey().add(key);
292                 port.deleteTModel(db);
293         }
294 
295         private void deleteBusiness(String auth, String key, UDDIPublicationPortType port) throws Exception {
296                 DeleteBusiness db = new DeleteBusiness();
297                 db.setAuthInfo(auth);
298                 db.getBusinessKey().add(key);
299                 port.deleteBusiness(db);
300         }
301         Endpoint ep = null;
302         String url = null;
303         int messagesReceived = 0;
304 
305         private void reset() throws Exception {
306                 messagesReceived = 0;
307                 if (ep == null || !ep.isPublished()) {
308                         int httpPort = 9600 + new Random().nextInt(99);
309                         String hostname = TckPublisher.getProperties().getProperty("bindaddress");
310                         if (hostname == null) {
311                                 hostname = InetAddress.getLocalHost().getHostName();
312                         }
313                         url = "http://" + hostname + ":" + httpPort + "/" + UUID.randomUUID().toString();
314                         logger.info("Firing up embedded endpoint at " + url);
315                         do {
316                                 try {
317 
318                                         ep = Endpoint.publish(url, this);
319                                         httpPort = 9600 + new Random().nextInt(99);
320                                 } catch (Exception ex) {
321                                         logger.warn(ex.getMessage());
322                                 }
323                         } while (ep != null && !ep.isPublished());
324 
325                 }
326 
327         }
328 
329         /**
330          * value set caching service TODO
331          */
332         //@Test
333         public void testVSCUnknownItem() {
334                 /*
335                  *   
336                  * E_invalidKeyPassed: Signifies that the tModelKey passed did not match with 
337                  * the uddiKey of any known tModels.  The details on the invalid key SHOULD be 
338                  * included in the dispositionReport element.
339                  * 
340                  * E_noValuesAvailable: Signifies that no values could be returned.
341                  */
342                 //Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
343         }
344         //TODO ·         E_invalidValue: Signifies that the chunkToken value supplied is either invalid or has expired.
345         //TODO maybe? ·         E_unsupported: Signifies that the Web service does not support this API.
346         //this may be untestable unless the endpoint exists but isn't implemented
347 
348         public void derviedFromValid() throws Exception {
349 
350                 Assume.assumeTrue(TckPublisher.isEnabled());
351                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
352                 logger.info("DerviedFromValid");
353                 TModel tm = new TModel();
354                 //tm.setTModelKey();
355                 tm.setCategoryBag(new CategoryBag());
356                 tm.setName(new Name("My Custom validated key", "en"));
357                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
358                 tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.IS_DERIVED_FROM, "", "uddi:uddi.org:categorization:nodes"));
359                 SaveTModel stm = new SaveTModel();
360                 stm.setAuthInfo(authInfoJoe);
361                 stm.getTModel().add(tm);
362                 TModelDetail saveTModel = publicationJoe.saveTModel(stm);
363                 deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
364         }
365 
366         @Test
367         public void derviedFromInValid() throws Exception {
368                 Assume.assumeTrue(TckPublisher.isEnabled());
369                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
370                   logger.info("DerviedFromInValid");
371                 try {
372                         TModel tm = new TModel();
373                         //tm.setTModelKey();
374                         tm.setCategoryBag(new CategoryBag());
375                         tm.setName(new Name("My Custom validated key", "en"));
376                         tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
377                         tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.IS_DERIVED_FROM, "", "uddi:juddi.apache.org:" + UUID.randomUUID().toString()));
378                         SaveTModel stm = new SaveTModel();
379                         stm.setAuthInfo(authInfoJoe);
380                         stm.getTModel().add(tm);
381                         TModelDetail saveTModel = publicationJoe.saveTModel(stm);
382                         deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
383                         Assert.fail("unexpected success");
384                 } catch (Exception ex) {
385                         logger.info("Expected failure " + ex.getMessage());
386                         logger.debug("Expected failure " + ex.getMessage(), ex);
387                 } finally {
388 
389                 }
390         }
391 
392         @Test
393         public void entitKeyValuesValid() throws Exception {
394                 Assume.assumeTrue(TckPublisher.isEnabled());
395                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
396                 logger.info("EntitKeyValuesValid");
397                 TModel tm = new TModel();
398                 //tm.setTModelKey();
399                 tm.setCategoryBag(new CategoryBag());
400                 tm.setName(new Name("My Custom validated key", "en"));
401                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
402                 tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.ENTITY_KEY_VALUES, "", "tModelKey"));
403                 SaveTModel stm = new SaveTModel();
404                 stm.setAuthInfo(authInfoJoe);
405                 stm.getTModel().add(tm);
406                 TModelDetail saveTModel = publicationJoe.saveTModel(stm);
407                 deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
408 
409         }
410 
411         @Test
412         public void entitKeyValuesInValid() throws Exception {
413                 Assume.assumeTrue(TckPublisher.isEnabled());
414                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
415                 logger.info("EntitKeyValuesInValid");
416                 try {
417                         TModel tm = new TModel();
418                         //tm.setTModelKey();
419                         tm.setCategoryBag(new CategoryBag());
420                         tm.setName(new Name("My Custom validated key", "en"));
421                         tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
422                         tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.ENTITY_KEY_VALUES, "", "asdasdasd"));
423                         SaveTModel stm = new SaveTModel();
424                         stm.setAuthInfo(authInfoJoe);
425                         stm.getTModel().add(tm);
426                         TModelDetail saveTModel = publicationJoe.saveTModel(stm);
427                         deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
428                         Assert.fail("unexpected success");
429                 } catch (Exception ex) {
430                         logger.info("Expected failure " + ex.getMessage());
431                         logger.debug("Expected failure " + ex.getMessage(), ex);
432                 } finally {
433 
434                 }
435         }
436 
437         @Test
438         @Ignore
439         public void uddiNodeValid() throws Exception {
440                 //This test should be ignored, only one business per node is allowed to be the node
441                 Assume.assumeTrue(TckPublisher.isEnabled());
442                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
443                  logger.info("UDDINodeValid");
444                 BusinessEntity be = new BusinessEntity();
445                 be.getName().add(new Name("test", "en"));
446                 be.setCategoryBag(new CategoryBag());
447                 be.getCategoryBag().getKeyedReference().add(new KeyedReference("uddi:uddi.org:categorization:nodes", "", "node"));
448                 SaveBusiness sb = new SaveBusiness();
449                 sb.setAuthInfo(authInfoJoe);
450                 sb.getBusinessEntity().add(be);
451                 BusinessDetail saveBusiness = publicationJoe.saveBusiness(sb);
452                 deleteBusiness(authInfoJoe, saveBusiness.getBusinessEntity().get(0).getBusinessKey(), publicationJoe);
453         }
454 
455         @Test
456         public void uddiNodeInValid1() throws Exception {
457                 Assume.assumeTrue(TckPublisher.isEnabled());
458                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
459                 logger.info("UDDINodeInValid1");
460                 try {
461                         BusinessEntity be = new BusinessEntity();
462                         be.getName().add(new Name("test", "en"));
463                         be.setCategoryBag(new CategoryBag());
464                         be.getCategoryBag().getKeyedReference().add(new KeyedReference("uddi:uddi.org:categorization:nodes", "", "asdasd"));
465                         SaveBusiness sb = new SaveBusiness();
466                         sb.setAuthInfo(authInfoJoe);
467                         sb.getBusinessEntity().add(be);
468                         BusinessDetail saveBusiness = publicationJoe.saveBusiness(sb);
469                         deleteBusiness(authInfoJoe, saveBusiness.getBusinessEntity().get(0).getBusinessKey(), publicationJoe);
470                         Assert.fail("unexpected success");
471                 } catch (Exception ex) {
472                         logger.info("Expected failure " + ex.getMessage());
473                         logger.debug("Expected failure " + ex.getMessage(), ex);
474                 } finally {
475 
476                 }
477         }
478 
479         @Test
480         public void uddiNodeInValid2() throws Exception {
481                 Assume.assumeTrue(TckPublisher.isEnabled());
482                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
483                 logger.info("UDDINodeInValid2");
484                 try {
485                         BusinessEntity be = new BusinessEntity();
486                         be.getName().add(new Name("test", "en"));
487                         be.setBusinessServices(new BusinessServices());
488                         BusinessService bs = new BusinessService();
489                         bs.setCategoryBag(new CategoryBag());
490                         bs.getCategoryBag().getKeyedReference().add(new KeyedReference("uddi:uddi.org:categorization:nodes", "", "asdasd"));
491                         be.getBusinessServices().getBusinessService().add(bs);
492                         be.setCategoryBag(new CategoryBag());
493 
494                         SaveBusiness sb = new SaveBusiness();
495                         sb.setAuthInfo(authInfoJoe);
496                         sb.getBusinessEntity().add(be);
497                         BusinessDetail saveBusiness = publicationJoe.saveBusiness(sb);
498                         deleteBusiness(authInfoJoe, saveBusiness.getBusinessEntity().get(0).getBusinessKey(), publicationJoe);
499                         Assert.fail("unexpected success");
500                 } catch (Exception ex) {
501                         logger.info("Expected failure " + ex.getMessage());
502                         logger.debug("Expected failure " + ex.getMessage(), ex);
503                 } finally {
504 
505                 }
506         }
507 
508         @Test
509         public void owningBusinessValid() throws Exception {
510                 Assume.assumeTrue(TckPublisher.isEnabled());
511                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
512                 logger.info("OwningBusinessValid");
513                 TModel tm = new TModel();
514                 //tm.setTModelKey();
515                 tm.setCategoryBag(new CategoryBag());
516                 tm.setName(new Name("My Custom validated key", "en"));
517                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
518                 tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.OWNING_BUSINESS, "", "uddi:juddi.apache.org:node1"));
519                 SaveTModel stm = new SaveTModel();
520                 stm.setAuthInfo(authInfoJoe);
521                 stm.getTModel().add(tm);
522                 TModelDetail saveTModel = publicationJoe.saveTModel(stm);
523                 deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
524         }
525 
526         @Test
527         public void owningBusinessInValid() throws Exception {
528                 logger.info("OwningBusinessInValid");
529                 try {
530                         Assume.assumeTrue(TckPublisher.isEnabled());
531                         Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
532                         BusinessEntity be = new BusinessEntity();
533                         be.getName().add(new Name("test", "en"));
534                         be.setCategoryBag(new CategoryBag());
535                         be.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.OWNING_BUSINESS, "", "uddi:juddi.apache.org:" + UUID.randomUUID().toString()));
536                         SaveBusiness sb = new SaveBusiness();
537                         sb.setAuthInfo(authInfoJoe);
538                         sb.getBusinessEntity().add(be);
539                         BusinessDetail saveBusiness = publicationJoe.saveBusiness(sb);
540                         deleteBusiness(authInfoJoe, saveBusiness.getBusinessEntity().get(0).getBusinessKey(), publicationJoe);
541                         Assert.fail("unexpected success");
542                 } catch (Exception ex) {
543                         logger.info("Expected failure " + ex.getMessage());
544                         logger.debug("Expected failure " + ex.getMessage(), ex);
545                 } finally {
546 
547                 }
548         }
549 
550         @Test
551         public void owningBusinessInValid2() throws Exception {
552                 Assume.assumeTrue(TckPublisher.isEnabled());
553                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
554                 logger.info("OwningBusinessInValid2");
555                 try {
556                         TModel tm = new TModel();
557                         //tm.setTModelKey();
558                         tm.setCategoryBag(new CategoryBag());
559                         tm.setName(new Name("My Custom validated key", "en"));
560                         tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
561                         tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.OWNING_BUSINESS, "", "uddi:juddi.apache.org:" + UUID.randomUUID().toString()));
562                         SaveTModel stm = new SaveTModel();
563                         stm.setAuthInfo(authInfoJoe);
564                         stm.getTModel().add(tm);
565                         TModelDetail saveTModel = publicationJoe.saveTModel(stm);
566                         deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
567                         Assert.fail("unexpected success");
568                 } catch (Exception ex) {
569                         logger.info("Expected failure " + ex.getMessage());
570                         logger.debug("Expected failure " + ex.getMessage(), ex);
571                 } finally {
572 
573                 }
574         }
575 
576         @Test
577         public void typeTmodelValid() throws Exception {
578                 Assume.assumeTrue(TckPublisher.isEnabled());
579                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
580                 logger.info("TypeTmodelValid");
581                 TModel tm = new TModel();
582                 //tm.setTModelKey();
583                 tm.setCategoryBag(new CategoryBag());
584                 tm.setName(new Name("My Custom validated key", "en"));
585                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
586                 tm.getCategoryBag().getKeyedReference().add(new KeyedReference("uddi:uddi.org:categorization:types", "", "namespace"));
587                 SaveTModel stm = new SaveTModel();
588                 stm.setAuthInfo(authInfoJoe);
589                 stm.getTModel().add(tm);
590                 TModelDetail saveTModel = publicationJoe.saveTModel(stm);
591                 deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
592 
593         }
594 
595         @Test
596         public void typeTModelInValid() throws Exception {
597                 Assume.assumeTrue(TckPublisher.isEnabled());
598                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
599                 logger.info("TypeTModelInValid");
600                 try {
601                         TModel tm = new TModel();
602                         //tm.setTModelKey();
603                         tm.setCategoryBag(new CategoryBag());
604                         tm.setName(new Name("My Custom validated key", "en"));
605                         tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
606                         tm.getCategoryBag().getKeyedReference().add(new KeyedReference("uddi:uddi.org:categorization:types", "", "wsdlDeployment"));
607                         SaveTModel stm = new SaveTModel();
608                         stm.setAuthInfo(authInfoJoe);
609                         stm.getTModel().add(tm);
610                         TModelDetail saveTModel = publicationJoe.saveTModel(stm);
611                         deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
612                         Assert.fail("unexpected success");
613                 } catch (Exception ex) {
614                         logger.info("Expected failure " + ex.getMessage());
615                         logger.debug("Expected failure " + ex.getMessage(), ex);
616                 } finally {
617 
618                 }
619         }
620 
621         @Test
622         public void typeBindingInValid() throws Exception {
623                 Assume.assumeTrue(TckPublisher.isEnabled());
624                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
625                 logger.info("TypeBindingInValid");
626                 BusinessDetail saveBusiness = null;
627                 try {
628                         BusinessEntity be = new BusinessEntity();
629                         be.getName().add(new Name("test", "en"));
630                         be.setBusinessServices(new BusinessServices());
631                         be.getBusinessServices().getBusinessService().add(new BusinessService());
632                         be.getBusinessServices().getBusinessService().get(0).getName().add(new Name("test", "en"));
633                         SaveBusiness sb = new SaveBusiness();
634                         sb.setAuthInfo(authInfoJoe);
635                         saveBusiness = publicationJoe.saveBusiness(sb);
636                         SaveBinding sbb = new SaveBinding();
637 
638                         sbb.setAuthInfo(authInfoJoe);
639                         BindingTemplate bt = new BindingTemplate();
640                         bt.setServiceKey(saveBusiness.getBusinessEntity().get(0).getBusinessServices().getBusinessService().get(0).getServiceKey());
641                         bt.setAccessPoint(new AccessPoint("http://test", "endPoint"));
642                         bt.setCategoryBag(new CategoryBag());
643                         bt.getCategoryBag().getKeyedReference().add(new KeyedReference("uddi:uddi.org:categorization:types", "", "namespace"));
644                         publicationJoe.saveBinding(sbb);
645                         deleteBusiness(authInfoJoe, saveBusiness.getBusinessEntity().get(0).getBusinessKey(), publicationJoe);
646                         Assert.fail("unexpected success");
647                 } catch (Exception ex) {
648                         logger.info("Expected failure " + ex.getMessage());
649                         logger.debug("Expected failure " + ex.getMessage(), ex);
650                 } finally {
651 
652                 }
653         }
654 
655         @Test
656         public void rypeBindingValid() throws Exception {
657                 Assume.assumeTrue(TckPublisher.isEnabled());
658                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
659                 logger.info("TypeBindingValid");
660                 BusinessEntity be = new BusinessEntity();
661                 be.getName().add(new Name("test", "en"));
662                 be.setBusinessServices(new BusinessServices());
663                 be.getBusinessServices().getBusinessService().add(new BusinessService());
664                 be.getBusinessServices().getBusinessService().get(0).getName().add(new Name("test", "en"));
665                 SaveBusiness sb = new SaveBusiness();
666                 sb.setAuthInfo(authInfoJoe);
667                 sb.getBusinessEntity().add(be);
668                 BusinessDetail saveBusiness = publicationJoe.saveBusiness(sb);
669 
670                 SaveBinding sbb = new SaveBinding();
671                 sbb.setAuthInfo(authInfoJoe);
672                 BindingTemplate bt = new BindingTemplate();
673                 bt.setServiceKey(saveBusiness.getBusinessEntity().get(0).getBusinessServices().getBusinessService().get(0).getServiceKey());
674                 bt.setAccessPoint(new AccessPoint("http://test", "endPoint"));
675                 bt.setCategoryBag(new CategoryBag());
676                 bt.getCategoryBag().getKeyedReference().add(new KeyedReference("uddi:uddi.org:categorization:types", "", "wsdlDeployment"));
677                 sbb.getBindingTemplate().add(bt);
678                 publicationJoe.saveBinding(sbb);
679                 deleteBusiness(authInfoJoe, saveBusiness.getBusinessEntity().get(0).getBusinessKey(), publicationJoe);
680         }
681 
682         @Test
683         public void ralidatedByInValid() throws Exception {
684                 Assume.assumeTrue(TckPublisher.isEnabled());
685                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
686                 logger.info("ValidatedByInValid");
687                 BusinessEntity SaveVSVCallbackService = null;
688                 try {
689                         SaveVSVCallbackService = saveVSVCallbackService(authInfoJoe, publicationJoe);
690 
691                         TModel tm = new TModel();
692                         //tm.setTModelKey();
693                         tm.setCategoryBag(new CategoryBag());
694                         tm.setName(new Name("My Custom validated key", "en"));
695                         tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
696                         tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.IS_VALIDATED_BY, UDDIConstants.IS_VALIDATED_BY_KEY_NAME, TckTModel.JOE_PUBLISHER_KEY_PREFIX + UUID.randomUUID().toString()));
697                         SaveTModel stm = new SaveTModel();
698                         stm.setAuthInfo(authInfoJoe);
699                         stm.getTModel().add(tm);
700                         TModelDetail saveTModel = publicationJoe.saveTModel(stm);
701                         deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
702                         Assert.fail("unexpected success");
703                 } catch (Exception ex) {
704                         logger.info("Expected failure " + ex.getMessage());
705                         logger.debug("Expected failure " + ex.getMessage(), ex);
706                 } finally {
707                         deleteBusiness(authInfoJoe, SaveVSVCallbackService.getBusinessKey(), publicationJoe);
708                 }
709         }
710 
711         @Test
712         public void ralidatedByValid() throws Exception {
713                 Assume.assumeTrue(TckPublisher.isEnabled());
714                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
715 
716                 logger.info("ValidatedByValid");
717                 BusinessEntity SaveVSVCallbackService = saveVSVCallbackService(authInfoJoe, publicationJoe);
718 
719                 TModel tm = new TModel();
720                 //tm.setTModelKey();
721                 tm.setCategoryBag(new CategoryBag());
722                 tm.setName(new Name("My Custom validated key", "en"));
723                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
724                 tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.IS_VALIDATED_BY, UDDIConstants.IS_VALIDATED_BY_KEY_NAME, SaveVSVCallbackService.getBusinessServices().getBusinessService().get(0).getBindingTemplates().getBindingTemplate().get(0).getBindingKey()));
725                 SaveTModel stm = new SaveTModel();
726                 stm.setAuthInfo(authInfoJoe);
727                 stm.getTModel().add(tm);
728                 TModelDetail saveTModel = publicationJoe.saveTModel(stm);
729                 deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
730                 deleteBusiness(authInfoJoe, SaveVSVCallbackService.getBusinessKey(), publicationJoe);
731 
732         }
733 
734         @Test
735         public void replacedByValid() throws Exception {
736                 Assume.assumeTrue(TckPublisher.isEnabled());
737                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
738                 logger.info("ReplacedByValid");
739                 TModel tm = new TModel();
740                 tm.setName(new Name("My old tmodel", "en"));
741                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
742                 SaveTModel stm = new SaveTModel();
743                 stm.setAuthInfo(authInfoJoe);
744                 stm.getTModel().add(tm);
745                 TModelDetail saveTModel = publicationJoe.saveTModel(stm);
746 
747                 tm = new TModel();
748                 tm.setName(new Name("My new tmodel", "en"));
749                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
750                 tm.setIdentifierBag(new IdentifierBag());
751                 tm.getIdentifierBag().getKeyedReference().add(new KeyedReference(UDDIConstants.IS_REPLACED_BY, "", saveTModel.getTModel().get(0).getTModelKey()));
752                 stm = new SaveTModel();
753                 stm.setAuthInfo(authInfoJoe);
754                 stm.getTModel().add(tm);
755                 TModelDetail saveTModel1 = publicationJoe.saveTModel(stm);
756                 deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
757                 deleteTModel(authInfoJoe, saveTModel1.getTModel().get(0).getTModelKey(), publicationJoe);
758         }
759 
760         @Test
761         public void replacedByValid2() throws Exception {
762                 Assume.assumeTrue(TckPublisher.isEnabled());
763                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
764                 logger.info("ReplacedByValid2");
765                 TModel tm = new TModel();
766                 tm.setName(new Name("My old tmodel", "en"));
767                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
768                 SaveTModel stm = new SaveTModel();
769                 stm.setAuthInfo(authInfoJoe);
770                 stm.getTModel().add(tm);
771                 TModelDetail saveTModel = publicationJoe.saveTModel(stm);
772 
773                 tm = new TModel();
774                 tm.setName(new Name("My new tmodel", "en"));
775                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
776                 tm.setCategoryBag(new CategoryBag());
777                 tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.IS_REPLACED_BY, "", saveTModel.getTModel().get(0).getTModelKey()));
778                 stm = new SaveTModel();
779                 stm.setAuthInfo(authInfoJoe);
780                 stm.getTModel().add(tm);
781                 TModelDetail saveTModel1 = publicationJoe.saveTModel(stm);
782                 deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
783                 deleteTModel(authInfoJoe, saveTModel1.getTModel().get(0).getTModelKey(), publicationJoe);
784         }
785 
786         @Test
787         public void replacedByValid3() throws Exception {
788                 Assume.assumeTrue(TckPublisher.isEnabled());
789                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
790                 logger.info("ReplacedByValid3");
791                 BusinessEntity tm = new BusinessEntity();
792                 tm.getName().add(new Name("My old business", "en"));
793                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
794                 SaveBusiness stm = new SaveBusiness();
795                 stm.setAuthInfo(authInfoJoe);
796                 stm.getBusinessEntity().add(tm);
797                 BusinessDetail saveBusiness = publicationJoe.saveBusiness(stm);
798 
799                 tm = new BusinessEntity();
800                 tm.getName().add(new Name("My new business", "en"));
801                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
802                 tm.setIdentifierBag(new IdentifierBag());
803                 tm.getIdentifierBag().getKeyedReference().add(new KeyedReference(UDDIConstants.IS_REPLACED_BY, "", saveBusiness.getBusinessEntity().get(0).getBusinessKey()));
804                 stm = new SaveBusiness();
805                 stm.setAuthInfo(authInfoJoe);
806                 stm.getBusinessEntity().add(tm);
807                 BusinessDetail saveBusiness1 = publicationJoe.saveBusiness(stm);
808                 deleteBusiness(authInfoJoe, saveBusiness.getBusinessEntity().get(0).getBusinessKey(), publicationJoe);
809                 deleteBusiness(authInfoJoe, saveBusiness1.getBusinessEntity().get(0).getBusinessKey(), publicationJoe);
810         }
811 
812         @Test
813         public void replacedByValid4() throws Exception {
814                 Assume.assumeTrue(TckPublisher.isEnabled());
815                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
816                 logger.info("ReplacedByValid4");
817                 BusinessEntity tm = new BusinessEntity();
818                 tm.getName().add(new Name("My old business", "en"));
819                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
820                 SaveBusiness stm = new SaveBusiness();
821                 stm.setAuthInfo(authInfoJoe);
822                 stm.getBusinessEntity().add(tm);
823                 BusinessDetail saveBusiness = publicationJoe.saveBusiness(stm);
824 
825                 tm = new BusinessEntity();
826                 tm.getName().add(new Name("My new business", "en"));
827                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
828                 tm.setCategoryBag(new CategoryBag());
829                 tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.IS_REPLACED_BY, "", saveBusiness.getBusinessEntity().get(0).getBusinessKey()));
830                 stm = new SaveBusiness();
831                 stm.setAuthInfo(authInfoJoe);
832                 stm.getBusinessEntity().add(tm);
833                 BusinessDetail saveBusiness1 = publicationJoe.saveBusiness(stm);
834                 deleteBusiness(authInfoJoe, saveBusiness.getBusinessEntity().get(0).getBusinessKey(), publicationJoe);
835                 deleteBusiness(authInfoJoe, saveBusiness1.getBusinessEntity().get(0).getBusinessKey(), publicationJoe);
836         }
837 
838         @Test
839         public void replacedByValid5Projected() throws Exception {
840                 Assume.assumeTrue(TckPublisher.isEnabled());
841                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
842                 logger.info("ReplacedByValid5Projected");
843                 BusinessEntity tm = new BusinessEntity();
844                 tm.setBusinessKey(TckTModel.JOE_PUBLISHER_KEY_PREFIX + "testbiz");
845                 tm.getName().add(new Name("My old business", "en"));
846                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
847                 SaveBusiness stm = new SaveBusiness();
848                 stm.setAuthInfo(authInfoJoe);
849                 stm.getBusinessEntity().add(tm);
850 
851                 tm = new BusinessEntity();
852                 tm.setBusinessKey(TckTModel.JOE_PUBLISHER_KEY_PREFIX + "oldbiz");
853                 tm.getName().add(new Name("My new business", "en"));
854                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
855                 tm.setCategoryBag(new CategoryBag());
856                 tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.IS_REPLACED_BY, "", TckTModel.JOE_PUBLISHER_KEY_PREFIX + "testbiz"));
857                 stm.getBusinessEntity().add(tm);
858                 BusinessDetail saveBusiness = publicationJoe.saveBusiness(stm);
859                 deleteBusiness(authInfoJoe, saveBusiness.getBusinessEntity().get(0).getBusinessKey(), publicationJoe);
860         }
861 
862         @Test
863         public void replacedByValid6DifferentOwners() throws Exception {
864                 Assume.assumeTrue(TckPublisher.isEnabled());
865                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
866                 logger.info("ReplacedByValid6DifferentOwners");
867                 
868                 BusinessEntity tm = new BusinessEntity();
869                 tm.setBusinessKey(TckTModel.MARY_KEY_PREFIX + "testbiz");
870                 tm.getName().add(new Name("My old business", "en"));
871                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
872                 SaveBusiness stm = new SaveBusiness();
873                 stm.setAuthInfo(authInfoMary);
874                 stm.getBusinessEntity().add(tm);
875                 BusinessDetail saveBusiness = publicationMary.saveBusiness(stm);
876 
877                 tm = new BusinessEntity();
878                 tm.setBusinessKey(TckTModel.JOE_PUBLISHER_KEY_PREFIX + "oldbiz");
879                 tm.getName().add(new Name("My new business", "en"));
880                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
881                 tm.setCategoryBag(new CategoryBag());
882                 tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.IS_REPLACED_BY, "", TckTModel.MARY_KEY_PREFIX + "testbiz"));
883                 stm = new SaveBusiness();
884                 stm.setAuthInfo(authInfoJoe);
885                 stm.getBusinessEntity().add(tm);
886                 BusinessDetail saveBusiness1 = publicationJoe.saveBusiness(stm);
887 
888                 deleteBusiness(authInfoJoe, saveBusiness1.getBusinessEntity().get(0).getBusinessKey(), publicationJoe);
889                 deleteBusiness(authInfoMary, saveBusiness.getBusinessEntity().get(0).getBusinessKey(), publicationMary);
890         }
891 
892         @Test
893         public void replacedByValid7DifferentOwners() throws Exception {
894                 Assume.assumeTrue(TckPublisher.isEnabled());
895                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
896                 
897                 TckTModel tmodel = new TckTModel(publicationJoe, inquiry);
898                 tmodel.saveJoePublisherTmodel(authInfoJoe);
899                 
900                 logger.info("ReplacedByValid7DifferentOwners");
901                 BusinessEntity tm = new BusinessEntity();
902                 tm.setBusinessKey(TckTModel.MARY_KEY_PREFIX + "testbiz");
903                 tm.getName().add(new Name("My old business", "en"));
904                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
905                 SaveBusiness stm = new SaveBusiness();
906                 stm.setAuthInfo(authInfoMary);
907                 stm.getBusinessEntity().add(tm);
908                 BusinessDetail saveBusiness = publicationJoe.saveBusiness(stm);
909 
910                 tm = new BusinessEntity();
911                 tm.setBusinessKey(TckTModel.JOE_PUBLISHER_KEY_PREFIX + "oldbiz");
912                 tm.getName().add(new Name("My new business", "en"));
913                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
914                 tm.setIdentifierBag(new IdentifierBag());
915                 tm.getIdentifierBag().getKeyedReference().add(new KeyedReference(UDDIConstants.IS_REPLACED_BY, "", TckTModel.MARY_KEY_PREFIX + "testbiz"));
916                 stm = new SaveBusiness();
917                 stm.setAuthInfo(authInfoJoe);
918                 stm.getBusinessEntity().add(tm);
919                 BusinessDetail saveBusiness1 = publicationJoe.saveBusiness(stm);
920 
921                 deleteBusiness(authInfoJoe, saveBusiness1.getBusinessEntity().get(0).getBusinessKey(), publicationJoe);
922                 deleteBusiness(authInfoMary, saveBusiness.getBusinessEntity().get(0).getBusinessKey(), publicationMary);
923         }
924 
925         /**
926          * reference undefined tmodel
927          *
928          * @throws Exception
929          */
930         @Test
931         public void replacedByInValid() throws Exception {
932                 Assume.assumeTrue(TckPublisher.isEnabled());
933                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
934                 logger.info("ReplacedByInValid");
935                 try {
936                         TModel tm = new TModel();
937                         tm.setName(new Name("My new tmodel", "en"));
938                         tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
939                         tm.setCategoryBag(new CategoryBag());
940                         tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.IS_REPLACED_BY, "", TckTModel.JOE_PUBLISHER_KEY_PREFIX + UUID.randomUUID().toString()));
941                         SaveTModel stm = new SaveTModel();
942                         stm.setAuthInfo(authInfoJoe);
943                         stm.getTModel().add(tm);
944                         TModelDetail saveTModel = publicationJoe.saveTModel(stm);
945                         deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
946                         Assert.fail("unexpected success");
947                 } catch (Exception ex) {
948                         logger.info("Expected failure " + ex.getMessage());
949                         logger.debug("Expected failure " + ex.getMessage(), ex);
950                 } finally {
951 
952                 }
953         }
954 
955         /**
956          * reference business key
957          *
958          * @throws Exception
959          */
960         @Test
961         public void replacedByInValid2() throws Exception {
962                 Assume.assumeTrue(TckPublisher.isEnabled());
963                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
964                 logger.info("ReplacedByInValid2");
965                 try {
966                         TModel tm = new TModel();
967                         tm.setName(new Name("My new tmodel", "en"));
968                         tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
969                         tm.setCategoryBag(new CategoryBag());
970                         tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.IS_REPLACED_BY, "", "uddi:juddi.apache.org:node1"));
971                         SaveTModel stm = new SaveTModel();
972                         stm.setAuthInfo(authInfoJoe);
973                         stm.getTModel().add(tm);
974                         TModelDetail saveTModel = publicationJoe.saveTModel(stm);
975                         deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
976                         Assert.fail("unexpected success");
977                 } catch (Exception ex) {
978                         logger.info("Expected failure " + ex.getMessage());
979                         logger.debug("Expected failure " + ex.getMessage(), ex);
980                 } finally {
981 
982                 }
983         }
984 
985         @Test
986         public void relationshipsValid() throws Exception {
987                 Assume.assumeTrue(TckPublisher.isEnabled());
988                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
989                 logger.info("RelationshipsValid");
990                 TModel tm = new TModel();
991                 tm.setCategoryBag(new CategoryBag());
992                 tm.setName(new Name("My Custom validated key", "en"));
993                 tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
994                 tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.RELATIONSHIPS, "", "peer-peer"));
995                 SaveTModel stm = new SaveTModel();
996                 stm.setAuthInfo(authInfoJoe);
997                 stm.getTModel().add(tm);
998                 TModelDetail saveTModel = publicationJoe.saveTModel(stm);
999                 deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
1000 
1001         }
1002 
1003         @Test
1004         public void relationshipsInValid() throws Exception {
1005                 Assume.assumeTrue(TckPublisher.isEnabled());
1006                 Assume.assumeTrue(TckPublisher.isValueSetAPIEnabled());
1007                 logger.info("RelationshipsInValid");
1008                 try {
1009                         TModel tm = new TModel();
1010                         //tm.setTModelKey();
1011                         tm.setCategoryBag(new CategoryBag());
1012                         tm.setName(new Name("My Custom validated key", "en"));
1013                         tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
1014                         tm.getCategoryBag().getKeyedReference().add(new KeyedReference(UDDIConstants.RELATIONSHIPS, "", "asdasdasd"));
1015                         SaveTModel stm = new SaveTModel();
1016                         stm.setAuthInfo(authInfoJoe);
1017                         stm.getTModel().add(tm);
1018                         TModelDetail saveTModel = publicationJoe.saveTModel(stm);
1019                         deleteTModel(authInfoJoe, saveTModel.getTModel().get(0).getTModelKey(), publicationJoe);
1020                         Assert.fail("unexpected success");
1021                 } catch (Exception ex) {
1022                         logger.info("Expected failure " + ex.getMessage());
1023                         logger.debug("Expected failure " + ex.getMessage(), ex);
1024                 } finally {
1025 
1026                 }
1027 
1028         }
1029 
1030 }