1 /*
2 * Copyright (c) 2022 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 "dms_token_callback_test.h"
17
18 #include "distributed_sched_test_util.h"
19 #include "dms_token_callback.h"
20 #include "dtbschedmgr_log.h"
21 #include "multi_user_manager.h"
22 #include "test_log.h"
23
24 using namespace testing;
25 using namespace testing::ext;
26
27 namespace OHOS {
28 namespace DistributedSchedule {
29 namespace {
30 const char* DISTSCHED_PROCESS_NAME = "distributedsched";
31 const char* FOUNDATION_PROCESS_NAME = "foundation";
32 const char* INVALID_PROCESS_NAME = "invalid_process";
33 }
34
SetUpTestCase()35 void DmsTokenCallbackTest::SetUpTestCase()
36 {
37 DTEST_LOG << "DmsTokenCallbackTest::SetUpTestCase" << std::endl;
38 multiUserMgrMock_ = std::make_shared<MultiUserManagerMock>();
39 MultiUserManagerMock::multiUserMgrMock = multiUserMgrMock_;
40 }
41
TearDownTestCase()42 void DmsTokenCallbackTest::TearDownTestCase()
43 {
44 DTEST_LOG << "DmsTokenCallbackTest::TearDownTestCase" << std::endl;
45 MultiUserManagerMock::multiUserMgrMock = nullptr;
46 multiUserMgrMock_ = nullptr;
47 }
48
TearDown()49 void DmsTokenCallbackTest::TearDown()
50 {
51 DTEST_LOG << "DmsTokenCallbackTest::TearDown" << std::endl;
52 }
53
SetUp()54 void DmsTokenCallbackTest::SetUp()
55 {
56 DTEST_LOG << "DmsTokenCallbackTest::SetUp" << std::endl;
57 dmsTokenCallback_ = new DmsTokenCallback();
58 DistributedSchedUtil::MockProcess(FOUNDATION_PROCESS_NAME);
59 }
60
61 /**
62 * @tc.name: SendResultTest_001
63 * @tc.desc: call SendResult from distributedsched
64 * @tc.type: FUNC
65 * @tc.require: I5RWIV
66 */
67 HWTEST_F(DmsTokenCallbackTest, SendResultTest_001, TestSize.Level3)
68 {
69 DTEST_LOG << "DmsTokenCallbackTest SendResultTest_001 begin" << std::endl;
70 ASSERT_NE(dmsTokenCallback_, nullptr);
71 AAFwk::Want want;
72 int32_t callerUid = 0;
73 int32_t requestCode = 0;
74 uint32_t accessToken = 0;
75 int32_t resultCode = 0;
76 DistributedSchedUtil::MockProcess(DISTSCHED_PROCESS_NAME);
77 EXPECT_CALL(*multiUserMgrMock_, IsCallerForeground(_)).WillRepeatedly(Return(true));
78 int32_t result = dmsTokenCallback_->SendResult(want, callerUid, requestCode, accessToken, resultCode);
79 EXPECT_EQ(result, INVALID_PARAMETERS_ERR);
80 DTEST_LOG << "DmsTokenCallbackTest SendResultTest_001 end" << std::endl;
81 }
82
83 /**
84 * @tc.name: SendResultTest_002
85 * @tc.desc: call SendResult from foundation
86 * @tc.type: FUNC
87 * @tc.require: I5RWIV
88 */
89 HWTEST_F(DmsTokenCallbackTest, SendResultTest_002, TestSize.Level3)
90 {
91 DTEST_LOG << "DmsTokenCallbackTest SendResultTest_002 begin" << std::endl;
92 ASSERT_NE(dmsTokenCallback_, nullptr);
93 AAFwk::Want want;
94 int32_t callerUid = 0;
95 int32_t requestCode = 0;
96 uint32_t accessToken = 0;
97 int32_t resultCode = 0;
98 int32_t result = dmsTokenCallback_->SendResult(want, callerUid, requestCode, accessToken, resultCode);
99 EXPECT_EQ(result, INVALID_PARAMETERS_ERR);
100 DTEST_LOG << "DmsTokenCallbackTest SendResultTest_002 end" << std::endl;
101 }
102
103 /**
104 * @tc.name: SendResultTest_003
105 * @tc.desc: call SendResult with local device id
106 * @tc.type: FUNC
107 * @tc.require: I5WKCK
108 */
109 HWTEST_F(DmsTokenCallbackTest, SendResultTest_003, TestSize.Level3)
110 {
111 DTEST_LOG << "DmsTokenCallbackTest SendResultTest_003 begin" << std::endl;
112 ASSERT_NE(dmsTokenCallback_, nullptr);
113 AAFwk::Want want;
114 string localDeviceId;
115 dmsTokenCallback_->GetLocalDeviceId(localDeviceId);
116 want.SetParam("dmsSrcNetworkId", localDeviceId);
117 int32_t callerUid = 0;
118 int32_t requestCode = 0;
119 uint32_t accessToken = 0;
120 int32_t resultCode = 0;
121 int32_t result = dmsTokenCallback_->SendResult(want, callerUid, requestCode, accessToken, resultCode);
122 EXPECT_EQ(result, INVALID_PARAMETERS_ERR);
123 DTEST_LOG << "DmsTokenCallbackTest SendResultTest_003 end" << std::endl;
124 }
125
126 /**
127 * @tc.name: SendResultTest_004
128 * @tc.desc: call SendResult from invalid process
129 * @tc.type: FUNC
130 * @tc.require: I64FU7
131 */
132 HWTEST_F(DmsTokenCallbackTest, SendResultTest_004, TestSize.Level3)
133 {
134 DTEST_LOG << "DmsTokenCallbackTest SendResultTest_004 begin" << std::endl;
135 ASSERT_NE(dmsTokenCallback_, nullptr);
136 AAFwk::Want want;
137 int32_t callerUid = 0;
138 int32_t requestCode = 0;
139 uint32_t accessToken = 0;
140 int32_t resultCode = 0;
141 DistributedSchedUtil::MockProcess(INVALID_PROCESS_NAME);
142 int32_t result = dmsTokenCallback_->SendResult(want, callerUid, requestCode, accessToken, resultCode);
143 EXPECT_EQ(result, INVALID_PARAMETERS_ERR);
144 DTEST_LOG << "DmsTokenCallbackTest SendResultTest_004 end" << std::endl;
145 }
146
147 /**
148 * @tc.name: SendResultTest_005
149 * @tc.desc: call SendResult with remote device id
150 * @tc.type: FUNC
151 * @tc.require: I64FU7
152 */
153 HWTEST_F(DmsTokenCallbackTest, SendResultTest_005, TestSize.Level3)
154 {
155 DTEST_LOG << "DmsTokenCallbackTest SendResultTest_005 begin" << std::endl;
156 ASSERT_NE(dmsTokenCallback_, nullptr);
157 AAFwk::Want want;
158 string remoteDeviceId = "remoteDeviceId";
159 want.SetParam("dmsSrcNetworkId", remoteDeviceId);
160 int32_t callerUid = 0;
161 int32_t requestCode = 0;
162 uint32_t accessToken = 0;
163 int32_t resultCode = 0;
164 int32_t result = dmsTokenCallback_->SendResult(want, callerUid, requestCode, accessToken, resultCode);
165 EXPECT_EQ(result, INVALID_PARAMETERS_ERR);
166 DTEST_LOG << "DmsTokenCallbackTest SendResultTest_005 end" << std::endl;
167 }
168
169 /**
170 * @tc.name: SendResultTest_006
171 * @tc.desc: call SendResult with user is not foreground
172 * @tc.type: FUNC
173 */
174 HWTEST_F(DmsTokenCallbackTest, SendResultTest_006, TestSize.Level3)
175 {
176 DTEST_LOG << "DmsTokenCallbackTest SendResultTest_006 begin" << std::endl;
177 ASSERT_NE(dmsTokenCallback_, nullptr);
178 AAFwk::Want want;
179 string remoteDeviceId = "remoteDeviceId";
180 want.SetParam("dmsSrcNetworkId", remoteDeviceId);
181 int32_t callerUid = 0;
182 int32_t requestCode = 0;
183 uint32_t accessToken = 0;
184 int32_t resultCode = 0;
185 EXPECT_CALL(*multiUserMgrMock_, IsCallerForeground(_)).WillOnce(Return(false));
186 int32_t result = dmsTokenCallback_->SendResult(want, callerUid, requestCode, accessToken, resultCode);
187 EXPECT_EQ(result, DMS_NOT_FOREGROUND_USER);
188 DTEST_LOG << "DmsTokenCallbackTest SendResultTest_006 end" << std::endl;
189 }
190
191 /**
192 * @tc.name: CheckDeviceIdTest_001
193 * @tc.desc: call CheckDeviceId with empty deviceId
194 * @tc.type: FUNC
195 * @tc.require: I5RWIV
196 */
197 HWTEST_F(DmsTokenCallbackTest, CheckDeviceIdTest_001, TestSize.Level3)
198 {
199 DTEST_LOG << "DmsTokenCallbackTest CheckDeviceIdTest_001 begin" << std::endl;
200 ASSERT_NE(dmsTokenCallback_, nullptr);
201 std::string localDeviceId;
202 std::string remoteDeviceId;
203 bool result = dmsTokenCallback_->CheckDeviceId(localDeviceId, remoteDeviceId);
204 EXPECT_EQ(result, false);
205 DTEST_LOG << "DmsTokenCallbackTest CheckDeviceIdTest_001 end" << std::endl;
206 }
207
208 /**
209 * @tc.name: CheckDeviceIdTest_002
210 * @tc.desc: call CheckDeviceId with same deviceId
211 * @tc.type: FUNC
212 * @tc.require: I5RWIV
213 */
214 HWTEST_F(DmsTokenCallbackTest, CheckDeviceIdTest_002, TestSize.Level3)
215 {
216 DTEST_LOG << "DmsTokenCallbackTest CheckDeviceIdTest_002 begin" << std::endl;
217 ASSERT_NE(dmsTokenCallback_, nullptr);
218 std::string localDeviceId = "1";
219 std::string remoteDeviceId = "1";
220 bool result = dmsTokenCallback_->CheckDeviceId(localDeviceId, remoteDeviceId);
221 EXPECT_EQ(result, false);
222 DTEST_LOG << "DmsTokenCallbackTest CheckDeviceIdTest_002 end" << std::endl;
223 }
224
225 /**
226 * @tc.name: CheckDeviceIdTest_003
227 * @tc.desc: call CheckDeviceId with different deviceId
228 * @tc.type: FUNC
229 * @tc.require: I5RWIV
230 */
231 HWTEST_F(DmsTokenCallbackTest, CheckDeviceIdTest_003, TestSize.Level3)
232 {
233 DTEST_LOG << "DmsTokenCallbackTest CheckDeviceIdTest_003 begin" << std::endl;
234 ASSERT_NE(dmsTokenCallback_, nullptr);
235 std::string localDeviceId = "1";
236 std::string remoteDeviceId = "2";
237 bool result = dmsTokenCallback_->CheckDeviceId(localDeviceId, remoteDeviceId);
238 EXPECT_EQ(result, true);
239 DTEST_LOG << "DmsTokenCallbackTest CheckDeviceIdTest_003 end" << std::endl;
240 }
241
242 /**
243 * @tc.name: GetRemoteDmsTest_001
244 * @tc.desc: call GetRemoteDms with empty deviceId
245 * @tc.type: FUNC
246 * @tc.require: I5RWIV
247 */
248 HWTEST_F(DmsTokenCallbackTest, GetRemoteDmsTest_001, TestSize.Level3)
249 {
250 DTEST_LOG << "DmsTokenCallbackTest GetRemoteDmsTest_001 begin" << std::endl;
251 ASSERT_NE(dmsTokenCallback_, nullptr);
252 std::string remoteDeviceId;
253 sptr<IDistributedSched> result = dmsTokenCallback_->GetRemoteDms(remoteDeviceId);
254 EXPECT_EQ(result, nullptr);
255 DTEST_LOG << "DmsTokenCallbackTest GetRemoteDmsTest_001 end" << std::endl;
256 }
257
258 /**
259 * @tc.name: GetRemoteDmsTest_002
260 * @tc.desc: call GetRemoteDms with invalid deviceId
261 * @tc.type: FUNC
262 * @tc.require: I5RWIV
263 */
264 HWTEST_F(DmsTokenCallbackTest, GetRemoteDmsTest_002, TestSize.Level3)
265 {
266 DTEST_LOG << "DmsTokenCallbackTest GetRemoteDmsTest_002 begin" << std::endl;
267 ASSERT_NE(dmsTokenCallback_, nullptr);
268 std::string remoteDeviceId = "1";
269 sptr<IDistributedSched> result = dmsTokenCallback_->GetRemoteDms(remoteDeviceId);
270 EXPECT_EQ(result, nullptr);
271 DTEST_LOG << "DmsTokenCallbackTest GetRemoteDmsTest_002 end" << std::endl;
272 }
273 }
274 }