/*
* Copyright (c) 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* 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.wso2.carbon.mediator.publishevent;
import org.apache.axiom.om.OMElement;
import org.apache.synapse.config.SynapseConfigUtils;
import org.custommonkey.xmlunit.XMLTestCase;
import org.custommonkey.xmlunit.XMLUnit;
import org.wso2.carbon.utils.ServerConstants;
import java.io.File;
import java.util.Properties;
public class PublishEventMediatorTest extends XMLTestCase {
private static final String mediatorXml =
"<publishEvent xmlns=\"http://ws.apache.org/ns/synapse\">\n" +
" <eventSink>bam_event_sink</eventSink>\n" +
" <streamName>stream_3</streamName>\n" +
" <streamVersion>1.0.0</streamVersion>\n" +
" <attributes>\n" +
" <meta>\n" +
" <attribute name=\"method\" type=\"STRING\" defaultValue=\"rre\" expression=\"get-property('axis2', 'HTTP_METHOD')\"/>\n" +
" <attribute name=\"to\" type=\"STRING\" defaultValue=\"deffff\" expression=\"get-property('To')\" />\n" +
" </meta>\n" +
" <correlation>\n" +
" <attribute name=\"date\" type=\"STRING\" defaultValue=\"rre\" expression=\"get-property('SYSTEM_DATE')\" />\n" +
" </correlation>\n" +
" <payload>\n" +
" <attribute name=\"symbol\" type=\"STRING\" defaultValue=\"AAPL\" expression=\"$body/m0:getQuote/m0:request/m0:symbol\" xmlns:m0=\"http://services.samples\" />\n" +
" <attribute name=\"by_value\" type=\"INTEGER\" defaultValue=\"100\" value=\"1001\" />\n" +
" </payload>\n" +
" </attributes>\n" +
"</publishEvent>";
public PublishEventMediatorTest(String name) {
super(name);
}
public void _testMediatorFactory() {
OMElement mediatorElement = SynapseConfigUtils.stringToOM(mediatorXml);
System.setProperty(ServerConstants.CARBON_HOME, System.getProperty("user.dir") + File.separator +
"src" + File.separator + "test" + File.separator + "resources");
PublishEventMediatorFactory factory = new PublishEventMediatorFactory();
PublishEventMediator mediator =
(PublishEventMediator) factory.createSpecificMediator(mediatorElement, new Properties());
assertEquals(mediator.getStreamName(), "stream_3");
assertEquals(mediator.getStreamVersion(), "1.0.0");
assertEquals(mediator.getEventSink(), "bam_event_sink");
assertEquals(mediator.getMetaProperties().size(), 2);
assertEquals(mediator.getCorrelationProperties().size(), 1);
assertEquals(mediator.getPayloadProperties().size(), 2);
assertEquals(mediator.getMetaProperties().get(0).getKey(), "method");
assertEquals(mediator.getMetaProperties().get(0).getType(), "STRING");
assertEquals(mediator.getMetaProperties().get(0).getDefaultValue(), "rre");
assertEquals(mediator.getMetaProperties().get(0).getExpression().toString(),
"get-property('axis2', 'HTTP_METHOD')");
assertEquals(mediator.getMetaProperties().get(1).getKey(), "to");
assertEquals(mediator.getMetaProperties().get(1).getType(), "STRING");
assertEquals(mediator.getMetaProperties().get(1).getDefaultValue(), "deffff");
assertEquals(mediator.getMetaProperties().get(1).getExpression().toString(), "get-property('To')");
assertEquals(mediator.getCorrelationProperties().get(0).getKey(), "date");
assertEquals(mediator.getCorrelationProperties().get(0).getType(), "STRING");
assertEquals(mediator.getCorrelationProperties().get(0).getDefaultValue(), "rre");
assertEquals(mediator.getCorrelationProperties().get(0).getExpression().toString(),
"get-property('SYSTEM_DATE')");
assertEquals(mediator.getPayloadProperties().get(0).getKey(), "symbol");
assertEquals(mediator.getPayloadProperties().get(0).getType(), "STRING");
assertEquals(mediator.getPayloadProperties().get(0).getDefaultValue(), "AAPL");
assertEquals(mediator.getPayloadProperties().get(0).getExpression().toString(),
"$body/m0:getQuote/m0:request/m0:symbol");
assertEquals(mediator.getPayloadProperties().get(1).getKey(), "by_value");
assertEquals(mediator.getPayloadProperties().get(1).getType(), "INTEGER");
assertEquals(mediator.getPayloadProperties().get(1).getDefaultValue(), "100");
assertEquals(mediator.getPayloadProperties().get(1).getValue().toString(), "1001");
}
public void testDummy() {
}
public void _testMediatorSerializer() {
OMElement mediatorElement = SynapseConfigUtils.stringToOM(mediatorXml);
System.setProperty(ServerConstants.CARBON_HOME, System.getProperty("user.dir") + File.separator +
"src" + File.separator + "test" + File.separator + "resources");
PublishEventMediatorFactory factory = new PublishEventMediatorFactory();
PublishEventMediator mediator =
(PublishEventMediator) factory.createSpecificMediator(mediatorElement, new Properties());
PublishEventMediatorSerializer serializer = new PublishEventMediatorSerializer();
OMElement serializedMediatorElement = serializer.serializeSpecificMediator(mediator);
XMLUnit.setIgnoreWhitespace(true);
try {
assertXMLEqual(serializedMediatorElement.toString(), mediatorXml);
} catch (Exception e) {
}
}
}