/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.synapse.eventing.builders; import junit.framework.TestCase; import org.apache.synapse.mediators.TestUtils; import org.apache.synapse.eventing.SynapseSubscription; import org.apache.axis2.context.MessageContext; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.databinding.utils.ConverterUtil; import org.apache.axiom.util.UIDGenerator; import org.wso2.eventing.EventingConstants; import javax.xml.namespace.QName; import java.util.Calendar; import java.util.Date; public class MessageBuilderTest extends TestCase { public void testSubscriptionMessageBuilderScenarioOne() { String subManUrl = "http://synapse.test.com/eventing/subscriptions"; String addressUrl = "http://www.other.example.com/OnStormWarning"; String filterDialect = "http://www.example.org/topicFilter"; String filter = "weather.storms"; Date date = new Date(System.currentTimeMillis() + 3600000); Calendar cal = Calendar.getInstance(); cal.setTime(date); String message = "<wse:Subscribe xmlns:wse=\"http://schemas.xmlsoap.org/ws/2004/08/eventing\" " + " xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\" " + " xmlns:ew=\"http://www.example.com/warnings\">\n" + " <wse:EndTo>\n" + " <wsa:Address>http://www.example.com/MyEventSink</wsa:Address>\n" + " <wsa:ReferenceProperties>\n" + " <ew:MySubscription>2597</ew:MySubscription>\n" + " </wsa:ReferenceProperties>\n" + " </wse:EndTo>\n" + " <wse:Delivery>\n" + " <wse:NotifyTo>\n" + " <wsa:Address>" + addressUrl + "</wsa:Address>\n" + " <wsa:ReferenceProperties>\n" + " <ew:MySubscription>2597</ew:MySubscription>\n" + " </wsa:ReferenceProperties>\n" + " </wse:NotifyTo>\n" + " </wse:Delivery>\n" + " <wse:Expires>" + ConverterUtil.convertToString(cal) + "</wse:Expires>\n" + " <wse:Filter xmlns:ow=\"http://www.example.org/oceanwatch\"\n" + " Dialect=\"" + filterDialect + "\" >" + filter +"</wse:Filter>\n" + "</wse:Subscribe>"; try { MessageContext msgCtx = TestUtils.getAxis2MessageContext(message, null). getAxis2MessageContext(); msgCtx.setTo(new EndpointReference(subManUrl)); SubscriptionMessageBuilder.resetErrorInfo(); SynapseSubscription sub = SubscriptionMessageBuilder.createSubscription(msgCtx); assertEquals(subManUrl, sub.getSubManUrl()); assertEquals(addressUrl, sub.getAddressUrl()); assertEquals(addressUrl, sub.getEndpointUrl()); assertEquals(filterDialect, sub.getFilterDialect()); assertEquals(filter, sub.getFilterValue()); assertEquals(date, sub.getExpires().getTime()); assertNull(SubscriptionMessageBuilder.getErrorCode()); assertNull(SubscriptionMessageBuilder.getErrorReason()); assertNull(SubscriptionMessageBuilder.getErrorSubCode()); } catch (Exception e) { fail("Error while constructing the sample subscription request: " + e.getMessage()); } } public void testSubscriptionMessageBuilderScenarioTwo() { String addressUrl = "http://synapse.test.com/eventing/subscriptions"; String message = "<wse:Unsubscribe xmlns:wse=\"http://schemas.xmlsoap.org/ws/2004/08/eventing\"/>"; try { MessageContext msgCtx = TestUtils.getAxis2MessageContext(message, null). getAxis2MessageContext(); msgCtx.setTo(new EndpointReference(addressUrl)); String id = addIdentifierHeader(msgCtx); SubscriptionMessageBuilder.resetErrorInfo(); SynapseSubscription sub = SubscriptionMessageBuilder.createUnSubscribeMessage(msgCtx); assertEquals(id, sub.getId()); assertEquals(addressUrl, sub.getAddressUrl()); assertNull(SubscriptionMessageBuilder.getErrorCode()); assertNull(SubscriptionMessageBuilder.getErrorReason()); assertNull(SubscriptionMessageBuilder.getErrorSubCode()); } catch (Exception e) { e.printStackTrace(); fail("Error while constructing the sample subscription request: " + e.getMessage()); } } public void testSubscriptionMessageBuilderScenarioThree() { String addressUrl = "http://synapse.test.com/eventing/subscriptions"; Date date = new Date(System.currentTimeMillis() + 3600000); Calendar cal = Calendar.getInstance(); cal.setTime(date); String message = "<wse:Renew xmlns:wse=\"http://schemas.xmlsoap.org/ws/2004/08/eventing\">\n" + " <wse:Expires>" + ConverterUtil.convertToString(cal) + "</wse:Expires>\n" + "</wse:Renew>"; try { MessageContext msgCtx = TestUtils.getAxis2MessageContext(message, null). getAxis2MessageContext(); msgCtx.setTo(new EndpointReference(addressUrl)); String id = addIdentifierHeader(msgCtx); SubscriptionMessageBuilder.resetErrorInfo(); SynapseSubscription sub = SubscriptionMessageBuilder. createRenewSubscribeMessage(msgCtx); assertEquals(id, sub.getId()); assertEquals(addressUrl, sub.getAddressUrl()); assertEquals(date, sub.getExpires().getTime()); assertNull(SubscriptionMessageBuilder.getErrorCode()); assertNull(SubscriptionMessageBuilder.getErrorReason()); assertNull(SubscriptionMessageBuilder.getErrorSubCode()); } catch (Exception e) { e.printStackTrace(); fail("Error while constructing the sample subscription request: " + e.getMessage()); } } public void testSubscriptionMessageBuilderScenarioFour() { String addressUrl = "http://synapse.test.com/eventing/subscriptions"; String message = "<wse:GetStatus xmlns:wse=\"http://schemas.xmlsoap.org/ws/2004/08/eventing\"/>"; try { MessageContext msgCtx = TestUtils.getAxis2MessageContext(message, null). getAxis2MessageContext(); msgCtx.setTo(new EndpointReference(addressUrl)); String id = addIdentifierHeader(msgCtx); SubscriptionMessageBuilder.resetErrorInfo(); SynapseSubscription sub = SubscriptionMessageBuilder.createGetStatusMessage(msgCtx); assertEquals(id, sub.getId()); assertEquals(addressUrl, sub.getAddressUrl()); assertNull(SubscriptionMessageBuilder.getErrorCode()); assertNull(SubscriptionMessageBuilder.getErrorReason()); assertNull(SubscriptionMessageBuilder.getErrorSubCode()); } catch (Exception e) { e.printStackTrace(); fail("Error while constructing the sample subscription request: " + e.getMessage()); } } public void testSubscriptionMessageBuilderScenarioFive() { String addressUrl = "http://synapse.test.com/eventing/subscriptions"; String message = "<wse:Renew xmlns:wse=\"http://schemas.xmlsoap.org/ws/2004/08/eventing\">\n" + " <wse:Expires>2004-06-26T21:07:00.000-08:00</wse:Expires>\n" + "</wse:Renew>"; try { MessageContext msgCtx = TestUtils.getAxis2MessageContext(message, null). getAxis2MessageContext(); msgCtx.setTo(new EndpointReference(addressUrl)); String id = addIdentifierHeader(msgCtx); SubscriptionMessageBuilder.resetErrorInfo(); SynapseSubscription sub = SubscriptionMessageBuilder. createRenewSubscribeMessage(msgCtx); assertNull(id, sub.getId()); assertEquals(addressUrl, sub.getAddressUrl()); assertNotNull(SubscriptionMessageBuilder.getErrorCode()); assertNotNull(SubscriptionMessageBuilder.getErrorReason()); assertNotNull(SubscriptionMessageBuilder.getErrorSubCode()); } catch (Exception e) { e.printStackTrace(); fail("Error while constructing the sample subscription request: " + e.getMessage()); } } private String addIdentifierHeader(MessageContext msgCtx) { String id = UIDGenerator.generateURNString(); QName qname = new QName(EventingConstants.WSE_EVENTING_NS, EventingConstants.WSE_EN_IDENTIFIER, "wse"); TestUtils.addSOAPHeaderBlock(msgCtx, qname, id); return id; } }