aboutsummaryrefslogtreecommitdiff
path: root/tests/iketests/src/java/com/android/ike/ikev2
diff options
context:
space:
mode:
authorYan Yan <evitayan@google.com>2019-09-19 17:26:56 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2019-09-19 17:26:56 +0000
commitc02fa0a5a790ad7488bcac5102afe7cf575d9b31 (patch)
tree809806b0c93c299cdf9e12e76f78c8631d95f5fe /tests/iketests/src/java/com/android/ike/ikev2
parent96fe7d959e2182996cbd07e701ee5b2e16ddf525 (diff)
parent9ba2d088e99066a4fc950bf568d1ec55b90ac29b (diff)
downloadike-c02fa0a5a790ad7488bcac5102afe7cf575d9b31.tar.gz
Merge "Fix bug that state machine gets stuck in Receiving"
Diffstat (limited to 'tests/iketests/src/java/com/android/ike/ikev2')
-rw-r--r--tests/iketests/src/java/com/android/ike/ikev2/IkeSessionStateMachineTest.java35
1 files changed, 35 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 44ef0d3d..12e32af6 100644
--- a/tests/iketests/src/java/com/android/ike/ikev2/IkeSessionStateMachineTest.java
+++ b/tests/iketests/src/java/com/android/ike/ikev2/IkeSessionStateMachineTest.java
@@ -110,6 +110,7 @@ import com.android.ike.ikev2.message.IkeMessage.DecodeResult;
import com.android.ike.ikev2.message.IkeMessage.DecodeResultOk;
import com.android.ike.ikev2.message.IkeMessage.DecodeResultPartial;
import com.android.ike.ikev2.message.IkeMessage.DecodeResultProtectedError;
+import com.android.ike.ikev2.message.IkeMessage.DecodeResultUnprotectedError;
import com.android.ike.ikev2.message.IkeMessage.IIkeMessageHelper;
import com.android.ike.ikev2.message.IkeMessage.IkeMessageHelper;
import com.android.ike.ikev2.message.IkeNoncePayload;
@@ -418,6 +419,18 @@ public final class IkeSessionStateMachineTest {
return new ReceivedIkePacket(header, dummyPacket);
}
+ private ReceivedIkePacket makeDummyReceivedIkePacketWithUnprotectedError(
+ IkeSaRecord ikeSaRecord, boolean isResp, int eType, IkeException exception) {
+ IkeHeader header =
+ makeDummyIkeHeader(ikeSaRecord, isResp, eType, IkePayload.PAYLOAD_TYPE_SK);
+ byte[] dummyPacket = new byte[0];
+ when(mMockIkeMessageHelper.decode(
+ anyInt(), any(), any(), eq(ikeSaRecord), eq(header), any(), any()))
+ .thenReturn(new DecodeResultUnprotectedError(exception));
+
+ return new ReceivedIkePacket(header, dummyPacket);
+ }
+
private ReceivedIkePacket makeDummyReceivedIkeFragmentPacket(
IkeSaRecord ikeSaRecord,
boolean isResp,
@@ -3249,6 +3262,9 @@ public final class IkeSessionStateMachineTest {
assertArrayEquals(dummyIkeResp, mIkeSessionStateMachine.mLastSentIkeResp);
assertArrayEquals(
dummyIkeReqFirstPacket, mIkeSessionStateMachine.mLastReceivedIkeReqFirstPacket);
+
+ assertTrue(
+ mIkeSessionStateMachine.getCurrentState() instanceof IkeSessionStateMachine.Idle);
}
@Test
@@ -3302,6 +3318,9 @@ public final class IkeSessionStateMachineTest {
assertArrayEquals(dummyIkeResp, mIkeSessionStateMachine.mLastSentIkeResp);
verify(mSpyIkeSocket, never()).sendIkePacket(any(), any());
+
+ assertTrue(
+ mIkeSessionStateMachine.getCurrentState() instanceof IkeSessionStateMachine.Idle);
}
@Test
@@ -3948,4 +3967,20 @@ public final class IkeSessionStateMachineTest {
assertNull(mIkeSessionStateMachine.getCurrentState());
verify(mMockIkeSessionCallback).onError(any(InvalidSyntaxException.class));
}
+
+ @Test
+ public void testIdleHandlesUnprotectedPacket() throws Exception {
+ setupIdleStateMachine();
+
+ ReceivedIkePacket req =
+ makeDummyReceivedIkePacketWithUnprotectedError(
+ mSpyCurrentIkeSaRecord,
+ false /*isResp*/,
+ EXCHANGE_TYPE_INFORMATIONAL,
+ mock(IkeException.class));
+
+ mLooper.dispatchAll();
+ assertTrue(
+ mIkeSessionStateMachine.getCurrentState() instanceof IkeSessionStateMachine.Idle);
+ }
}