From e26804208ce22e6118333c7f39f9d21adc1d702b Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Mon, 25 Jan 2016 12:24:27 +0000 Subject: [PATCH] Test: parcel marshalling for user credentials page Unit test to verify that the internal Credential that gets passed to dialogs for removing said credential is actually a valid Parcelable object, since it's hard to provoke a marshal/unmarshal in real-world usage (but not impossible). Bug: 22541933 Change-Id: I780ca2d7b01fc6081b9ea8b2810cfc97f0433a86 --- .../android/settings/UserCredentialsSettings.java | 4 +- .../com/android/settings/UserCredentialsTests.java | 52 ++++++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 tests/src/com/android/settings/UserCredentialsTests.java diff --git a/src/com/android/settings/UserCredentialsSettings.java b/src/com/android/settings/UserCredentialsSettings.java index 7e9ca45b45..e4ce267478 100644 --- a/src/com/android/settings/UserCredentialsSettings.java +++ b/src/com/android/settings/UserCredentialsSettings.java @@ -194,8 +194,8 @@ public class UserCredentialsSettings extends InstrumentedFragment implements OnI } } - private static class Credential implements Parcelable { - private static enum Type { + static class Credential implements Parcelable { + static enum Type { CA_CERTIFICATE (Credentials.CA_CERTIFICATE), USER_CERTIFICATE (Credentials.USER_CERTIFICATE), USER_PRIVATE_KEY (Credentials.USER_PRIVATE_KEY), diff --git a/tests/src/com/android/settings/UserCredentialsTests.java b/tests/src/com/android/settings/UserCredentialsTests.java new file mode 100644 index 0000000000..da1e58b1c6 --- /dev/null +++ b/tests/src/com/android/settings/UserCredentialsTests.java @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2016 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.settings; + +import android.os.Parcel; +import android.test.InstrumentationTestCase; +import android.test.InstrumentationTestRunner; +import android.test.suitebuilder.annotation.LargeTest; + +import static com.android.settings.UserCredentialsSettings.Credential; + +/** + * User credentials settings fragment tests + * + * To run the test, use command: + * adb shell am instrument -e class com.android.settings.security.UserCredentialsTests + * -w com.android.settings.tests/android.test.InstrumentationTestRunner + * + */ +public class UserCredentialsTests extends InstrumentationTestCase { + private static final String TAG = "UserCredentialsTests"; + + public void testCredentialIsParcelable() { + final String alias = "credential-test-alias"; + Credential c = new Credential(alias); + + c.storedTypes.add(Credential.Type.CA_CERTIFICATE); + c.storedTypes.add(Credential.Type.USER_SECRET_KEY); + + Parcel p = Parcel.obtain(); + c.writeToParcel(p, /* flags */ 0); + p.setDataPosition(0); + + Credential r = Credential.CREATOR.createFromParcel(p); + assertEquals(c.alias, r.alias); + assertEquals(c.storedTypes, r.storedTypes); + } +} -- 2.11.0