• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 <gmock/gmock.h>
17 #include <gtest/gtest.h>
18 #include "access_token_mock.h"
19 #include "meta_data_manager_mock.h"
20 #include "permit_delegate.h"
21 #include "metadata/store_meta_data.h"
22 #include "metadata/appid_meta_data.h"
23 
24 namespace OHOS::DistributedData {
25 using namespace OHOS::Security::AccessToken;
26 using namespace std;
27 using namespace testing;
28 using ActiveParam = DistributedDB::ActivationCheckParam;
29 using CheckParam = DistributedDB::PermissionCheckParam;
30 class PermitDelegateMockTest : public testing::Test {
31 public:
32     static void SetUpTestCase(void);
33     static void TearDownTestCase(void);
34     void SetUp();
35     void TearDown();
36 public:
37     static inline shared_ptr<AccessTokenKitMock> accessTokenKitMock = nullptr;
38     static inline shared_ptr<MetaDataManagerMock> metaDataMgrMock = nullptr;
39 };
40 
SetUpTestCase(void)41 void PermitDelegateMockTest::SetUpTestCase(void)
42 {
43     accessTokenKitMock = make_shared<AccessTokenKitMock>();
44     BAccessTokenKit::accessTokenkit = accessTokenKitMock;
45     metaDataMgrMock = make_shared<MetaDataManagerMock>();
46     BMetaDataManager::metaDataManager = metaDataMgrMock;
47 }
48 
TearDownTestCase(void)49 void PermitDelegateMockTest::TearDownTestCase(void)
50 {
51     BAccessTokenKit::accessTokenkit = nullptr;
52     accessTokenKitMock = nullptr;
53     BMetaDataManager::metaDataManager = nullptr;
54     metaDataMgrMock = nullptr;
55 }
56 
SetUp(void)57 void PermitDelegateMockTest::SetUp(void)
58 {}
59 
TearDown(void)60 void PermitDelegateMockTest::TearDown(void)
61 {}
62 
63 /**
64   * @tc.name: SyncActivate001
65   * @tc.desc: sync Activate.
66   * @tc.type: FUNC
67   * @tc.require:
68   * @tc.author: caozhijun
69   */
70 HWTEST_F(PermitDelegateMockTest, SyncActivate001, testing::ext::TestSize.Level0)
71 {
72     ActiveParam activeParam = {
73         .userId = "activeparam",
74         .appId = "appid",
75         .storeId = "storeid",
76         .subUserId = "subactiveparam",
77         .instanceId = 1
78     };
79     PermitDelegate::GetInstance().Init();
80     bool result = PermitDelegate::GetInstance().SyncActivate(activeParam);
81     EXPECT_FALSE(result);
82 }
83 
84 
85 /**
86   * @tc.name: SyncActivate002
87   * @tc.desc: sync Activate.
88   * @tc.type: FUNC
89   * @tc.require:
90   * @tc.author: caozhijun
91   */
92 HWTEST_F(PermitDelegateMockTest, SyncActivate002, testing::ext::TestSize.Level0)
93 {
94     ActiveParam activeParam = {
95         .userId = "1",
96         .appId = "",
97         .storeId = "",
98         .subUserId = "subuserid",
99         .instanceId = 0
100     };
101     EXPECT_CALL(*accessTokenKitMock, GetTokenTypeFlag(_)).Times(AnyNumber());
102     bool result = PermitDelegate::GetInstance().SyncActivate(activeParam);
103     EXPECT_FALSE(result);
104 }
105 
106 /**
107   * @tc.name: VerifyPermission_001
108   * @tc.desc: verify permission.
109   * @tc.type: FUNC
110   * @tc.require:
111   * @tc.author: caozhijun
112   */
113 HWTEST_F(PermitDelegateMockTest, VerifyPermission_001, testing::ext::TestSize.Level0)
114 {
115     std::string permission = "";
116     uint32_t tokenId = 1;
117     bool result = PermitDelegate::GetInstance().VerifyPermission(permission, tokenId);
118     EXPECT_TRUE(result);
119 }
120 
121 /**
122   * @tc.name: VerifyPermission_002
123   * @tc.desc: verify permission.
124   * @tc.type: FUNC
125   * @tc.require:
126   * @tc.author: caozhijun
127   */
128 HWTEST_F(PermitDelegateMockTest, VerifyPermission_002, testing::ext::TestSize.Level0)
129 {
130     std::string permission = "premmit002";
131     uint32_t tokenId = 1;
132     EXPECT_CALL(*accessTokenKitMock, VerifyAccessToken(_, _))
133         .WillOnce(Return(PermissionState::PERMISSION_GRANTED));
134     bool result = PermitDelegate::GetInstance().VerifyPermission(permission, tokenId);
135     EXPECT_TRUE(result);
136 }
137 
138 /**
139   * @tc.name: VerifyPermission_003
140   * @tc.desc: verify permission.
141   * @tc.type: FUNC
142   * @tc.require:
143   * @tc.author: caozhijun
144   */
145 HWTEST_F(PermitDelegateMockTest, VerifyPermission_003, testing::ext::TestSize.Level0)
146 {
147     std::string permission = "premmit003";
148     uint32_t tokenId = 0;
149     EXPECT_CALL(*accessTokenKitMock, VerifyAccessToken(_, _))
150         .WillOnce(Return(PermissionState::PERMISSION_DENIED));
151     bool result = PermitDelegate::GetInstance().VerifyPermission(permission, tokenId);
152     EXPECT_FALSE(result);
153 }
154 
155 /**
156   * @tc.name: VerifyPermission001
157   * @tc.desc: verify permission.
158   * @tc.type: OVERRIDE FUNC
159   * @tc.require:
160   * @tc.author: caozhijun
161   */
162 HWTEST_F(PermitDelegateMockTest, VerifyPermission001, testing::ext::TestSize.Level0)
163 {
164     bool result = PermitDelegate::GetInstance().appId2BundleNameMap_.Insert("Permission001", "");
165     ASSERT_TRUE(result);
166     AppIDMetaData appMeta("permitdelegatemocktestId", "com.permitdelegatetest.app");
167     EXPECT_CALL(*metaDataMgrMock, LoadMeta(_, _, _)).WillOnce(DoAll(SetArgReferee<1>(appMeta), Return(true)));
168     CheckParam checkParam = {
169         .appId = "permitdelegatemocktestId",
170         .userId = "userid",
171         .storeId = "storeid",
172         .deviceId = "deviceid",
173         .instanceId = 1
174     };
175     uint8_t flag = 1;
176     EXPECT_CALL(*metaDataMgrMock, LoadMeta(_, _, false)).WillOnce(Return(false));
177     result = PermitDelegate::GetInstance().VerifyPermission(checkParam, flag);
178     EXPECT_FALSE(result);
179 }
180 
181 /**
182   * @tc.name: VerifyPermission002
183   * @tc.desc: verify permission.
184   * @tc.type: OVERRIDE FUNC
185   * @tc.require:
186   * @tc.author: caozhijun
187   */
188 HWTEST_F(PermitDelegateMockTest, VerifyPermission002, testing::ext::TestSize.Level0)
189 {
190     std::string key = "Permission002";
191     std::string value = "com.permitDelegateUnitTest.app";
192     PermitDelegate::GetInstance().appId2BundleNameMap_.Insert(key, value);
193     auto ret = PermitDelegate::GetInstance().appId2BundleNameMap_.Find(key);
194     ASSERT_TRUE(ret.second == value);
195     CheckParam checkParam = {
196         .appId = "permitdelegatemocktestId2",
197         .userId = "userid2",
198         .storeId = "storeid2",
199         .deviceId = "deviceid2",
200         .instanceId = 0
201     };
202     uint8_t flag = 1;
203     EXPECT_CALL(*metaDataMgrMock, LoadMeta(_, _, _)).WillRepeatedly(Return(true));
204     EXPECT_CALL(*accessTokenKitMock, VerifyAccessToken(_, _))
205         .WillOnce(Return(PermissionState::PERMISSION_GRANTED));
206     bool result = PermitDelegate::GetInstance().VerifyPermission(checkParam, flag);
207     EXPECT_TRUE(result);
208 }
209 }