/* * Copyright 2004-2006 Stefan Reuter * * Licensed 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.asteriskjava.manager.internal; import java.util.LinkedHashMap; import java.util.Map; import junit.framework.TestCase; import org.asteriskjava.AsteriskVersion; import org.asteriskjava.manager.action.AbstractManagerAction; import org.asteriskjava.manager.action.AgentsAction; import org.asteriskjava.manager.action.OriginateAction; import org.asteriskjava.manager.action.UserEventAction; public class ActionBuilderImplTest extends TestCase { private ActionBuilder actionBuilder; @Override public void setUp() { this.actionBuilder = new ActionBuilderImpl(); } public void testBuildAction() { MyAction myAction; String actual; myAction = new MyAction(); myAction.setFirstProperty("first value"); myAction.setSecondProperty(Integer.valueOf(2)); myAction.setNonPublicProperty("private"); actual = actionBuilder.buildAction(myAction); assertTrue("Action name missing", actual.indexOf("action: My\r\n") >= 0); assertTrue("First property missing", actual .indexOf("firstproperty: first value\r\n") >= 0); assertTrue("Second property missing", actual .indexOf("secondproperty: 2\r\n") >= 0); assertTrue("Missing trailing CRNL CRNL", actual.endsWith("\r\n\r\n")); assertEquals("Incorrect length", 61, actual.length()); } public void testBuildActionWithNullValue() { MyAction myAction; String actual; myAction = new MyAction(); myAction.setFirstProperty("first value"); actual = actionBuilder.buildAction(myAction); assertTrue("Action name missing", actual.indexOf("action: My\r\n") >= 0); assertTrue("First property missing", actual .indexOf("firstproperty: first value\r\n") >= 0); assertTrue("Missing trailing CRNL CRNL", actual.endsWith("\r\n\r\n")); assertEquals("Incorrect length", 42, actual.length()); } public void testBuildEventGeneratingAction() { AgentsAction action; String actual; action = new AgentsAction(); actual = actionBuilder.buildAction(action); assertTrue("Action name missing", actual.indexOf("action: Agents\r\n") >= 0); assertTrue("Action contains actionCompleteEventClass property", actual .indexOf("actioncompleteeventclass:") == -1); assertTrue("Missing trailing CRNL CRNL", actual.endsWith("\r\n\r\n")); } public void testBuildUserEventAction() { UserEventAction action; action = new UserEventAction(); MyUserEvent event; event = new MyUserEvent(this); action.setUserEvent(event); Map<String,String> mapMemberTest = new LinkedHashMap<String,String>(); mapMemberTest.put("Key1", "Value1"); mapMemberTest.put("Key2", "Value2"); mapMemberTest.put("Key3", "Value3"); event.setStringMember("stringMemberValue"); event.setMapMember(mapMemberTest); String actual = actionBuilder.buildAction(action); assertTrue("Action name missing", actual.indexOf("action: UserEvent\r\n") >= 0); assertTrue("Event name missing", actual.indexOf("UserEvent: myuser\r\n") >= 0); assertTrue("Regular member missing", actual.indexOf("stringmember: stringMemberValue\r\n") >= 0); assertTrue("Map member missing", actual.indexOf("mapmember: Key1=Value1|Key2=Value2|Key3=Value3\r\n") >= 0); assertTrue("Missing trailing CRNL CRNL", actual.endsWith("\r\n\r\n")); } @SuppressWarnings("deprecation") public void testBuildActionWithVariablesForAsterisk10() { OriginateAction originateAction; String actual; originateAction = new OriginateAction(); originateAction.setVariable("var1=value1|var2=value2"); actual = actionBuilder.buildAction(originateAction); assertTrue("Incorrect mapping of variable property for Asterisk 1.0", actual.indexOf("variable: var1=value1|var2=value2\r\n") >= 0); } @SuppressWarnings("deprecation") public void testBuildActionWithVariablesForAsterisk10WithNullValues() { OriginateAction originateAction; String actual; originateAction = new OriginateAction(); originateAction.setVariable("var1=value1|var2=|var3=value3"); actual = actionBuilder.buildAction(originateAction); assertTrue( "Incorrect mapping of variable property for Asterisk 1.0", actual.indexOf("variable: var1=value1|var2=|var3=value3\r\n") >= 0); } @SuppressWarnings("deprecation") public void testBuildActionWithVariablesForAsterisk12() { OriginateAction originateAction; String actual; originateAction = new OriginateAction(); originateAction.setVariable("var1=value1|var2=value2"); actionBuilder.setTargetVersion(AsteriskVersion.ASTERISK_1_2); actual = actionBuilder.buildAction(originateAction); assertTrue( "Incorrect mapping of variable property for Asterisk 1.2", actual .indexOf("variable: var1=value1\r\nvariable: var2=value2\r\n") >= 0); } @SuppressWarnings("deprecation") public void testBuildActionWithVariablesForAsterisk12WithNullValues() { OriginateAction originateAction; String actual; originateAction = new OriginateAction(); originateAction.setVariable("var1=value1|var2=|var3=value3"); actionBuilder.setTargetVersion(AsteriskVersion.ASTERISK_1_2); actual = actionBuilder.buildAction(originateAction); assertTrue( "Incorrect mapping of variable property for Asterisk 1.2", actual .indexOf("variable: var1=value1\r\nvariable: var2=\r\nvariable: var3=value3\r\n") >= 0); } public void testBuildActionWithVariableMapForAsterisk12() { OriginateAction originateAction; Map<String, String> map; String actual; originateAction = new OriginateAction(); map = new LinkedHashMap<String, String>(); map.put("var1", "value1"); map.put("VAR2", "value2"); originateAction.setVariables(map); actionBuilder.setTargetVersion(AsteriskVersion.ASTERISK_1_2); actual = actionBuilder.buildAction(originateAction); assertTrue( "Incorrect mapping of variable property for Asterisk 1.2", actual.indexOf("variable: var1=value1\r\nvariable: VAR2=value2\r\n") >= 0); } class MyAction extends AbstractManagerAction { private static final long serialVersionUID = 3257568425345102641L; private String firstProperty; private Integer secondProperty; private String nonPublicProperty; @Override public String getAction() { return "My"; } public String getFirstProperty() { return firstProperty; } public void setFirstProperty(String firstProperty) { this.firstProperty = firstProperty; } public Integer getSecondProperty() { return secondProperty; } public void setSecondProperty(Integer secondProperty) { this.secondProperty = secondProperty; } protected String getNonPublicProperty() { return nonPublicProperty; } protected void setNonPublicProperty(String privateProperty) { this.nonPublicProperty = privateProperty; } public String get() { return "This method must not be considered a getter"; } public String getIndexedProperty(int i) { return "This method must not be considered a getter relevant for building the action"; } } }