1 /**
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "ActsPMSTest.h"
17
18 using namespace std;
19 using namespace testing::ext;
20
21 static PmsInnerApi *g_interface;
22 static PermissionTrans g_systemPers[] = {
23 {
24 "ohos.permission.CAMERA",
25 "for CAMERA use",
26 INUSE,
27 },
28 {
29 "ohos.permission.RECORD_AUDIO",
30 "for RECORD_AUDIO use",
31 ALWAYS,
32 },
33 {
34 "ohos.permission.READ_MEDIA_AUDIO",
35 "for READ_MEDIA_AUDIO use",
36 INUSE,
37 },
38 {
39 "ohos.permission.READ_MEDIA_IMAGES",
40 "for READ_MEDIA_IMAGES use",
41 ALWAYS,
42 },
43 {
44 "ohos.permission.READ_MEDIA_VIDEO",
45 "for READ_MEDIA_VIDEO use",
46 INUSE,
47 },
48 {
49 "ohos.permission.WRITE_MEDIA_AUDIO",
50 "for WRITE_MEDIA_AUDIO use",
51 ALWAYS,
52 },
53 {
54 "ohos.permission.WRITE_MEDIA_IMAGES",
55 "for WRITE_MEDIA_IMAGES use",
56 INUSE,
57 },
58 {
59 "ohos.permission.WRITE_MEDIA_VIDEO",
60 "for WRITE_MEDIA_VIDEO use",
61 ALWAYS,
62 },
63 {
64 "ohos.permission.MODIFY_AUDIO_SETTINGS",
65 "for MODIFY_AUDIO_SETTINGS use",
66 INUSE,
67 },
68 };
69
70 class ActsPMSCheckTest : public testing::Test {
71 protected:
SetUpTestCase(void)72 static void SetUpTestCase(void)
73 {
74 CreateAppDir();
75 IUnknown *iUnknown = SAMGR_GetInstance()->GetFeatureApi(PERMISSION_SERVICE, PERM_INNER);
76 iUnknown->QueryInterface(iUnknown, DEFAULT_VERSION, (void **) &g_interface);
77 setuid(0);
78 }
TearDownTestCase(void)79 static void TearDownTestCase(void) {}
SetUp()80 virtual void SetUp() {}
TearDown()81 virtual void TearDown()
82 {
83 DeletePermissions(TEST_APP_ID);
84 DeletePermissions(TEST_APP_ID2);
85 DeletePermissions(SUBTEST_APP_ID);
86 UnLoadPermissions(TEST_TASKID);
87 UnLoadPermissions(SUBTEST_TASKID);
88 }
89 };
90
91 /**
92 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_1390
93 * @tc.name check permissions to large and small PIDs
94 * @tc.desc [C- SOFTWARE -0200]
95 */
HWTEST_F(ActsPMSCheckTest, testSecPMPMS_1390, Function | MediumTest | Level2)96 HWTEST_F(ActsPMSCheckTest, testSecPMPMS_1390, Function | MediumTest | Level2)
97 {
98 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
99 LoadPermissions(TEST_APP_ID, MAX_PID);
100 g_interface->GrantRuntimePermission(MAX_PID, g_systemPers[0].name);
101 int ret = g_interface->CheckPermission(MAX_PID, g_systemPers[0].name);
102 EXPECT_EQ(ret, GRANTED) << "checkperm ret = " << ret << endl;
103 UnLoadPermissions(MAX_PID);
104 LoadPermissions(TEST_APP_ID, MIN_PID);
105 g_interface->GrantRuntimePermission(MIN_PID, g_systemPers[1].name);
106 ret = g_interface->CheckPermission(MIN_PID, g_systemPers[1].name);
107 EXPECT_EQ(ret, GRANTED) << "checkperm ret = " << ret << endl;
108 UnLoadPermissions(MIN_PID);
109 DeletePermissions(TEST_APP_ID);
110 }
111
112 /**
113 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_1400
114 * @tc.name check system_grant permissions
115 * @tc.desc [C- SECURITY -1100]
116 */
HWTEST_F(ActsPMSCheckTest, testSecPMPMS_1400, Function | MediumTest | Level0)117 HWTEST_F(ActsPMSCheckTest, testSecPMPMS_1400, Function | MediumTest | Level0)
118 {
119 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
120 LoadPermissions(TEST_APP_ID, TEST_TASKID);
121 g_interface->GrantRuntimePermission(TEST_TASKID, g_systemPers[SYS_PERM_NUM - 1].name);
122 int ret = g_interface->CheckPermission(TEST_TASKID, g_systemPers[SYS_PERM_NUM - 1].name);
123 EXPECT_EQ(ret, GRANTED) << "checkperm ret = " << ret << endl;
124 UnLoadPermissions(TEST_TASKID);
125 DeletePermissions(TEST_APP_ID);
126 }
127
128 /**
129 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_1410
130 * @tc.name check granted user_grant permissions
131 * @tc.desc [C- SECURITY -1100]
132 */
HWTEST_F(ActsPMSCheckTest, testSecPMPMS_1410, Function | MediumTest | Level0)133 HWTEST_F(ActsPMSCheckTest, testSecPMPMS_1410, Function | MediumTest | Level0)
134 {
135 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
136 LoadPermissions(TEST_APP_ID, TEST_TASKID);
137 g_interface->GrantRuntimePermission(TEST_TASKID, g_systemPers[0].name);
138 int ret = g_interface->CheckPermission(TEST_TASKID, g_systemPers[0].name);
139 EXPECT_EQ(ret, GRANTED) << "checkperm ret = " << ret << endl;
140 UnLoadPermissions(TEST_TASKID);
141 DeletePermissions(TEST_APP_ID);
142 }
143
144 /**
145 * @tc.number SUB_SEC_AppSEC_PermissionMgmt_PMS_1420
146 * @tc.name check user_grant permissions
147 * @tc.desc [C- SECURITY -1100]
148 */
HWTEST_F(ActsPMSCheckTest, testSecPMPMS_1420, Function | MediumTest | Level0)149 HWTEST_F(ActsPMSCheckTest, testSecPMPMS_1420, Function | MediumTest | Level0)
150 {
151 SaveOrUpdatePermissions(TEST_APP_ID, g_systemPers, SYS_PERM_NUM, FIRST_INSTALL);
152 LoadPermissions(TEST_APP_ID, TEST_TASKID);
153 int ret = g_interface->CheckPermission(TEST_TASKID, g_systemPers[0].name);
154 EXPECT_EQ(ret, NOT_GRANTED) << "checkperm ret = " << ret << endl;
155 UnLoadPermissions(TEST_TASKID);
156 DeletePermissions(TEST_APP_ID);
157 }