aboutsummaryrefslogtreecommitdiff
path: root/tests/iketests/src/java/com/android/ike/ikev2/IkeSessionStateMachineTest.java
diff options
context:
space:
mode:
authorYan Yan <evitayan@google.com>2019-09-04 21:20:42 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2019-09-04 21:20:42 +0000
commitabf1adb1340bdc9bab08ddc527576cfa15b41a3b (patch)
treeaa82d0d8f8e300f4b65fb01fcbf13553db0966d8 /tests/iketests/src/java/com/android/ike/ikev2/IkeSessionStateMachineTest.java
parent3cc0a0eb9de57fcd1ea3ef74a478a6f621d1a5fe (diff)
parent3abde197f2b763f45a5f9a474592ac136e710bf3 (diff)
downloadike-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.java52
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));
+ }
}