15460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao/*
25460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * Copyright (C) 2006 The Android Open Source Project
35460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *
45460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * Licensed under the Apache License, Version 2.0 (the "License");
55460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * you may not use this file except in compliance with the License.
65460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao * You may obtain a copy of the License at
75460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *
85460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *      http://www.apache.org/licenses/LICENSE-2.0
95460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao *
1022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao * Unless required by applicable law or agreed to in writing, software
11cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao * distributed under the License is distributed on an "AS IS" BASIS,
1237b74a387bb3993387029859c2d9d051c41c724eStephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1337b74a387bb3993387029859c2d9d051c41c724eStephen Hines * See the License for the specific language governing permissions and
1437b74a387bb3993387029859c2d9d051c41c724eStephen Hines * limitations under the License.
15cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao */
1637b74a387bb3993387029859c2d9d051c41c724eStephen Hines
175460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopackage com.android.framework.permission.tests;
185460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
195460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoimport android.app.PackageInstallObserver;
205460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaoimport android.content.pm.PackageManager;
216f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hinesimport android.test.AndroidTestCase;
22cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaoimport android.test.suitebuilder.annotation.SmallTest;
2337b74a387bb3993387029859c2d9d051c41c724eStephen Hines
24f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines/**
25f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines * Verify PackageManager api's that require specific permissions.
26f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines */
275460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liaopublic class PmPermissionsTests extends AndroidTestCase {
285460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    private PackageManager mPm;
2937b74a387bb3993387029859c2d9d051c41c724eStephen Hines    private String mPkgName = "com.android.framework.permission.tests";
305460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
315460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    @Override
3237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    protected void setUp() throws Exception {
336f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines        super.setUp();
346f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines        mPm = getContext().getPackageManager();
356f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines    }
3637b74a387bb3993387029859c2d9d051c41c724eStephen Hines
3737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    /*
3837b74a387bb3993387029859c2d9d051c41c724eStephen Hines     * This test verifies that PackageManger.getPackageSizeInfo enforces permission
396f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines     * android.permission.GET_PACKAGE_SIZE
406f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines     */
4137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    @SmallTest
426f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines    public void testGetPackageSize() {
436f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines        try {
446f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines            mPm.getPackageSizeInfo(mPkgName, null);
456f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines            fail("PackageManager.getPackageSizeInfo" +
466f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines                    "did not throw SecurityException as expected");
476f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines        } catch (SecurityException e) {
4837b74a387bb3993387029859c2d9d051c41c724eStephen Hines            // expected
496f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines        }
506f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines    }
51d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao
52d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao    /*
53d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao     * This test verifies that PackageManger.DeleteApplicationCacheFiles enforces permission
546f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines     * android.permission.DELETE_CACHE_FILES
556f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines     */
566f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines    @SmallTest
5737b74a387bb3993387029859c2d9d051c41c724eStephen Hines    public void testDeleteApplicationCacheFiles() {
58f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines        try {
59f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines            mPm.deleteApplicationCacheFiles(mPkgName, null);
606f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines            fail("PackageManager.deleteApplicationCacheFiles" +
61d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao                    "did not throw SecurityException as expected");
6237b74a387bb3993387029859c2d9d051c41c724eStephen Hines        } catch (SecurityException e) {
63d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao            // expected
64d0fbbb227051be16931a1aa9b4a7722ac039c698Shih-wei Liao        }
6537b74a387bb3993387029859c2d9d051c41c724eStephen Hines    }
6622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
675460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    /*
685460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao     * This test verifies that PackageManger.installPackage enforces permission
6937b74a387bb3993387029859c2d9d051c41c724eStephen Hines     * android.permission.INSTALL_PACKAGES
7037b74a387bb3993387029859c2d9d051c41c724eStephen Hines     */
7137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    private class TestInstallObserver extends PackageInstallObserver {
725460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    }
735460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
7437b74a387bb3993387029859c2d9d051c41c724eStephen Hines    @SmallTest
75affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    public void testInstallPackage() {
76affc150dc44fab1911775a49636d0ce85333b634Zonr Chang        TestInstallObserver observer = new TestInstallObserver();
77affc150dc44fab1911775a49636d0ce85333b634Zonr Chang        try {
78affc150dc44fab1911775a49636d0ce85333b634Zonr Chang            mPm.installPackage(null, observer, 0, null);
79affc150dc44fab1911775a49636d0ce85333b634Zonr Chang            fail("PackageManager.installPackage" +
8022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao                    "did not throw SecurityException as expected");
8137b74a387bb3993387029859c2d9d051c41c724eStephen Hines        } catch (SecurityException e) {
826f75755c9204b1d8817ae5a65a2f7e5af0ec3f70Stephen Hines            // expected
8322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao        }
84affc150dc44fab1911775a49636d0ce85333b634Zonr Chang    }
855460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao
865460a1f25d9ddecb5c70667267d66d51af177a99Shih-wei Liao    /*
8737b74a387bb3993387029859c2d9d051c41c724eStephen Hines     * This test verifies that PackageManger.freeStorage
88     * enforces permission android.permission.CLEAR_APP_CACHE
89     */
90    @SmallTest
91    public void testFreeStorage1() {
92        try {
93            mPm.freeStorage(100000, null);
94            fail("PackageManager.freeStorage " +
95                   "did not throw SecurityException as expected");
96        } catch (SecurityException e) {
97            // expected
98        }
99    }
100
101    /*
102     * This test verifies that PackageManger.freeStorageAndNotify
103     * enforces permission android.permission.CLEAR_APP_CACHE
104     */
105    @SmallTest
106    public void testFreeStorage2() {
107        try {
108            mPm.freeStorageAndNotify(100000, null);
109            fail("PackageManager.freeStorageAndNotify" +
110                    " did not throw SecurityException as expected");
111        } catch (SecurityException e) {
112            // expected
113        }
114    }
115
116    /*
117     * This test verifies that PackageManger.clearApplicationUserData
118     * enforces permission android.permission.CLEAR_APP_USER_DATA
119     */
120    @SmallTest
121    public void testClearApplicationUserData() {
122        try {
123            mPm.clearApplicationUserData(mPkgName, null);
124            fail("PackageManager.clearApplicationUserData" +
125                    "did not throw SecurityException as expected");
126        } catch (SecurityException e) {
127            // expected
128        }
129    }
130
131    /*
132     * This test verifies that PackageManger.deletePackage
133     * enforces permission android.permission.DELETE_PACKAGES
134     */
135    @SmallTest
136    public void testDeletePackage() {
137        try {
138            mPm.deletePackage(mPkgName, null, 0);
139            fail("PackageManager.deletePackage" +
140                   "did not throw SecurityException as expected");
141        } catch (SecurityException e) {
142            // expected
143        }
144    }
145}