/* * Created by Andrey Cherkashin (acherkashin) * http://acherkashin.me * * License * Copyright (c) 2015 Andrey Cherkashin * The project released under the MIT license: http://opensource.org/licenses/MIT */ package ragefist.packets; import com.juniform.JUniformMutableObject; import com.juniform.JUniformObject; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentMatcher; import static org.mockito.Mockito.*; import ragefist.core.distribution.DistributedServerController; import ragefist.core.distribution.DistributedServerController.DistributedServerControllerAPI; import ragefist.core.network.Connection; public class PacketHandlerRPCTest { private DistributedServerController _controller; private DistributedServerControllerAPI _controllerAPI; private PacketHandlerRPC _packetHandler; private class ObjectEqualityArgumentMatcher<T> extends ArgumentMatcher<T> { T matchObject; public ObjectEqualityArgumentMatcher(T thisObject) { this.matchObject = thisObject; } @Override public boolean matches(Object argument) { return argument.equals(matchObject); } } @Before public void setUp() { _controller = mock(DistributedServerController.class); _packetHandler = new PacketHandlerRPC(_controllerAPI); } @Test public void testExecuteNullRequest() { ArgumentMatcher matcher = new ArgumentMatcher<JUniformObject>() { @Override public boolean matches(Object argument) { JUniformObject object = (JUniformObject)argument; boolean result = object != null && object.getProperty("rs").toInteger() == 0 && object.getProperty("error").toString().equals("ERROR_UNKNOWN_ACTION") ; if (result == false) System.out.println(object); return result; } }; Connection connection = mock(Connection.class); _packetHandler.handlePacket(JUniformObject.OBJECT_NIL, connection); verify(connection, times(1)).sendPacket((JUniformObject)argThat(matcher)); } @Test public void testExecuteNoSequenceNumberRequest() { JUniformMutableObject packet = JUniformMutableObject.newMap(); packet.setProperty("action", "ExecuteCode"); ArgumentMatcher matcher = new ArgumentMatcher<JUniformObject>() { @Override public boolean matches(Object argument) { JUniformObject object = (JUniformObject)argument; boolean result = object != null && object.getProperty("rs").toInteger() == 0 && object.getProperty("error").toString().equals("ERROR_BAD_PACKET") ; if (result == false) System.out.println(object); return result; } }; Connection connection = mock(Connection.class); _packetHandler.handlePacket(packet, connection); verify(connection, times(1)).sendPacket((JUniformObject)argThat(matcher)); } @Test public void testExecuteNoDataRequest() { JUniformMutableObject packet = JUniformMutableObject.newMap(); packet.setProperty("action", "ExecuteCode"); packet.setProperty("sq", 1); ArgumentMatcher matcher = new ArgumentMatcher<JUniformObject>() { @Override public boolean matches(Object argument) { JUniformObject object = (JUniformObject)argument; boolean result = object != null && object.getProperty("rs").toInteger() == 0 && object.getProperty("error").toString().equals("ERROR_BAD_DATA") ; if (result == false) System.out.println(object); return result; } }; Connection connection = mock(Connection.class); _packetHandler.handlePacket(packet, connection); verify(connection, times(1)).sendPacket((JUniformObject)argThat(matcher)); } @Test public void testExecuteNoDataEnvironmentRequest() { JUniformMutableObject packet = JUniformMutableObject.newMap(); packet.setProperty("action", "ExecuteCode"); packet.setProperty("sq", 1); packet.setProperty("data", JUniformMutableObject.newMap()); ArgumentMatcher matcher = new ArgumentMatcher<JUniformObject>() { @Override public boolean matches(Object argument) { JUniformObject object = (JUniformObject)argument; boolean result = object != null && object.getProperty("rs").toInteger() == 0 && object.getProperty("error").toString().equals("ERROR_BAD_ENVIRONMENT") ; if (result == false) System.out.println(object); return result; } }; Connection connection = mock(Connection.class); _packetHandler.handlePacket(packet, connection); verify(connection, times(1)).sendPacket((JUniformObject)argThat(matcher)); } }