diff options
author | Yan Yan <evitayan@google.com> | 2019-09-04 21:20:42 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2019-09-04 21:20:42 +0000 |
commit | abf1adb1340bdc9bab08ddc527576cfa15b41a3b (patch) | |
tree | aa82d0d8f8e300f4b65fb01fcbf13553db0966d8 /tests/iketests/src/java/com/android/ike/ikev2/IkeSessionStateMachineTest.java | |
parent | 3cc0a0eb9de57fcd1ea3ef74a478a6f621d1a5fe (diff) | |
parent | 3abde197f2b763f45a5f9a474592ac136e710bf3 (diff) | |
download | ike-abf1adb1340bdc9bab08ddc527576cfa15b41a3b.tar.gz |
Merge "Cleanup of IKE Session error handling"
Diffstat (limited to 'tests/iketests/src/java/com/android/ike/ikev2/IkeSessionStateMachineTest.java')
-rw-r--r-- | tests/iketests/src/java/com/android/ike/ikev2/IkeSessionStateMachineTest.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/iketests/src/java/com/android/ike/ikev2/IkeSessionStateMachineTest.java b/tests/iketests/src/java/com/android/ike/ikev2/IkeSessionStateMachineTest.java index 64a538cf..b08def66 100644 --- a/tests/iketests/src/java/com/android/ike/ikev2/IkeSessionStateMachineTest.java +++ b/tests/iketests/src/java/com/android/ike/ikev2/IkeSessionStateMachineTest.java @@ -1556,6 +1556,29 @@ public final class IkeSessionStateMachineTest { } @Test + public void testRemoteDeleteChildHandlesReqWithNoRecognizedSpi() throws Exception { + int unrecognizedSpi = 2; + + setupIdleStateMachine(); + + // Receive Delete Child Request without any recognized SPI + IkeDeletePayload[] inboundDelPayloads = + new IkeDeletePayload[] {new IkeDeletePayload(new int[] {unrecognizedSpi})}; + mIkeSessionStateMachine.sendMessage( + IkeSessionStateMachine.CMD_RECEIVE_IKE_PACKET, + makeDeleteChildPacket(inboundDelPayloads, false /*isResp*/)); + mLooper.dispatchAll(); + + // Verify outbound empty response was sent + List<IkePayload> payloadList = verifyOutInfoMsgHeaderAndGetPayloads(true /*isResp*/); + assertTrue(payloadList.isEmpty()); + + // Verify IKE Session was back to Idle + assertTrue( + mIkeSessionStateMachine.getCurrentState() instanceof IkeSessionStateMachine.Idle); + } + + @Test public void testRemoteCreateChild() throws Exception { setupIdleStateMachine(); @@ -3727,4 +3750,33 @@ public final class IkeSessionStateMachineTest { assertNull(mIkeSessionStateMachine.getCurrentState()); verify(mMockIkeSessionCallback).onError(any(InvalidSyntaxException.class)); } + + @Test + public void testHandlesInvalidRequest() throws Exception { + setupIdleStateMachine(); + + mIkeSessionStateMachine.sendMessage( + IkeSessionStateMachine.CMD_FORCE_TRANSITION, + mIkeSessionStateMachine.mChildProcedureOngoing); + + // Receive an IKE AUTH request + ReceivedIkePacket request = + makeDummyEncryptedReceivedIkePacketWithPayloadList( + mSpyCurrentIkeSaRecord, + IkeHeader.EXCHANGE_TYPE_IKE_AUTH, + false /*isResp*/, + new LinkedList<IkePayload>()); + mIkeSessionStateMachine.sendMessage(IkeSessionStateMachine.CMD_RECEIVE_IKE_PACKET, request); + mLooper.dispatchAll(); + + // Verify error notification was sent + List<IkePayload> ikePayloadList = verifyOutInfoMsgHeaderAndGetPayloads(true /*isResp*/); + assertEquals(1, ikePayloadList.size()); + assertEquals( + ERROR_TYPE_INVALID_SYNTAX, ((IkeNotifyPayload) ikePayloadList.get(0)).notifyType); + + // Verify IKE Session has quit + assertNull(mIkeSessionStateMachine.getCurrentState()); + verify(mMockIkeSessionCallback).onError(any(InvalidSyntaxException.class)); + } } |