This project has retired. For details please refer to its Attic page.
SubscriptionNotifierTest xref
View Javadoc
1   /*
2    * Copyright 2001-2009 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    *      http://www.apache.org/licenses/LICENSE-2.0
8    * 
9    * Unless required by applicable law or agreed to in writing, software
10   * distributed under the License is distributed on an "AS IS" BASIS,
11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12   * See the License for the specific language governing permissions and
13   * limitations under the License.
14   */
15  package org.apache.juddi.subscription;
16  
17  import java.net.MalformedURLException;
18  import java.rmi.RemoteException;
19  import java.util.Collection;
20  import java.util.Date;
21  
22  import javax.xml.datatype.DatatypeConfigurationException;
23  
24  import org.apache.commons.configuration.ConfigurationException;
25  import org.apache.commons.logging.Log;
26  import org.apache.commons.logging.LogFactory;
27  import org.apache.juddi.api.impl.API_010_PublisherTest;
28  import org.apache.juddi.api.impl.UDDIInquiryImpl;
29  import org.apache.juddi.api.impl.UDDIPublicationImpl;
30  import org.apache.juddi.api.impl.UDDISecurityImpl;
31  import org.apache.juddi.api.impl.UDDISubscriptionImpl;
32  import org.apache.juddi.model.Subscription;
33  import org.apache.juddi.model.UddiEntityPublisher;
34  import org.apache.juddi.v3.client.UDDIConstants;
35  import org.apache.juddi.v3.tck.TckBindingTemplate;
36  import org.apache.juddi.v3.tck.TckBusiness;
37  import org.apache.juddi.v3.tck.TckBusinessService;
38  import org.apache.juddi.v3.tck.TckPublisher;
39  import org.apache.juddi.v3.tck.TckSecurity;
40  import org.apache.juddi.v3.tck.TckSubscription;
41  import org.apache.juddi.v3.tck.TckTModel;
42  import org.junit.AfterClass;
43  import org.junit.Assert;
44  import org.junit.Assume;
45  import org.junit.BeforeClass;
46  import org.junit.Test;
47  import org.uddi.api_v3.FindQualifiers;
48  import org.uddi.api_v3.FindService;
49  import org.uddi.api_v3.Name;
50  import org.uddi.api_v3.ServiceList;
51  import org.uddi.sub_v3.GetSubscriptionResults;
52  import org.uddi.sub_v3.SubscriptionResultsList;
53  import org.uddi.v3_service.DispositionReportFaultMessage;
54  
55  /**
56   * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
57   */
58  public class SubscriptionNotifierTest {
59  
60      private static Log logger = LogFactory.getLog(SubscriptionNotifierTest.class);
61      private static API_010_PublisherTest api010 = new API_010_PublisherTest();
62      private static TckTModel tckTModel = new TckTModel(new UDDIPublicationImpl(), new UDDIInquiryImpl());
63      private static TckBusiness tckBusiness = new TckBusiness(new UDDIPublicationImpl(), new UDDIInquiryImpl());
64      private static TckBusinessService tckBusinessService = new TckBusinessService(new UDDIPublicationImpl(), new UDDIInquiryImpl());
65      private static TckBindingTemplate tckBindingTemplate = new TckBindingTemplate(new UDDIPublicationImpl(), new UDDIInquiryImpl());
66      private static TckSubscription tckSubscription = new TckSubscription(new UDDISubscriptionImpl(), new UDDISecurityImpl(), new UDDIInquiryImpl());
67      private static String authInfoJoe = null;
68  
69      @BeforeClass
70      public static void setup() {
71          logger.info("SubscriptionNotifierTest setup");
72          logger.debug("Getting auth token..");
73          try {
74              DumpAllBusinesses();
75              //calls uddi-tck-base//rc/main/resources/uddi_data/joepublisher
76              //setups up a JUDDI user account
77  
78              api010.saveJoePublisher();
79  
80              //login as joe
81              authInfoJoe = TckSecurity.getAuthToken(new UDDISecurityImpl(), TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
82              //makes tmodel uddi:uddi.joepublisher.com:keygenerator
83              tckTModel.saveJoePublisherTmodel(authInfoJoe);
84  
85              //saves a digitally signed business, no services
86              //key = uddi:uddi.joepublisher.com:businessone
87              //sournce = uddi_data/joepublisher/businessEntity.xml
88              tckBusiness.saveJoePublisherBusiness(authInfoJoe);
89              
90              //saves a service and binding template
91              //service key = uddi:uddi.joepublisher.com:serviceone
92              //source "uddi_data/joepublisher/businessService.xml"
93              //bt = uddi:uddi.joepublisher.com:bindingone
94              String bindingKey = tckBusinessService.saveJoePublisherService(authInfoJoe);
95  
96              if (bindingKey==null || bindingKey.length()==0)
97                  logger.fatal("Service binding key is null!");
98  
99              //makes subscription key=uddi:uddi.joepublisher.com:subscriptionone
100             //find exact match on "Service One"
101             //callback binding key=should be set to bindingKey
102             tckSubscription.saveJoePublisherSubscription(authInfoJoe, bindingKey);
103 
104             DumpAllBusinesses();
105 
106 
107 
108             //tckSubscription.getJoePublisherSubscriptionResults(authInfoJoe);
109         } catch (RemoteException e) {
110             logger.error(e.getMessage(), e);
111             Assert.fail("Could not obtain authInfo token.");
112         }
113     }
114 
115     private static void DumpAllBusinesses() {
116         UDDIInquiryImpl inquiry = new UDDIInquiryImpl();
117         FindService fs = new FindService();
118         fs.setFindQualifiers(new FindQualifiers());
119         fs.getFindQualifiers().getFindQualifier().add(UDDIConstants.APPROXIMATE_MATCH);
120         fs.getName().add(new Name("%", null));
121         try {
122             ServiceList findService = inquiry.findService(fs);
123             if (findService.getServiceInfos() == null) {
124                 logger.warn("NO SERVICES RETURNED!");
125             } else {
126                 for (int i = 0; i < findService.getServiceInfos().getServiceInfo().size(); i++) {
127                     logger.warn(findService.getServiceInfos().getServiceInfo().get(i).getName().get(0).getValue() + " "
128                             + findService.getServiceInfos().getServiceInfo().get(i).getServiceKey() + " "
129                             + findService.getServiceInfos().getServiceInfo().get(i).getBusinessKey());
130                 }
131             }
132         } catch (Exception ex) {
133             ex.printStackTrace();
134         }
135     }
136 
137     @Test
138     public void testGetSubscriptionResults()
139             throws ConfigurationException, MalformedURLException, DispositionReportFaultMessage, DatatypeConfigurationException {
140         SubscriptionNotifier notifier = new SubscriptionNotifier();
141         notifier.cancel();
142         Collection<Subscription> subscriptions = notifier.getAllAsyncSubscriptions();
143 
144         Assert.assertEquals(1, subscriptions.size());
145         Subscription subscription = subscriptions.iterator().next();
146         Assert.assertNotNull(subscription);
147         GetSubscriptionResults getSubscriptionResults = notifier.buildGetSubscriptionResults(subscription, new Date(new Date().getTime() + 60000l));
148         if (getSubscriptionResults!=null)
149         {
150             getSubscriptionResults.setSubscriptionKey(subscription.getSubscriptionKey());
151             UddiEntityPublisher publisher = new UddiEntityPublisher();
152             publisher.setAuthorizedName(subscription.getAuthorizedName());
153             SubscriptionResultsList resultList = notifier.getSubscriptionImpl().getSubscriptionResults(getSubscriptionResults, publisher);
154             logger.info("Expecting the resultList to be null: " + resultList.getServiceList());
155             Assert.assertNull(resultList.getServiceList());
156             tckBusinessService.updateJoePublisherService(authInfoJoe, "updated description");
157             resultList = notifier.getSubscriptionImpl().getSubscriptionResults(getSubscriptionResults, publisher);
158             //We're expecting a changed service
159             logger.info("Expecting the resultList to have 1 service: " + resultList.getServiceList());
160             Assert.assertNotNull(resultList.getServiceList());
161             //We should detect these changes.
162             boolean hasChanges = notifier.resultListContainsChanges(resultList);
163             Assert.assertTrue(hasChanges);
164             System.out.print(resultList);
165             notifier.notify(getSubscriptionResults, resultList, new Date());
166         }
167         else{
168             logger.error("testGetSubscriptionResults, getSubscriptionResults unexpectedly null");
169             Assume.assumeTrue(getSubscriptionResults==null);
170         }
171     }
172 
173     @AfterClass
174     public static void teardown() {
175         logger.info("Calling teardown");
176         //if (logger.isDebugEnabled()) 
177         {
178             DumpAllBusinesses();
179         }
180         tckSubscription.deleteJoePublisherSubscription(authInfoJoe);
181         //tckBindingTemplate.deleteJoePublisherBinding(authInfoJoe);
182         tckBusinessService.deleteJoePublisherService(authInfoJoe);
183         tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
184         tckTModel.deleteJoePublisherTmodel(authInfoJoe);
185     }
186 }