• 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 <gtest/gtest.h>
17 #include <gmock/gmock.h>
18 
19 #include "user_delegate_mock.h"
20 #include "device_manager_adapter_mock.h"
21 #include "auth_delegate.h"
22 #include "types.h"
23 
24 namespace OHOS::DistributedData {
25 using DmAdapter = OHOS::DistributedData::DeviceManagerAdapter;
26 using DistributedData::UserStatus;
27 using AclParams = OHOS::AppDistributedKv::AclParams;
28 using namespace testing;
29 using namespace std;
30 class AuthDelegateMockTest : 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<DeviceManagerAdapterMock> devMgrAdapterMock = nullptr;
38     static inline shared_ptr<UserDelegateMock> userDelegateMock = nullptr;
39     static inline AuthHandler *authHandler = nullptr;
40 };
41 
SetUpTestCase(void)42 void AuthDelegateMockTest::SetUpTestCase(void)
43 {
44     authHandler = AuthDelegate::GetInstance();
45     devMgrAdapterMock = make_shared<DeviceManagerAdapterMock>();
46     BDeviceManagerAdapter::deviceManagerAdapter = devMgrAdapterMock;
47     userDelegateMock = make_shared<UserDelegateMock>();
48     BUserDelegate::userDelegate = userDelegateMock;
49 }
50 
TearDownTestCase(void)51 void AuthDelegateMockTest::TearDownTestCase(void)
52 {
53     BDeviceManagerAdapter::deviceManagerAdapter = nullptr;
54     devMgrAdapterMock = nullptr;
55     userDelegateMock = nullptr;
56     BUserDelegate::userDelegate = nullptr;
57     authHandler = nullptr;
58 }
59 
SetUp(void)60 void AuthDelegateMockTest::SetUp(void)
61 {}
62 
TearDown(void)63 void AuthDelegateMockTest::TearDown(void)
64 {}
65 
66 /**
67 * @tc.name: CheckAccess001
68 * @tc.desc: Check access.
69 * @tc.type: FUNC
70 * @tc.require:
71 * @tc.author: caozhijun
72 */
73 HWTEST_F(AuthDelegateMockTest, CheckAccess001, testing::ext::TestSize.Level0)
74 {
75     ASSERT_NE(authHandler, nullptr);
76     int localUserId = 1;
77     int peerUserId = 1;
78     std::string peerDevId = "CheckAccess001";
79     AclParams aclParams;
80     UserStatus local;
81     local.id = localUserId;
82     local.isActive = true;
83     UserStatus remote;
84     remote.id = peerUserId;
85     remote.isActive = true;
86     std::vector<UserStatus> localUsers;
87     std::vector<UserStatus> peerUsers;
88     localUsers.push_back(local);
89     peerUsers.push_back(remote);
90     EXPECT_CALL(*userDelegateMock, GetLocalUserStatus()).WillOnce(Return(localUsers));
91     EXPECT_CALL(*userDelegateMock, GetRemoteUserStatus(_)).WillOnce(Return(peerUsers));
92     EXPECT_CALL(*devMgrAdapterMock, IsOHOSType(_)).WillOnce(Return(false));
93     auto result = authHandler->CheckAccess(localUserId, peerUserId, peerDevId, aclParams);
94     EXPECT_FALSE(result.first);
95 }
96 
97 /**
98 * @tc.name: CheckAccess002
99 * @tc.desc: Check access.
100 * @tc.type: FUNC
101 * @tc.require:
102 * @tc.author: caozhijun
103 */
104 HWTEST_F(AuthDelegateMockTest, CheckAccess002, testing::ext::TestSize.Level0)
105 {
106     ASSERT_NE(authHandler, nullptr);
107     int localUserId = 1;
108     int peerUserId = 1;
109     std::string peerDevId = "CheckAccess002";
110     AclParams aclParams;
111     aclParams.authType = static_cast<int32_t>(DistributedKv::AuthType::DEFAULT);
112     UserStatus local;
113     local.id = localUserId;
114     local.isActive = true;
115     std::vector<UserStatus> localUsers = { local };
116     std::vector<UserStatus> peerUsers(localUsers);
117     EXPECT_CALL(*userDelegateMock, GetLocalUserStatus()).WillOnce(Return(localUsers));
118     EXPECT_CALL(*userDelegateMock, GetRemoteUserStatus(_)).WillOnce(Return(peerUsers));
119     EXPECT_CALL(*devMgrAdapterMock, IsOHOSType(_)).WillOnce(Return(true));
120     EXPECT_CALL(*devMgrAdapterMock, IsSameAccount(_, _)).WillOnce(Return(true));
121     auto result = authHandler->CheckAccess(localUserId, peerUserId, peerDevId, aclParams);
122     EXPECT_TRUE(result.first);
123 
124     EXPECT_CALL(*userDelegateMock, GetLocalUserStatus()).WillOnce(Return(localUsers));
125     EXPECT_CALL(*userDelegateMock, GetRemoteUserStatus(_)).WillOnce(Return(peerUsers));
126     EXPECT_CALL(*devMgrAdapterMock, IsOHOSType(_)).WillOnce(Return(true));
127     EXPECT_CALL(*devMgrAdapterMock, IsSameAccount(_, _)).WillOnce(Return(false));
128     EXPECT_CALL(*devMgrAdapterMock, CheckAccessControl(_, _)).WillOnce(Return(true));
129     result = authHandler->CheckAccess(localUserId, peerUserId, peerDevId, aclParams);
130     EXPECT_TRUE(result.first);
131 
132     aclParams.accCaller.bundleName = "com.AuthDelegateMockTest.app";
133     EXPECT_CALL(*userDelegateMock, GetLocalUserStatus()).WillOnce(Return(localUsers));
134     EXPECT_CALL(*userDelegateMock, GetRemoteUserStatus(_)).WillOnce(Return(peerUsers));
135     EXPECT_CALL(*devMgrAdapterMock, IsOHOSType(_)).WillOnce(Return(true));
136     EXPECT_CALL(*devMgrAdapterMock, IsSameAccount(_, _)).WillOnce(Return(false));
137     EXPECT_CALL(*devMgrAdapterMock, CheckAccessControl(_, _)).WillOnce(Return(false));
138     result = authHandler->CheckAccess(localUserId, peerUserId, peerDevId, aclParams);
139     EXPECT_FALSE(result.first);
140 }
141 
142 /**
143 * @tc.name: CheckAccess003
144 * @tc.desc: Check access.
145 * @tc.type: FUNC
146 * @tc.require:
147 * @tc.author: caozhijun
148 */
149 HWTEST_F(AuthDelegateMockTest, CheckAccess003, testing::ext::TestSize.Level0)
150 {
151     ASSERT_NE(authHandler, nullptr);
152     int localUserId = 1;
153     int peerUserId = 1;
154     std::string peerDevId = "CheckAccess003";
155     AclParams aclParams;
156     aclParams.authType = static_cast<int32_t>(DistributedKv::AuthType::IDENTICAL_ACCOUNT);
157     UserStatus local;
158     local.id = localUserId;
159     local.isActive = true;
160     std::vector<UserStatus> localUsers = { local };
161     std::vector<UserStatus> peerUsers(localUsers);
162     EXPECT_CALL(*userDelegateMock, GetLocalUserStatus()).WillOnce(Return(localUsers));
163     EXPECT_CALL(*userDelegateMock, GetRemoteUserStatus(_)).WillOnce(Return(peerUsers));
164     EXPECT_CALL(*devMgrAdapterMock, IsOHOSType(_)).WillOnce(Return(true));
165     EXPECT_CALL(*devMgrAdapterMock, IsSameAccount(_, _)).WillOnce(Return(true));
166     auto result = authHandler->CheckAccess(localUserId, peerUserId, peerDevId, aclParams);
167     EXPECT_TRUE(result.first);
168 
169     aclParams.authType += 1;
170     aclParams.accCaller.bundleName = "com.AuthDelegateTest.app";
171     EXPECT_CALL(*userDelegateMock, GetLocalUserStatus()).WillOnce(Return(localUsers));
172     EXPECT_CALL(*userDelegateMock, GetRemoteUserStatus(_)).WillOnce(Return(peerUsers));
173     EXPECT_CALL(*devMgrAdapterMock, IsOHOSType(_)).WillOnce(Return(true));
174     result = authHandler->CheckAccess(localUserId, peerUserId, peerDevId, aclParams);
175     EXPECT_FALSE(result.second);
176 }
177 }
178