[Asterisk-java-cvs] CVS: asterisk-java/src/test/net/sf/asterisk/manager ManagerWriterMock.java,1.2,1
Brought to you by:
srt
From: Stefan R. <sr...@us...> - 2005-03-05 00:33:27
|
Update of /cvsroot/asterisk-java/asterisk-java/src/test/net/sf/asterisk/manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9825/src/test/net/sf/asterisk/manager Modified Files: ManagerWriterMock.java DefaultManagerConnectionTest.java Log Message: Added testReconnectWithKeepAliveAfterAuthenticationFailure Index: ManagerWriterMock.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/test/net/sf/asterisk/manager/ManagerWriterMock.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- ManagerWriterMock.java 5 Mar 2005 00:14:32 -0000 1.2 +++ ManagerWriterMock.java 5 Mar 2005 00:33:16 -0000 1.3 @@ -129,6 +129,7 @@ public class ManagerWriterMock implement { throw new RuntimeException("Expected authType 'MD5' got '" + authType + "'"); } + if (!expectedUsername.equals(username)) { throw new RuntimeException("Expected username '" + expectedUsername + "' got '" + username + "'"); @@ -140,7 +141,9 @@ public class ManagerWriterMock implement { ManagerResponse loginResponse; - if (key.equals(expectedKey)) + // let testReconnectWithKeepAliveAfterAuthenticationFailure succeed after + // 3 unsuccessful attempts + if (key.equals(expectedKey) || loginActionsSent > 2) { loginResponse = new ManagerResponse(); loginResponse.setResponse("Success"); Index: DefaultManagerConnectionTest.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/test/net/sf/asterisk/manager/DefaultManagerConnectionTest.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- DefaultManagerConnectionTest.java 5 Mar 2005 00:14:32 -0000 1.2 +++ DefaultManagerConnectionTest.java 5 Mar 2005 00:33:16 -0000 1.3 @@ -422,7 +422,7 @@ public class DefaultManagerConnectionTes // fake successful login dmc.setKeepAlive(true); - + dmc.setThrowIOExceptionOnFirstSocketCreate(true); dmc.setUsername("username"); @@ -467,7 +467,40 @@ public class DefaultManagerConnectionTes assertEquals("unexpected other actions sent", 0, mockWriter.otherActionsSent); assertFalse("keepAlive not disabled", dmc.getKeepAlive()); - + + socketMC.verify(); + } + + public void testReconnectWithKeepAliveAfterAuthenticationFailure() throws Exception + { + DisconnectEvent disconnectEvent; + + // 2 unsuccessful attempts + mockSocket.close(); + mockSocket.close(); + socketMC.replay(); + disconnectEvent = new DisconnectEvent(asteriskServer); + + // fake successful login + dmc.setKeepAlive(true); + + // to prevent an infinite loop we will be able to log in after two unsuccessful attempts + // even if the password is not correct. + dmc.setKeepAliveAfterAuthenticationFailure(true); + dmc.setUsername("username"); + + dmc.dispatchEvent(disconnectEvent); + + assertEquals("createSocket not called 3 time", 3, dmc.createSocketCalls); + assertEquals("createWriter not called 1 time", 1, dmc.createWriterCalls); + assertEquals("createReader not called 1 time", 1, dmc.createReaderCalls); + + assertEquals("challenge action not sent 3 time", 3, mockWriter.challengeActionsSent); + assertEquals("login action not sent 3 time", 3, mockWriter.loginActionsSent); + assertEquals("unexpected other actions sent", 0, mockWriter.otherActionsSent); + + assertTrue("keepAlive not enabled", dmc.getKeepAlive()); + socketMC.verify(); } |