summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author San Mehat <san@google.com> 2010-02-17 10:07:49 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2010-02-17 10:07:49 -0800
commit900ec77d62ad1813ec7c38ddf13519a2f21e23f8 (patch)
treebe40a415e3d9bfb62556691cd78130592e54879e
parentaf6fdfa4bbeb0700b042694b5832752eec3600eb (diff)
parentfea87ae1a742c94c50573dcdd50f07e6d56c8015 (diff)
Merge "framework: tests: Add some unit-tests for Asec"
-rw-r--r--tests/AndroidTests/AndroidManifest.xml5
-rwxr-xr-xtests/AndroidTests/src/com/android/unit_tests/AsecTests.java168
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);
+ }
+ }
+}