• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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