diff options
author | Yan Yan <evitayan@google.com> | 2019-09-19 17:26:56 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2019-09-19 17:26:56 +0000 |
commit | c02fa0a5a790ad7488bcac5102afe7cf575d9b31 (patch) | |
tree | 809806b0c93c299cdf9e12e76f78c8631d95f5fe /tests/iketests/src/java/com/android/ike/ikev2 | |
parent | 96fe7d959e2182996cbd07e701ee5b2e16ddf525 (diff) | |
parent | 9ba2d088e99066a4fc950bf568d1ec55b90ac29b (diff) | |
download | ike-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.java | 35 |
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); + } } |