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