diff options
| author | 2010-02-17 10:07:49 -0800 | |
|---|---|---|
| committer | 2010-02-17 10:07:49 -0800 | |
| commit | 900ec77d62ad1813ec7c38ddf13519a2f21e23f8 (patch) | |
| tree | be40a415e3d9bfb62556691cd78130592e54879e | |
| parent | af6fdfa4bbeb0700b042694b5832752eec3600eb (diff) | |
| parent | fea87ae1a742c94c50573dcdd50f07e6d56c8015 (diff) | |
Merge "framework: tests: Add some unit-tests for Asec"
| -rw-r--r-- | tests/AndroidTests/AndroidManifest.xml | 5 | ||||
| -rwxr-xr-x | tests/AndroidTests/src/com/android/unit_tests/AsecTests.java | 168 |
2 files changed, 173 insertions, 0 deletions
diff --git a/tests/AndroidTests/AndroidManifest.xml b/tests/AndroidTests/AndroidManifest.xml index 2b6b81e96b50..28f1e73ee357 100644 --- a/tests/AndroidTests/AndroidManifest.xml +++ b/tests/AndroidTests/AndroidManifest.xml @@ -29,6 +29,11 @@ <uses-permission android:name="android.permission.INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.DELETE_PACKAGES" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> + <uses-permission android:name="android.permission.ASEC_ACCESS" /> + <uses-permission android:name="android.permission.ASEC_CREATE" /> + <uses-permission android:name="android.permission.ASEC_DESTROY" /> + <uses-permission android:name="android.permission.ASEC_MOUNT_UNMOUNT" /> + <uses-permission android:name="android.permission.ASEC_RENAME" /> <uses-permission android:name="com.android.unit_tests.permission.TEST_GRANTED" /> <uses-permission android:name="com.google.android.googleapps.permission.ACCESS_GOOGLE_PASSWORD" /> <uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" /> diff --git a/tests/AndroidTests/src/com/android/unit_tests/AsecTests.java b/tests/AndroidTests/src/com/android/unit_tests/AsecTests.java new file mode 100755 index 000000000000..7569d7aa7f7d --- /dev/null +++ b/tests/AndroidTests/src/com/android/unit_tests/AsecTests.java @@ -0,0 +1,168 @@ +/* + * Copyright (C) 2006 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.unit_tests; + +import android.os.storage.IMountService.Stub; + +import android.net.Uri; +import android.os.FileUtils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; + +import android.app.PendingIntent; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.test.AndroidTestCase; +import android.test.suitebuilder.annotation.Suppress; +import android.util.DisplayMetrics; +import android.util.Log; +import android.os.Environment; +import android.os.Handler; +import android.os.IBinder; +import android.os.storage.IMountService; +import android.os.storage.StorageResultCode; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.os.StatFs; +import android.provider.Settings; +import junit.framework.Assert; + +public class AsecTests extends AndroidTestCase { + private static final boolean localLOGV = true; + public static final String TAG="AsecTests"; + + void failStr(String errMsg) { + Log.w(TAG, "errMsg="+errMsg); + } + void failStr(Exception e) { + Log.w(TAG, "e.getMessage="+e.getMessage()); + Log.w(TAG, "e="+e); + } + + @Override + protected void setUp() throws Exception { + super.setUp(); + if (localLOGV) Log.i(TAG, "Cleaning out old test containers"); + cleanupContainers(); + } + + private void cleanupContainers() throws RemoteException { + IMountService ms = getMs(); + String[] containers = ms.getSecureContainerList(); + + for (int i = 0; i < containers.length; i++) { + if (containers[i].startsWith("com.android.unittests.AsecTests.")) { + ms.destroySecureContainer(containers[i]); + } + } + } + + private IMountService getMs() { + IBinder service = ServiceManager.getService("mount"); + if (service != null) { + return IMountService.Stub.asInterface(service); + } else { + Log.e(TAG, "Can't get mount service"); + } + return null; + } + + private boolean isMediaMounted() { + try { + String mPath = Environment.getExternalStorageDirectory().toString(); + String state = getMs().getVolumeState(mPath); + return Environment.MEDIA_MOUNTED.equals(state); + } catch (RemoteException e) { + failStr(e); + return false; + } + } + + public void testCreateContainer() { + Assert.assertTrue(isMediaMounted()); + IMountService ms = getMs(); + try { + int rc = ms.createSecureContainer("com.android.unittests.AsecTests.testCreateContainer", 4, "fat", "none", 1000); + Assert.assertEquals(StorageResultCode.OperationSucceeded, rc); + } catch (Exception e) { + failStr(e); + } + } + + public void testDestroyContainer() { + Assert.assertTrue(isMediaMounted()); + IMountService ms = getMs(); + try { + int rc = ms.createSecureContainer("com.android.unittests.AsecTests.testDestroyContainer", 4, "fat", "none", 1000); + Assert.assertEquals(StorageResultCode.OperationSucceeded, rc); + rc = ms.destroySecureContainer("com.android.unittests.AsecTests.testDestroyContainer"); + Assert.assertEquals(StorageResultCode.OperationSucceeded, rc); + } catch (Exception e) { + failStr(e); + } + } + + public void testMountContainer() { + Assert.assertTrue(isMediaMounted()); + IMountService ms = getMs(); + try { + int rc = ms.createSecureContainer( + "com.android.unittests.AsecTests.testMountContainer", 4, "fat", "none", 1000); + Assert.assertEquals(StorageResultCode.OperationSucceeded, rc); + + rc = ms.unmountSecureContainer("com.android.unittests.AsecTests.testMountContainer"); + Assert.assertEquals(StorageResultCode.OperationSucceeded, rc); + + rc = ms.mountSecureContainer("com.android.unittests.AsecTests.testMountContainer", "none", 1000); + Assert.assertEquals(StorageResultCode.OperationSucceeded, rc); + } catch (Exception e) { + failStr(e); + } + } + + public void testMountBadKey() { + Assert.assertTrue(isMediaMounted()); + IMountService ms = getMs(); + try { + int rc = ms.createSecureContainer( + "com.android.unittests.AsecTests.testMountBadKey", 4, "fat", + "00000000000000000000000000000000", 1000); + Assert.assertEquals(StorageResultCode.OperationSucceeded, rc); + + rc = ms.unmountSecureContainer("com.android.unittests.AsecTests.testMountBadKey"); + Assert.assertEquals(StorageResultCode.OperationSucceeded, rc); + + rc = ms.mountSecureContainer( + "com.android.unittests.AsecTests.testMountBadKey", + "00000000000000000000000000000001", 1001); + Assert.assertEquals(StorageResultCode.OperationFailedInternalError, rc); + + rc = ms.mountSecureContainer( + "com.android.unittests.AsecTests.testMountBadKey", "none", 1001); + Assert.assertEquals(StorageResultCode.OperationFailedInternalError, rc); + } catch (Exception e) { + failStr(e); + } + } +} |