aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCody Kesting <ckesting@google.com>2019-10-24 09:47:13 -0700
committerandroid-build-merger <android-build-merger@google.com>2019-10-24 09:47:13 -0700
commita9fb3ef4015a3aaabbe654dd123e219fcd75eb04 (patch)
treeab439ca6e84c2c6b42149d1620affc7cb99ab624
parent754f956a926637cfd386411a17daca9cf453dd95 (diff)
parent556529a212dba110db5aca36c58892bfed3f73c0 (diff)
downloadike-a9fb3ef4015a3aaabbe654dd123e219fcd75eb04.tar.gz
Add test for CreatedState for EAP-AKA'. am: 20950519b9 am: 734d4def6a
am: 556529a212 Change-Id: I663cf76b1955b7e20e3f123dd9a16248e0045814
-rw-r--r--src/java/com/android/ike/eap/message/simaka/EapAkaPrimeTypeData.java4
-rw-r--r--src/java/com/android/ike/eap/statemachine/EapAkaMethodStateMachine.java22
-rw-r--r--src/java/com/android/ike/eap/statemachine/EapAkaPrimeMethodStateMachine.java7
-rw-r--r--tests/iketests/src/java/com/android/ike/eap/message/EapTestMessageDefinitions.java2
-rw-r--r--tests/iketests/src/java/com/android/ike/eap/message/simaka/EapAkaPrimeTypeDataTest.java6
-rw-r--r--tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeCreatedStateTest.java85
-rw-r--r--tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeMethodStateMachineTest.java52
-rw-r--r--tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeStateTest.java100
-rw-r--r--tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeTest.java74
9 files changed, 286 insertions, 66 deletions
diff --git a/src/java/com/android/ike/eap/message/simaka/EapAkaPrimeTypeData.java b/src/java/com/android/ike/eap/message/simaka/EapAkaPrimeTypeData.java
index a2a4a436..7f06d683 100644
--- a/src/java/com/android/ike/eap/message/simaka/EapAkaPrimeTypeData.java
+++ b/src/java/com/android/ike/eap/message/simaka/EapAkaPrimeTypeData.java
@@ -57,7 +57,7 @@ public class EapAkaPrimeTypeData extends EapAkaTypeData {
* EapAkaTypeDataDecoder will be used for decoding {@link EapAkaPrimeTypeData} objects.
*/
public static class EapAkaPrimeTypeDataDecoder
- extends EapSimAkaTypeDataDecoder<EapAkaPrimeTypeData> {
+ extends EapSimAkaTypeDataDecoder<EapAkaTypeData> {
private static final String TAG = EapAkaPrimeTypeDataDecoder.class.getSimpleName();
private static final String EAP_METHOD = "EAP-AKA'";
@@ -82,7 +82,7 @@ public class EapAkaPrimeTypeData extends EapAkaTypeData {
* EapAkaPrimeTypeData instance representing the data stored in typeData. Otherwise, it
* will contain the relevant AtClientErrorCode for the decoding error.
*/
- public DecodeResult<EapAkaPrimeTypeData> decode(@NonNull byte[] typeData) {
+ public DecodeResult<EapAkaTypeData> decode(@NonNull byte[] typeData) {
return super.decode(typeData);
}
diff --git a/src/java/com/android/ike/eap/statemachine/EapAkaMethodStateMachine.java b/src/java/com/android/ike/eap/statemachine/EapAkaMethodStateMachine.java
index 39328347..de536715 100644
--- a/src/java/com/android/ike/eap/statemachine/EapAkaMethodStateMachine.java
+++ b/src/java/com/android/ike/eap/statemachine/EapAkaMethodStateMachine.java
@@ -130,6 +130,10 @@ class EapAkaMethodStateMachine extends EapSimAkaMethodStateMachine {
return EAP_TYPE_AKA;
}
+ protected DecodeResult<EapAkaTypeData> decode(byte[] typeData) {
+ return mEapAkaTypeDataDecoder.decode(typeData);
+ }
+
protected class CreatedState extends EapMethodState {
private final String mTAG = CreatedState.class.getSimpleName();
@@ -139,13 +143,11 @@ class EapAkaMethodStateMachine extends EapSimAkaMethodStateMachine {
return result;
}
- DecodeResult<EapAkaTypeData> decodeResult =
- mEapAkaTypeDataDecoder.decode(message.eapData.eapTypeData);
+ DecodeResult<? extends EapAkaTypeData> decodeResult =
+ decode(message.eapData.eapTypeData);
if (!decodeResult.isSuccessfulDecode()) {
return buildClientErrorResponse(
- message.eapIdentifier,
- EAP_TYPE_AKA,
- decodeResult.atClientErrorCode);
+ message.eapIdentifier, getEapMethod(), decodeResult.atClientErrorCode);
}
EapAkaTypeData eapAkaTypeData = decodeResult.eapTypeData;
@@ -163,7 +165,7 @@ class EapAkaMethodStateMachine extends EapSimAkaMethodStateMachine {
default:
return buildClientErrorResponse(
message.eapIdentifier,
- EAP_TYPE_AKA,
+ getEapMethod(),
AtClientErrorCode.UNABLE_TO_PROCESS);
}
}
@@ -180,8 +182,8 @@ class EapAkaMethodStateMachine extends EapSimAkaMethodStateMachine {
return result;
}
- DecodeResult<EapAkaTypeData> decodeResult =
- mEapAkaTypeDataDecoder.decode(message.eapData.eapTypeData);
+ DecodeResult<? extends EapAkaTypeData> decodeResult =
+ decode(message.eapData.eapTypeData);
if (!decodeResult.isSuccessfulDecode()) {
return buildClientErrorResponse(
message.eapIdentifier,
@@ -311,8 +313,8 @@ class EapAkaMethodStateMachine extends EapSimAkaMethodStateMachine {
+ ", received " + message.eapData.eapType));
}
- DecodeResult<EapAkaTypeData> decodeResult =
- mEapAkaTypeDataDecoder.decode(message.eapData.eapTypeData);
+ DecodeResult<? extends EapAkaTypeData> decodeResult =
+ decode(message.eapData.eapTypeData);
if (!decodeResult.isSuccessfulDecode()) {
return buildClientErrorResponse(
message.eapIdentifier,
diff --git a/src/java/com/android/ike/eap/statemachine/EapAkaPrimeMethodStateMachine.java b/src/java/com/android/ike/eap/statemachine/EapAkaPrimeMethodStateMachine.java
index c9ef1f7c..7883d4d9 100644
--- a/src/java/com/android/ike/eap/statemachine/EapAkaPrimeMethodStateMachine.java
+++ b/src/java/com/android/ike/eap/statemachine/EapAkaPrimeMethodStateMachine.java
@@ -25,8 +25,10 @@ import com.android.ike.eap.EapSessionConfig.EapAkaPrimeConfig;
import com.android.ike.eap.message.EapData.EapMethod;
import com.android.ike.eap.message.simaka.EapAkaPrimeTypeData;
import com.android.ike.eap.message.simaka.EapAkaPrimeTypeData.EapAkaPrimeTypeDataDecoder;
+import com.android.ike.eap.message.simaka.EapAkaTypeData;
import com.android.ike.eap.message.simaka.EapSimAkaAttribute;
import com.android.ike.eap.message.simaka.EapSimAkaAttribute.AtClientErrorCode;
+import com.android.ike.eap.message.simaka.EapSimAkaTypeData.DecodeResult;
import com.android.internal.annotations.VisibleForTesting;
import java.util.Arrays;
@@ -83,6 +85,11 @@ public class EapAkaPrimeMethodStateMachine extends EapAkaMethodStateMachine {
return EAP_TYPE_AKA_PRIME;
}
+ @Override
+ protected DecodeResult<EapAkaTypeData> decode(byte[] typeData) {
+ return mEapAkaPrimeTypeDataDecoder.decode(typeData);
+ }
+
EapAkaPrimeTypeData getEapSimAkaTypeData(AtClientErrorCode clientErrorCode) {
return new EapAkaPrimeTypeData(EAP_AKA_CLIENT_ERROR, Arrays.asList(clientErrorCode));
}
diff --git a/tests/iketests/src/java/com/android/ike/eap/message/EapTestMessageDefinitions.java b/tests/iketests/src/java/com/android/ike/eap/message/EapTestMessageDefinitions.java
index 0d9c7930..e0d4a519 100644
--- a/tests/iketests/src/java/com/android/ike/eap/message/EapTestMessageDefinitions.java
+++ b/tests/iketests/src/java/com/android/ike/eap/message/EapTestMessageDefinitions.java
@@ -310,4 +310,6 @@ public class EapTestMessageDefinitions {
public static final byte[] EAP_AKA_PRIME_REQUEST =
hexStringToByteArray("01" + ID + "000832050000");
+ public static final byte[] EAP_AKA_PRIME_CLIENT_ERROR_UNABLE_TO_PROCESS =
+ hexStringToByteArray("02" + ID + "000C320E000016010000");
}
diff --git a/tests/iketests/src/java/com/android/ike/eap/message/simaka/EapAkaPrimeTypeDataTest.java b/tests/iketests/src/java/com/android/ike/eap/message/simaka/EapAkaPrimeTypeDataTest.java
index f392c6e7..36066f1e 100644
--- a/tests/iketests/src/java/com/android/ike/eap/message/simaka/EapAkaPrimeTypeDataTest.java
+++ b/tests/iketests/src/java/com/android/ike/eap/message/simaka/EapAkaPrimeTypeDataTest.java
@@ -83,11 +83,11 @@ public class EapAkaPrimeTypeDataTest {
@Test
public void testDecode() {
- DecodeResult<EapAkaPrimeTypeData> result =
+ DecodeResult<EapAkaTypeData> result =
mTypeDataDecoder.decode(EAP_AKA_PRIME_CHALLENGE_REQUEST);
assertTrue(result.isSuccessfulDecode());
- EapAkaPrimeTypeData eapAkaPrimeTypeData = result.eapTypeData;
+ EapAkaPrimeTypeData eapAkaPrimeTypeData = (EapAkaPrimeTypeData) result.eapTypeData;
assertEquals(EAP_AKA_CHALLENGE, eapAkaPrimeTypeData.eapSubtype);
// also check Map entries (needs to match input order)
@@ -118,7 +118,7 @@ public class EapAkaPrimeTypeDataTest {
@Test
public void testDecodeMultipleAtKdfAttributes() {
- DecodeResult<EapAkaPrimeTypeData> result =
+ DecodeResult<EapAkaTypeData> result =
mTypeDataDecoder.decode(EAP_AKA_PRIME_MULTIPLE_AT_KDF);
assertFalse(result.isSuccessfulDecode());
diff --git a/tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeCreatedStateTest.java b/tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeCreatedStateTest.java
new file mode 100644
index 00000000..769f2ed4
--- /dev/null
+++ b/tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeCreatedStateTest.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.ike.eap.statemachine;
+
+import static com.android.ike.eap.message.EapData.EAP_TYPE_AKA_PRIME;
+import static com.android.ike.eap.message.EapMessage.EAP_CODE_REQUEST;
+import static com.android.ike.eap.message.EapTestMessageDefinitions.ID_INT;
+import static com.android.ike.eap.message.simaka.EapAkaTypeData.EAP_AKA_CHALLENGE;
+import static com.android.ike.eap.message.simaka.EapAkaTypeData.EAP_AKA_IDENTITY;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+import com.android.ike.eap.message.EapData;
+import com.android.ike.eap.message.EapMessage;
+import com.android.ike.eap.message.simaka.EapAkaPrimeTypeData;
+import com.android.ike.eap.message.simaka.EapAkaTypeData;
+import com.android.ike.eap.message.simaka.EapSimAkaTypeData.DecodeResult;
+import com.android.ike.eap.statemachine.EapAkaMethodStateMachine.ChallengeState;
+
+import org.junit.Test;
+
+import java.util.ArrayList;
+
+public class EapAkaPrimeCreatedStateTest extends EapAkaPrimeStateTest {
+ @Test
+ public void testProcessTransitionToIdentityState() throws Exception {
+ EapData eapData = new EapData(EAP_TYPE_AKA_PRIME, DUMMY_EAP_TYPE_DATA);
+ EapMessage eapMessage = new EapMessage(EAP_CODE_REQUEST, ID_INT, eapData);
+
+ // Don't actually need any attributes in the attributeMap, since we only care about the
+ // state transition here.
+ DecodeResult<EapAkaTypeData> decodeResult =
+ new DecodeResult<>(new EapAkaPrimeTypeData(EAP_AKA_IDENTITY, new ArrayList<>()));
+ when(mMockTypeDataDecoder.decode(eq(DUMMY_EAP_TYPE_DATA))).thenReturn(decodeResult);
+
+ mStateMachine.process(eapMessage);
+
+ assertTrue(mStateMachine.getState() instanceof EapAkaMethodStateMachine.IdentityState);
+
+ // decoded in CreatedState and IdentityState
+ verify(mMockTypeDataDecoder, times(2)).decode(eq(DUMMY_EAP_TYPE_DATA));
+ verifyNoMoreInteractions(mMockTelephonyManager, mMockTypeDataDecoder);
+ }
+
+ @Test
+ public void testProcessTransitionToChallengeState() throws Exception {
+ EapData eapData = new EapData(EAP_TYPE_AKA_PRIME, DUMMY_EAP_TYPE_DATA);
+ EapMessage eapMessage = new EapMessage(EAP_CODE_REQUEST, ID_INT, eapData);
+
+ // Don't actually need any attributes in the attributeMap, since we only care about the
+ // state transition here.
+ DecodeResult<EapAkaTypeData> decodeResult =
+ new DecodeResult<>(new EapAkaPrimeTypeData(EAP_AKA_CHALLENGE, new ArrayList<>()));
+ when(mMockTypeDataDecoder.decode(eq(DUMMY_EAP_TYPE_DATA))).thenReturn(decodeResult);
+
+ mStateMachine.process(eapMessage);
+
+ ChallengeState challengeState = (ChallengeState) mStateMachine.getState();
+ assertArrayEquals(EAP_IDENTITY_BYTES, challengeState.mIdentity);
+
+ // decoded in CreatedState and ChallengeState
+ verify(mMockTypeDataDecoder, times(2)).decode(DUMMY_EAP_TYPE_DATA);
+ verifyNoMoreInteractions(mMockTelephonyManager, mMockTypeDataDecoder);
+ }
+}
diff --git a/tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeMethodStateMachineTest.java b/tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeMethodStateMachineTest.java
index aa7b1987..c96f3fe2 100644
--- a/tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeMethodStateMachineTest.java
+++ b/tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeMethodStateMachineTest.java
@@ -16,63 +16,13 @@
package com.android.ike.eap.statemachine;
-import static android.telephony.TelephonyManager.APPTYPE_USIM;
-
-import static com.android.ike.TestUtils.hexStringToByteArray;
-
import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.telephony.TelephonyManager;
-import com.android.ike.eap.EapSessionConfig.EapAkaPrimeConfig;
-import com.android.ike.eap.message.simaka.EapAkaPrimeTypeData.EapAkaPrimeTypeDataDecoder;
import com.android.ike.eap.statemachine.EapAkaMethodStateMachine.CreatedState;
-import org.junit.Before;
import org.junit.Test;
-public class EapAkaPrimeMethodStateMachineTest {
- private static final int SUB_ID = 1;
- private static final String NETWORK_NAME = "android.net";
- private static final EapAkaPrimeConfig EAP_AKA_PRIME_CONFIG =
- new EapAkaPrimeConfig(SUB_ID, APPTYPE_USIM, NETWORK_NAME);
-
- // EAP-Identity = hex("test@android.net")
- protected static final byte[] EAP_IDENTITY_BYTES =
- hexStringToByteArray("7465737440616E64726F69642E6E6574");
-
- private Context mMockContext;
- private TelephonyManager mMockTelephonyManager;
- private EapAkaPrimeTypeDataDecoder mMockTypeDataDecoder;
- private EapAkaPrimeMethodStateMachine mStateMachine;
-
- @Before
- public void setUp() {
- mMockContext = mock(Context.class);
- mMockTelephonyManager = mock(TelephonyManager.class);
- mMockTypeDataDecoder = mock(EapAkaPrimeTypeDataDecoder.class);
-
- when(mMockContext.getSystemService(eq(Context.TELEPHONY_SERVICE)))
- .thenReturn(mMockTelephonyManager);
- when(mMockTelephonyManager.createForSubscriptionId(SUB_ID))
- .thenReturn(mMockTelephonyManager);
-
- mStateMachine =
- new EapAkaPrimeMethodStateMachine(
- mMockContext,
- EAP_IDENTITY_BYTES,
- EAP_AKA_PRIME_CONFIG,
- mMockTypeDataDecoder);
-
- verify(mMockContext).getSystemService(eq(Context.TELEPHONY_SERVICE));
- verify(mMockTelephonyManager).createForSubscriptionId(SUB_ID);
- }
-
+public class EapAkaPrimeMethodStateMachineTest extends EapAkaPrimeTest {
@Test
public void testEapAkaPrimeMethodStateMachineStartState() {
assertTrue(mStateMachine.getState() instanceof CreatedState);
diff --git a/tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeStateTest.java b/tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeStateTest.java
new file mode 100644
index 00000000..98d7bc38
--- /dev/null
+++ b/tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeStateTest.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.ike.eap.statemachine;
+
+import static com.android.ike.eap.message.EapData.EAP_NOTIFICATION;
+import static com.android.ike.eap.message.EapData.EAP_TYPE_AKA_PRIME;
+import static com.android.ike.eap.message.EapMessage.EAP_CODE_FAILURE;
+import static com.android.ike.eap.message.EapMessage.EAP_CODE_REQUEST;
+import static com.android.ike.eap.message.EapMessage.EAP_CODE_SUCCESS;
+import static com.android.ike.eap.message.EapTestMessageDefinitions.EAP_AKA_PRIME_CLIENT_ERROR_UNABLE_TO_PROCESS;
+import static com.android.ike.eap.message.EapTestMessageDefinitions.EAP_RESPONSE_NOTIFICATION_PACKET;
+import static com.android.ike.eap.message.EapTestMessageDefinitions.ID_INT;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+import com.android.ike.eap.EapResult;
+import com.android.ike.eap.EapResult.EapError;
+import com.android.ike.eap.EapResult.EapFailure;
+import com.android.ike.eap.EapResult.EapResponse;
+import com.android.ike.eap.exceptions.EapInvalidRequestException;
+import com.android.ike.eap.message.EapData;
+import com.android.ike.eap.message.EapMessage;
+import com.android.ike.eap.message.simaka.EapAkaTypeData;
+import com.android.ike.eap.message.simaka.EapSimAkaAttribute.AtClientErrorCode;
+import com.android.ike.eap.message.simaka.EapSimAkaTypeData.DecodeResult;
+import com.android.ike.eap.statemachine.EapMethodStateMachine.EapMethodState;
+import com.android.ike.eap.statemachine.EapMethodStateMachine.FinalState;
+
+import org.junit.Test;
+
+public class EapAkaPrimeStateTest extends EapAkaPrimeTest {
+ protected static final String NOTIFICATION_MESSAGE = "test";
+
+ @Test
+ public void testProcessNotification() throws Exception {
+ EapData eapData = new EapData(EAP_NOTIFICATION, NOTIFICATION_MESSAGE.getBytes());
+ EapMessage notification = new EapMessage(EAP_CODE_REQUEST, ID_INT, eapData);
+ EapMethodState preNotification = (EapMethodState) mStateMachine.getState();
+
+ EapResult result = mStateMachine.process(notification);
+ assertEquals(preNotification, mStateMachine.getState());
+ verifyNoMoreInteractions(mMockTelephonyManager, mMockTypeDataDecoder);
+
+ EapResponse eapResponse = (EapResponse) result;
+ assertArrayEquals(EAP_RESPONSE_NOTIFICATION_PACKET, eapResponse.packet);
+ }
+
+ @Test
+ public void testProcessInvalidDecodeResult() throws Exception {
+ EapData eapData = new EapData(EAP_TYPE_AKA_PRIME, DUMMY_EAP_TYPE_DATA);
+ EapMessage eapMessage = new EapMessage(EAP_CODE_REQUEST, ID_INT, eapData);
+ EapMethodState preProcess = (EapMethodState) mStateMachine.getState();
+
+ AtClientErrorCode atClientErrorCode = AtClientErrorCode.UNABLE_TO_PROCESS;
+ DecodeResult<EapAkaTypeData> decodeResult = new DecodeResult<>(atClientErrorCode);
+ when(mMockTypeDataDecoder.decode(eq(DUMMY_EAP_TYPE_DATA))).thenReturn(decodeResult);
+
+ EapResult result = mStateMachine.process(eapMessage);
+ assertEquals(preProcess, mStateMachine.getState());
+ verify(mMockTypeDataDecoder).decode(DUMMY_EAP_TYPE_DATA);
+ verifyNoMoreInteractions(mMockTelephonyManager, mMockTypeDataDecoder);
+
+ EapResponse eapResponse = (EapResponse) result;
+ assertArrayEquals(EAP_AKA_PRIME_CLIENT_ERROR_UNABLE_TO_PROCESS, eapResponse.packet);
+ }
+
+ @Test
+ public void testHandleEapFailure() throws Exception {
+ EapResult result = mStateMachine.process(new EapMessage(EAP_CODE_FAILURE, ID_INT, null));
+ assertTrue(result instanceof EapFailure);
+ assertTrue(mStateMachine.getState() instanceof FinalState);
+ }
+
+ @Test
+ public void testHandleEapSuccess() throws Exception {
+ EapResult result = mStateMachine.process(new EapMessage(EAP_CODE_SUCCESS, ID_INT, null));
+ EapError eapError = (EapError) result;
+ assertTrue(eapError.cause instanceof EapInvalidRequestException);
+ }
+}
diff --git a/tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeTest.java b/tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeTest.java
new file mode 100644
index 00000000..e2ad901d
--- /dev/null
+++ b/tests/iketests/src/java/com/android/ike/eap/statemachine/EapAkaPrimeTest.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.ike.eap.statemachine;
+
+import static android.telephony.TelephonyManager.APPTYPE_USIM;
+
+import static com.android.ike.TestUtils.hexStringToByteArray;
+
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.telephony.TelephonyManager;
+
+import com.android.ike.eap.EapSessionConfig.EapAkaPrimeConfig;
+import com.android.ike.eap.message.simaka.EapAkaPrimeTypeData;
+
+import org.junit.Before;
+
+public class EapAkaPrimeTest {
+ protected static final int SUB_ID = 1;
+ protected static final String NETWORK_NAME = "android.net";
+ protected static final EapAkaPrimeConfig EAP_AKA_PRIME_CONFIG =
+ new EapAkaPrimeConfig(SUB_ID, APPTYPE_USIM, NETWORK_NAME);
+ protected static final byte[] DUMMY_EAP_TYPE_DATA = hexStringToByteArray("112233445566");
+
+ // EAP-Identity = hex("test@android.net")
+ protected static final byte[] EAP_IDENTITY_BYTES =
+ hexStringToByteArray("7465737440616E64726F69642E6E6574");
+
+ protected Context mMockContext;
+ protected TelephonyManager mMockTelephonyManager;
+ protected EapAkaPrimeTypeData.EapAkaPrimeTypeDataDecoder mMockTypeDataDecoder;
+
+ protected EapAkaPrimeMethodStateMachine mStateMachine;
+
+ @Before
+ public void setUp() {
+ mMockContext = mock(Context.class);
+ mMockTelephonyManager = mock(TelephonyManager.class);
+ mMockTypeDataDecoder = mock(EapAkaPrimeTypeData.EapAkaPrimeTypeDataDecoder.class);
+
+ when(mMockContext.getSystemService(eq(Context.TELEPHONY_SERVICE)))
+ .thenReturn(mMockTelephonyManager);
+ when(mMockTelephonyManager.createForSubscriptionId(SUB_ID))
+ .thenReturn(mMockTelephonyManager);
+
+ mStateMachine =
+ new EapAkaPrimeMethodStateMachine(
+ mMockContext,
+ EAP_IDENTITY_BYTES,
+ EAP_AKA_PRIME_CONFIG,
+ mMockTypeDataDecoder);
+
+ verify(mMockContext).getSystemService(eq(Context.TELEPHONY_SERVICE));
+ verify(mMockTelephonyManager).createForSubscriptionId(SUB_ID);
+ }
+}