19f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu/*
29f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu * Copyright (C) 2006 The Android Open Source Project
39f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu *
49f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu * Licensed under the Apache License, Version 2.0 (the "License");
59f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu * you may not use this file except in compliance with the License.
69f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu * You may obtain a copy of the License at
79f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu *
89f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu *      http://www.apache.org/licenses/LICENSE-2.0
99f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu *
109f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu * Unless required by applicable law or agreed to in writing, software
119f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu * distributed under the License is distributed on an "AS IS" BASIS,
129f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu * See the License for the specific language governing permissions and
149f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu * limitations under the License.
159f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu */
169f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu
179f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapupackage com.android.framework.permission.tests;
189f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu
19f1977b4500e82b72ea6aa5c46d97406a20017cafChristopher Tateimport android.app.PackageInstallObserver;
209f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapuimport android.content.pm.PackageManager;
219f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapuimport android.test.AndroidTestCase;
229f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapuimport android.test.suitebuilder.annotation.SmallTest;
239f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu
249f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu/**
259f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu * Verify PackageManager api's that require specific permissions.
269f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu */
279f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapupublic class PmPermissionsTests extends AndroidTestCase {
28ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    private PackageManager mPm;
29ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    private String mPkgName = "com.android.framework.permission.tests";
309f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu
31ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    @Override
32ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    protected void setUp() throws Exception {
33ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        super.setUp();
34ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        mPm = getContext().getPackageManager();
35ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    }
369f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu
379f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu    /*
389f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu     * This test verifies that PackageManger.getPackageSizeInfo enforces permission
399f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu     * android.permission.GET_PACKAGE_SIZE
409f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu     */
419f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu    @SmallTest
429f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu    public void testGetPackageSize() {
439f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu        try {
44ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            mPm.getPackageSizeInfo(mPkgName, null);
45ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            fail("PackageManager.getPackageSizeInfo" +
46ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu                    "did not throw SecurityException as expected");
47ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        } catch (SecurityException e) {
48ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            // expected
49ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        }
50ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    }
51ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu
52ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    /*
53ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     * This test verifies that PackageManger.DeleteApplicationCacheFiles enforces permission
54ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     * android.permission.DELETE_CACHE_FILES
55ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     */
56ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    @SmallTest
57ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    public void testDeleteApplicationCacheFiles() {
58ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        try {
59ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            mPm.deleteApplicationCacheFiles(mPkgName, null);
60ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            fail("PackageManager.deleteApplicationCacheFiles" +
61ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu                    "did not throw SecurityException as expected");
62ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        } catch (SecurityException e) {
63ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            // expected
64ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        }
65ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    }
66ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu
67ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    /*
68ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     * This test verifies that PackageManger.installPackage enforces permission
69ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     * android.permission.INSTALL_PACKAGES
70ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     */
71f1977b4500e82b72ea6aa5c46d97406a20017cafChristopher Tate    private class TestInstallObserver extends PackageInstallObserver {
72f1977b4500e82b72ea6aa5c46d97406a20017cafChristopher Tate    }
73f1977b4500e82b72ea6aa5c46d97406a20017cafChristopher Tate
74ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    @SmallTest
75ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    public void testInstallPackage() {
76f1977b4500e82b72ea6aa5c46d97406a20017cafChristopher Tate        TestInstallObserver observer = new TestInstallObserver();
77ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        try {
78f1977b4500e82b72ea6aa5c46d97406a20017cafChristopher Tate            mPm.installPackage(null, observer, 0, null);
79ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            fail("PackageManager.installPackage" +
80ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu                    "did not throw SecurityException as expected");
81ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        } catch (SecurityException e) {
82ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            // expected
83ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        }
84ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    }
85ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu
86ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    /*
87ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     * This test verifies that PackageManger.freeStorage
88ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     * enforces permission android.permission.CLEAR_APP_CACHE
89ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     */
90ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    @SmallTest
91ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    public void testFreeStorage1() {
92ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        try {
93ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            mPm.freeStorage(100000, null);
94ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            fail("PackageManager.freeStorage " +
95ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu                   "did not throw SecurityException as expected");
96ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        } catch (SecurityException e) {
97ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            // expected
98ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        }
99ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    }
100ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu
101ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    /*
102ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     * This test verifies that PackageManger.freeStorageAndNotify
103ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     * enforces permission android.permission.CLEAR_APP_CACHE
104ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     */
105ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    @SmallTest
106ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    public void testFreeStorage2() {
107ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        try {
108ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            mPm.freeStorageAndNotify(100000, null);
109ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            fail("PackageManager.freeStorageAndNotify" +
110ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu                    " did not throw SecurityException as expected");
111ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        } catch (SecurityException e) {
112ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            // expected
113ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        }
114ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    }
115ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu
116ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    /*
117ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     * This test verifies that PackageManger.clearApplicationUserData
118ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     * enforces permission android.permission.CLEAR_APP_USER_DATA
119ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     */
120ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    @SmallTest
121ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    public void testClearApplicationUserData() {
122ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        try {
123ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            mPm.clearApplicationUserData(mPkgName, null);
124ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            fail("PackageManager.clearApplicationUserData" +
125ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu                    "did not throw SecurityException as expected");
126ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        } catch (SecurityException e) {
127ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            // expected
128ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        }
129ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    }
130ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu
131ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    /*
132ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     * This test verifies that PackageManger.deletePackage
133ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     * enforces permission android.permission.DELETE_PACKAGES
134ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu     */
135ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    @SmallTest
136ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu    public void testDeletePackage() {
137ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu        try {
138ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            mPm.deletePackage(mPkgName, null, 0);
139ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu            fail("PackageManager.deletePackage" +
140ea196fc50e9711207eddb1f546fec1463b615fc0Suchi Amalapurapu                   "did not throw SecurityException as expected");
1419f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu        } catch (SecurityException e) {
1429f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu            // expected
1439f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu        }
1449f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu    }
1459f2f87d92b3c23680fa7c24dbccf67976d0968d3Suchi Amalapurapu}