1 /*
2 * Copyright (C) 2024 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 "ringtone_permission_utils_test.h"
17
18 #include <algorithm>
19
20 #include "access_token.h"
21 #include "accesstoken_kit.h"
22 #include "ipc_skeleton.h"
23 #include "nativetoken_kit.h"
24 #include "os_account_manager.h"
25 #define private public
26 #include "permission_utils.h"
27 #undef private
28 #include "ringtone_errno.h"
29 #include "ringtone_log.h"
30 #include "token_setproc.h"
31
32 using std::string;
33 using namespace testing::ext;
34
35 namespace OHOS {
36 namespace Media {
37 const string DEFAULT_STR = "";
38
SetUpTestCase()39 void RingtonePermissionUtilsTest::SetUpTestCase() {}
40
TearDownTestCase()41 void RingtonePermissionUtilsTest::TearDownTestCase() {}
SetUp()42 void RingtonePermissionUtilsTest::SetUp()
43 {
44 const char *permis[1];
45 permis[0] = "ohos.permission.ACCESS_RINGTONE_RESOURCE";
46 NativeTokenInfoParams infoInstance = {
47 .dcapsNum = 0,
48 .permsNum = 1,
49 .aclsNum = 0,
50 .dcaps = NULL,
51 .perms = permis,
52 .acls = NULL,
53 .processName = "native_ringtone_tdd",
54 .aplStr = "system_basic",
55 };
56 uint64_t tokenId = GetAccessTokenId(&infoInstance);
57 int32_t uid = IPCSkeleton::GetCallingUid();
58 int32_t userId = 0;
59 AccountSA::OsAccountManager::GetOsAccountLocalIdFromUid(uid, userId);
60 SetSelfTokenID(tokenId);
61 OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
62 }
TearDown(void)63 void RingtonePermissionUtilsTest::TearDown(void) {}
64
65 class RingtoneUtilsTest : public AppExecFwk::IBundleMgr {
66 public:
AsObject()67 sptr<IRemoteObject> AsObject() override { return nullptr; }
68 };
69
70 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_CheckCallerPermission_test_001, TestSize.Level0)
71 {
72 bool ret = RingtonePermissionUtils::CheckCallerPermission(DEFAULT_STR);
73 EXPECT_EQ(ret, false);
74 string permissions = PERM_WRITE_RINGTONE;
75 ret = RingtonePermissionUtils::CheckCallerPermission(permissions);
76 EXPECT_EQ(ret, false);
77 }
78
79 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_CheckCallerPermission_test_002, TestSize.Level0)
80 {
81 std::vector<string> permissionVec = { DEFAULT_STR, PERM_WRITE_RINGTONE };
82 bool ret = RingtonePermissionUtils::CheckCallerPermission(permissionVec);
83 EXPECT_EQ(ret, false);
84 std::vector<string> permsVec;
85 ret = RingtonePermissionUtils::CheckCallerPermission(permsVec);
86 EXPECT_EQ(ret, false);
87 }
88
89 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_GetSysBundleManager_test_001, TestSize.Level0)
90 {
91 auto ret = RingtonePermissionUtils::GetSysBundleManager();
92 EXPECT_EQ(ret, nullptr);
93 }
94
95 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_CheckHasPermission_test_001, TestSize.Level0)
96 {
97 std::vector<string> perms = { DEFAULT_STR, PERM_WRITE_RINGTONE };
98 bool ret = RingtonePermissionUtils::CheckHasPermission(perms);
99 EXPECT_EQ(ret, false);
100 std::vector<string> permsVec;
101 ret = RingtonePermissionUtils::CheckHasPermission(permsVec);
102 EXPECT_EQ(ret, false);
103 }
104
105 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_GetClientBundle_test_001, TestSize.Level0)
106 {
107 string bundleName = "audio";
108 const int uid = 0;
109 RingtonePermissionUtils::GetClientBundle(uid, bundleName);
110 EXPECT_EQ(bundleName, DEFAULT_STR);
111 }
112
113 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_GetTokenId_test_001, TestSize.Level0)
114 {
115 uint32_t toneId = RingtonePermissionUtils::GetTokenId();
116 EXPECT_EQ((toneId > 0), true);
117 }
118
119 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_IsSystemApp_test_001, TestSize.Level0)
120 {
121 bool ret = RingtonePermissionUtils::IsSystemApp();
122 EXPECT_EQ(ret, false);
123 ret = RingtonePermissionUtils::IsNativeSAApp();
124 EXPECT_TRUE(ret);
125 }
126
127 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_CheckIsSystemAppByUid_test_001, TestSize.Level0)
128 {
129 bool ret = RingtonePermissionUtils::CheckIsSystemAppByUid();
130 EXPECT_EQ(ret, false);
131 }
132
133 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_GetPackageNameByBundleName_test_001, TestSize.Level0)
134 {
135 const string bundleName = "/com.ohos.ringtonelibrary.ringtonelibrarydata";
136 string packageName = RingtonePermissionUtils::GetPackageNameByBundleName(bundleName);
137 EXPECT_EQ(packageName, DEFAULT_STR);
138 }
139
140 /*
141 * Feature: Service
142 * Function: Test RingtonePermissionUtils with CheckCallerPermission
143 * SubFunction: NA
144 * FunctionPoints: NA
145 * EnvConditions: NA
146 * CaseDescription: Test CheckCallerPermission for normal branches
147 */
148 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_CheckCallerPermission_test_003, TestSize.Level0)
149 {
150 string permissions = "ohos.permission.ACCESS_RINGTONE_RESOURCE";
151 bool ret = RingtonePermissionUtils::CheckCallerPermission(permissions);
152 EXPECT_TRUE(ret);
153 }
154
155 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_CheckCallerPermission_test_004, TestSize.Level0)
156 {
157 string permissions = "ohos.permission.ACCESS_RINGTONE_RESOURCE_TEST";
158 bool ret = RingtonePermissionUtils::CheckCallerPermission(permissions);
159 EXPECT_FALSE(ret);
160 }
161
162 /*
163 * Feature: Service
164 * Function: Test RingtonePermissionUtils with CheckHasPermission
165 * SubFunction: NA
166 * FunctionPoints: NA
167 * EnvConditions: NA
168 * CaseDescription: Test CheckHasPermission for normal branches
169 */
170 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_CheckHasPermission_test_002, TestSize.Level0)
171 {
172 std::vector<string> perms = { DEFAULT_STR, PERM_WRITE_RINGTONE, "ohos.permission.ACCESS_RINGTONE_RESOURCE" };
173 bool ret = RingtonePermissionUtils::CheckHasPermission(perms);
174 EXPECT_TRUE(ret);
175 std::vector<string> permissions = { "ohos.permission.ACCESS_RINGTONE_RESOURCE" };
176 ret = RingtonePermissionUtils::CheckCallerPermission(permissions);
177 EXPECT_TRUE(ret);
178 }
179
180 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_GetSysBundleManager_test_002, TestSize.Level0)
181 {
182 RingtonePermissionUtils::bundleManager_ = new RingtoneUtilsTest();
183 ASSERT_NE(RingtonePermissionUtils::bundleManager_, nullptr);
184 auto ret = RingtonePermissionUtils::GetSysBundleManager();
185 EXPECT_NE(ret, nullptr);
186 }
187
188 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_GetPackageNameByBundleName_test_002, TestSize.Level0)
189 {
190 RingtonePermissionUtils::bundleManager_ = new RingtoneUtilsTest();
191 ASSERT_NE(RingtonePermissionUtils::bundleManager_, nullptr);
192 auto ret = RingtonePermissionUtils::GetSysBundleManager();
193 EXPECT_NE(ret, nullptr);
194 const string bundleName = "/com.ohos.ringtonelibrary.ringtonelibrarydata";
195 auto ret1 = RingtonePermissionUtils::GetPackageNameByBundleName(bundleName);
196 EXPECT_EQ(ret1, "");
197 }
198
199 HWTEST_F(RingtonePermissionUtilsTest, ringtonePermissionUtils_CheckIsSystemAppByUid_test_002, TestSize.Level0)
200 {
201 RingtonePermissionUtils::bundleManager_ = new RingtoneUtilsTest();
202 ASSERT_NE(RingtonePermissionUtils::bundleManager_, nullptr);
203 auto ret = RingtonePermissionUtils::GetSysBundleManager();
204 EXPECT_NE(ret, nullptr);
205 bool ret1 = RingtonePermissionUtils::CheckIsSystemAppByUid();
206 EXPECT_EQ(ret1, false);
207 }
208 } // namespace Media
209 } // namespace OHOS
210