• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "request_manager_test.h"
17 
18 #include "accesstoken_kit.h"
19 #include "app_mgr_constants.h"
20 #include "nativetoken_kit.h"
21 #include "token_setproc.h"
22 
23 #include "i_locator_callback.h"
24 #define private public
25 #include "locator_ability.h"
26 #undef private
27 #include "locator_callback_host.h"
28 #include "request.h"
29 #include "request_config.h"
30 #include "permission_manager.h"
31 #include "locator_callback_proxy.h"
32 
33 using namespace testing::ext;
34 
35 namespace OHOS {
36 namespace Location {
37 const int32_t LOCATION_PERM_NUM = 5;
38 const int UNKNOWN_PRIORITY = 0x01FF;
39 const int UNKNOWN_SCENE = 0x02FF;
SetUp()40 void RequestManagerTest::SetUp()
41 {
42     MockNativePermission();
43     requestManager_ = RequestManager::GetInstance();
44     EXPECT_NE(nullptr, requestManager_);
45     request_ = std::make_shared<Request>();
46     EXPECT_NE(nullptr, request_);
47     request_->SetUid(SYSTEM_UID);
48     request_->SetPid(0);
49     request_->SetTokenId(tokenId_);
50     request_->SetFirstTokenId(0);
51     request_->SetPackageName("RequestManagerTest");
52     request_->SetRequesting(true);
53     auto requestConfig = std::make_unique<RequestConfig>();
54     EXPECT_NE(nullptr, requestConfig);
55     requestConfig->SetPriority(PRIORITY_FAST_FIRST_FIX);
56     requestConfig->SetFixNumber(0);
57     request_->SetRequestConfig(*requestConfig);
58     sptr<LocatorCallbackHost> locatorCallbackHost =
59         sptr<LocatorCallbackHost>(new (std::nothrow)LocatorCallbackHost());
60     sptr<ILocatorCallback> callback = sptr<ILocatorCallback>(locatorCallbackHost);
61     request_->SetLocatorCallBack(callback);
62 }
63 
TearDown()64 void RequestManagerTest::TearDown()
65 {
66     requestManager_ = nullptr;
67 }
68 
MockNativePermission()69 void RequestManagerTest::MockNativePermission()
70 {
71     const char *perms[] = {
72         ACCESS_LOCATION.c_str(), ACCESS_APPROXIMATELY_LOCATION.c_str(),
73         ACCESS_BACKGROUND_LOCATION.c_str(), MANAGE_SECURE_SETTINGS.c_str(),
74         ACCESS_CONTROL_LOCATION_SWITCH.c_str(),
75     };
76     NativeTokenInfoParams infoInstance = {
77         .dcapsNum = 0,
78         .permsNum = LOCATION_PERM_NUM,
79         .aclsNum = 0,
80         .dcaps = nullptr,
81         .perms = perms,
82         .acls = nullptr,
83         .processName = "RequestManagerTest",
84         .aplStr = "system_basic",
85     };
86     tokenId_ = GetAccessTokenId(&infoInstance);
87     SetSelfTokenID(tokenId_);
88     Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
89 }
90 
FillRequestField(std::shared_ptr<Request> & request)91 void RequestManagerTest::FillRequestField(std::shared_ptr<Request>& request)
92 {
93     request->SetUid(SYSTEM_UID);
94     request->SetPid(0);
95     request->SetTokenId(0);
96     request->SetFirstTokenId(0);
97     request->SetPackageName("pkg.name");
98     std::unique_ptr<RequestConfig> requestConfig =
99         std::make_unique<RequestConfig>();
100     request->SetRequestConfig(*requestConfig);
101     request->SetRequesting(false);
102     std::unique_ptr<Location> location = std::make_unique<Location>();
103     request->SetLastLocation(location);
104     request->SetLocationPermState(true);
105     request->SetBackgroundPermState(true);
106     request->SetApproximatelyPermState(true);
107 }
108 
VerifyRequestField(std::shared_ptr<Request> & request)109 void RequestManagerTest::VerifyRequestField(std::shared_ptr<Request>& request)
110 {
111     EXPECT_EQ(SYSTEM_UID, request->GetUid());
112     EXPECT_EQ(0, request->GetPid());
113     EXPECT_EQ(0, request->GetTokenId());
114     EXPECT_EQ(0, request->GetFirstTokenId());
115     EXPECT_EQ("pkg.name", request->GetPackageName());
116     EXPECT_NE(nullptr, request->GetRequestConfig());
117     request->GetLocatorCallBack();
118     EXPECT_EQ(false, request->GetIsRequesting());
119     EXPECT_NE(nullptr, request->GetLastLocation());
120     EXPECT_EQ(true, request->GetLocationPermState());
121     EXPECT_EQ(true, request->GetBackgroundPermState());
122     EXPECT_EQ(true, request->GetApproximatelyPermState());
123 }
124 
125 HWTEST_F(RequestManagerTest, InitSystemListeners001, TestSize.Level0)
126 {
127     GTEST_LOG_(INFO)
128         << "RequestManagerTest, InitSystemListeners001, TestSize.Level0";
129     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] InitSystemListeners001 begin");
130     EXPECT_EQ(true, requestManager_->InitSystemListeners());
131     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] InitSystemListeners001 end");
132 }
133 
134 HWTEST_F(RequestManagerTest, HandleStartAndStopLocating001, TestSize.Level0)
135 {
136     GTEST_LOG_(INFO)
137         << "RequestManagerTest, HandleStartAndStopLocating001, TestSize.Level0";
138     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandleStartAndStopLocating001 begin");
139     ASSERT_TRUE(requestManager_ != nullptr);
140     auto locatorAbility = LocatorAbility::GetInstance();
141     locatorAbility->receivers_ = nullptr;
142     requestManager_->HandleStartLocating(request_);
143     requestManager_->HandleStopLocating(nullptr); // can't stop locating
144 
145     requestManager_->HandleStartLocating(request_); // can start locating
146     requestManager_->HandleStopLocating(callback_); // can stop locating
147 
148     locatorAbility->receivers_ = nullptr;
149     requestManager_->HandleStartLocating(request_); // can't start locating
150     requestManager_->HandleStopLocating(callback_); // can stop locating, but not locating
151     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandleStartAndStopLocating001 end");
152 }
153 
154 HWTEST_F(RequestManagerTest, HandleStartAndStopLocating002, TestSize.Level1)
155 {
156     GTEST_LOG_(INFO)
157         << "RequestManagerTest, HandleStartAndStopLocating002, TestSize.Level1";
158     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandleStartAndStopLocating002 begin");
159     ASSERT_TRUE(requestManager_ != nullptr);
160     std::shared_ptr<Request> request = std::make_shared<Request>();
161 
162     request->SetUid(SYSTEM_UID);
163     request->SetPid(0);
164     request->SetTokenId(tokenId_);
165     request->SetFirstTokenId(0);
166     request->SetPackageName("RequestManagerTest");
167     auto requestConfig = std::make_unique<RequestConfig>();
168     requestConfig->SetPriority(PRIORITY_FAST_FIRST_FIX);
169     requestConfig->SetFixNumber(0);
170     request->SetRequestConfig(*requestConfig);
171     sptr<LocatorCallbackHost> locatorCallbackHost =
172         sptr<LocatorCallbackHost>(new (std::nothrow)LocatorCallbackHost());
173     auto callback = sptr<ILocatorCallback>(locatorCallbackHost);
174     request->SetLocatorCallBack(callback);
175     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandleStartAndStopLocating002 end");
176 }
177 
178 HWTEST_F(RequestManagerTest, HandlePowerSuspendChanged001, TestSize.Level1)
179 {
180     GTEST_LOG_(INFO)
181         << "RequestManagerTest, HandlePowerSuspendChanged001, TestSize.Level1";
182     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandlePowerSuspendChanged001 begin");
183     requestManager_->UpdateRequestRecord(request_, true);
184     EXPECT_EQ(true, requestManager_->IsUidInProcessing(SYSTEM_UID));
185     int32_t state1 = static_cast<int32_t>(AppExecFwk::ApplicationState::APP_STATE_FOREGROUND);
186     requestManager_->HandlePowerSuspendChanged(request_->GetPid(),
187         request_->GetUid(), state1);
188     int32_t state2 = static_cast<int32_t>(AppExecFwk::ApplicationState::APP_STATE_BACKGROUND);
189     requestManager_->HandlePowerSuspendChanged(request_->GetPid(),
190         request_->GetUid(), state2);
191     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandlePowerSuspendChanged001 end");
192 }
193 
194 HWTEST_F(RequestManagerTest, HandlePowerSuspendChanged002, TestSize.Level1)
195 {
196     GTEST_LOG_(INFO)
197         << "RequestManagerTest, HandlePowerSuspendChanged002, TestSize.Level1";
198     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandlePowerSuspendChanged002 begin");
199     ASSERT_TRUE(requestManager_ != nullptr);
200     requestManager_->UpdateRequestRecord(request_, false);
201     EXPECT_EQ(true, requestManager_->IsUidInProcessing(SYSTEM_UID));
202 
203     int32_t state1 = static_cast<int32_t>(AppExecFwk::ApplicationState::APP_STATE_FOREGROUND);
204     requestManager_->HandlePowerSuspendChanged(request_->GetPid(),
205         request_->GetUid(), state1);
206     int32_t state2 = static_cast<int32_t>(AppExecFwk::ApplicationState::APP_STATE_BACKGROUND);
207     requestManager_->HandlePowerSuspendChanged(request_->GetPid(),
208         request_->GetUid(), state2);
209     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandlePowerSuspendChanged002 end");
210 }
211 
212 HWTEST_F(RequestManagerTest, HandlePowerSuspendChanged003, TestSize.Level1)
213 {
214     GTEST_LOG_(INFO)
215         << "RequestManagerTest, HandlePowerSuspendChanged003, TestSize.Level1";
216     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandlePowerSuspendChanged003 begin");
217     ASSERT_TRUE(requestManager_ != nullptr);
218     requestManager_->UpdateRequestRecord(request_, false);
219     EXPECT_EQ(true, requestManager_->IsUidInProcessing(SYSTEM_UID));
220 
221     int32_t state1 = static_cast<int32_t>(AppExecFwk::ApplicationState::APP_STATE_FOREGROUND);
222     requestManager_->HandlePowerSuspendChanged(request_->GetPid() + 1,
223         request_->GetUid(), state1);
224     int32_t state2 = static_cast<int32_t>(AppExecFwk::ApplicationState::APP_STATE_BACKGROUND);
225     requestManager_->HandlePowerSuspendChanged(request_->GetPid() + 1,
226         request_->GetUid(), state2);
227     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandlePowerSuspendChanged003 end");
228 }
229 
230 HWTEST_F(RequestManagerTest, HandlePowerSuspendChanged004, TestSize.Level1)
231 {
232     GTEST_LOG_(INFO)
233         << "RequestManagerTest, HandlePowerSuspendChanged004, TestSize.Level1";
234     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandlePowerSuspendChanged004 begin");
235     ASSERT_TRUE(requestManager_ != nullptr);
236     requestManager_->UpdateRequestRecord(request_, false);
237     EXPECT_EQ(true, requestManager_->IsUidInProcessing(SYSTEM_UID));
238 
239     int32_t state1 = static_cast<int32_t>(AppExecFwk::ApplicationState::APP_STATE_FOREGROUND);
240     requestManager_->HandlePowerSuspendChanged(request_->GetPid(),
241         request_->GetUid() + 1, state1);
242     int32_t state2 = static_cast<int32_t>(AppExecFwk::ApplicationState::APP_STATE_BACKGROUND);
243     requestManager_->HandlePowerSuspendChanged(request_->GetPid(),
244         request_->GetUid() + 1, state2);
245     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandlePowerSuspendChanged004 end");
246 }
247 
248 HWTEST_F(RequestManagerTest, UpdateRequestRecord001, TestSize.Level1)
249 {
250     GTEST_LOG_(INFO)
251         << "RequestManagerTest, UpdateRequestRecord001, TestSize.Level1";
252     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] UpdateRequestRecord001 begin");
253     requestManager_->UpdateRequestRecord(request_, true); // uid = 1000 should be added to runningUids
254     EXPECT_EQ(true, requestManager_->IsUidInProcessing(SYSTEM_UID));
255     requestManager_->UpdateRequestRecord(request_, false); // uid = 1000 should be removed from runningUids
256     EXPECT_EQ(true, requestManager_->IsUidInProcessing(SYSTEM_UID));
257     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] UpdateRequestRecord001 end");
258 }
259 
260 HWTEST_F(RequestManagerTest, UpdateUsingPermissionTest001, TestSize.Level1)
261 {
262     GTEST_LOG_(INFO)
263         << "RequestManagerTest, UpdateUsingPermissionTest001, TestSize.Level1";
264     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] UpdateUsingPermissionTest001 begin");
265     ASSERT_TRUE(requestManager_ != nullptr);
266     requestManager_->UpdateUsingPermission(nullptr, true);
267     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] UpdateUsingPermissionTest001 end");
268 }
269 
270 HWTEST_F(RequestManagerTest, UpdateUsingPermissionTest002, TestSize.Level1)
271 {
272     GTEST_LOG_(INFO)
273         << "RequestManagerTest, UpdateUsingPermissionTest002, TestSize.Level1";
274     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] UpdateUsingPermissionTest002 begin");
275     EXPECT_EQ(false, request_->GetLocationPermState());
276     EXPECT_EQ(false, request_->GetBackgroundPermState());
277     EXPECT_EQ(false, request_->GetApproximatelyPermState());
278     requestManager_->UpdateUsingPermission(request_, true);
279     EXPECT_EQ(false, request_->GetLocationPermState());
280     EXPECT_EQ(false, request_->GetBackgroundPermState());
281     EXPECT_EQ(true, request_->GetApproximatelyPermState());
282     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] UpdateUsingPermissionTest002 end");
283 }
284 
285 HWTEST_F(RequestManagerTest, UpdateUsingPermissionTest003, TestSize.Level1)
286 {
287     GTEST_LOG_(INFO)
288         << "RequestManagerTest, UpdateUsingPermissionTest003, TestSize.Level1";
289     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] UpdateUsingPermissionTest003 begin");
290     requestManager_->UpdateRequestRecord(request_, true);
291     EXPECT_EQ(false, request_->GetLocationPermState());
292     EXPECT_EQ(false, request_->GetBackgroundPermState());
293     EXPECT_EQ(false, request_->GetApproximatelyPermState());
294     requestManager_->UpdateUsingPermission(request_, true);
295     // location permission is not recorded
296     EXPECT_EQ(false, request_->GetLocationPermState());
297     EXPECT_EQ(false, request_->GetBackgroundPermState());
298     // background location permission is not recorded
299     EXPECT_EQ(true, request_->GetApproximatelyPermState());
300 
301     requestManager_->UpdateRequestRecord(request_, false);
302     // location permission is not recorded
303     EXPECT_EQ(false, request_->GetLocationPermState());
304     // background location permission is not recorded
305     EXPECT_EQ(false, request_->GetBackgroundPermState());
306     EXPECT_EQ(true, request_->GetApproximatelyPermState());
307     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] UpdateUsingPermissionTest003 end");
308 }
309 
310 HWTEST_F(RequestManagerTest, DeleteRequestRecord001, TestSize.Level1)
311 {
312     GTEST_LOG_(INFO)
313         << "RequestManagerTest, DeleteRequestRecord001, TestSize.Level1";
314     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] DeleteRequestRecord001 begin");
315     auto requests = std::make_shared<std::list<std::shared_ptr<Request>>>();
316     std::shared_ptr<Request> request = std::make_shared<Request>();
317     requests->push_back(request);
318     requestManager_->DeleteRequestRecord(requests);
319     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] DeleteRequestRecord001 end");
320 }
321 
322 HWTEST_F(RequestManagerTest, RequestTest001, TestSize.Level1)
323 {
324     GTEST_LOG_(INFO)
325         << "RequestManagerTest, RequestTest001, TestSize.Level1";
326     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestTest001 begin");
327     std::shared_ptr<Request> request = std::make_shared<Request>();
328     FillRequestField(request);
329     VerifyRequestField(request);
330     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestTest001 end");
331 }
332 
333 HWTEST_F(RequestManagerTest, RequestGetProxyNameTest001, TestSize.Level1)
334 {
335     GTEST_LOG_(INFO)
336         << "RequestManagerTest, RequestGetProxyNameTest001, TestSize.Level1";
337     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest001 begin");
338     std::shared_ptr<Request> request = std::make_shared<Request>();
339     std::shared_ptr<std::list<std::string>> proxyList = nullptr;
340     request->GetProxyName(proxyList);
341     EXPECT_EQ(nullptr, proxyList);
342     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest001 end");
343 }
344 
345 HWTEST_F(RequestManagerTest, RequestGetProxyNameTest002, TestSize.Level1)
346 {
347     GTEST_LOG_(INFO)
348         << "RequestManagerTest, RequestGetProxyNameTest002, TestSize.Level1";
349     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest002 begin");
350     std::shared_ptr<Request> request = std::make_shared<Request>();
351     std::unique_ptr<RequestConfig> requestConfig1 =
352         std::make_unique<RequestConfig>();
353     requestConfig1->SetScenario(SCENE_NAVIGATION);
354     request->SetRequestConfig(*requestConfig1);
355     auto proxyList1 = std::make_shared<std::list<std::string>>();
356     request->GetProxyName(proxyList1);
357     EXPECT_NE(true, proxyList1->empty());
358     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest002 end");
359 }
360 
361 HWTEST_F(RequestManagerTest, RequestGetProxyNameTest003, TestSize.Level1)
362 {
363     GTEST_LOG_(INFO)
364         << "RequestManagerTest, RequestGetProxyNameTest003, TestSize.Level1";
365     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest003 begin");
366     std::shared_ptr<Request> request = std::make_shared<Request>();
367     std::unique_ptr<RequestConfig> requestConfig2 =
368         std::make_unique<RequestConfig>();
369     requestConfig2->SetScenario(SCENE_TRAJECTORY_TRACKING);
370     request->SetRequestConfig(*requestConfig2);
371     auto proxyList2 = std::make_shared<std::list<std::string>>();
372     request->GetProxyName(proxyList2);
373     EXPECT_NE(true, proxyList2->empty());
374     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest003 end");
375 }
376 
377 HWTEST_F(RequestManagerTest, RequestGetProxyNameTest004, TestSize.Level1)
378 {
379     GTEST_LOG_(INFO)
380         << "RequestManagerTest, RequestGetProxyNameTest004, TestSize.Level1";
381     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest004 begin");
382     std::shared_ptr<Request> request = std::make_shared<Request>();
383     std::unique_ptr<RequestConfig> requestConfig3 =
384         std::make_unique<RequestConfig>();
385     requestConfig3->SetScenario(SCENE_CAR_HAILING);
386     request->SetRequestConfig(*requestConfig3);
387     auto proxyList3 = std::make_shared<std::list<std::string>>();
388     request->GetProxyName(proxyList3);
389     EXPECT_NE(true, proxyList3->empty());
390     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest004 end");
391 }
392 
393 HWTEST_F(RequestManagerTest, RequestGetProxyNameTest005, TestSize.Level1)
394 {
395     GTEST_LOG_(INFO)
396         << "RequestManagerTest, RequestGetProxyNameTest005, TestSize.Level1";
397     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest005 begin");
398     std::shared_ptr<Request> request = std::make_shared<Request>();
399     std::unique_ptr<RequestConfig> requestConfig4 =
400         std::make_unique<RequestConfig>();
401     requestConfig4->SetScenario(SCENE_DAILY_LIFE_SERVICE);
402     request->SetRequestConfig(*requestConfig4);
403     auto proxyList4 = std::make_shared<std::list<std::string>>();
404     request->GetProxyName(proxyList4);
405     EXPECT_NE(true, proxyList4->empty());
406     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest005 end");
407 }
408 
409 HWTEST_F(RequestManagerTest, RequestGetProxyNameTest006, TestSize.Level1)
410 {
411     GTEST_LOG_(INFO)
412         << "RequestManagerTest, RequestGetProxyNameTest006, TestSize.Level1";
413     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest006 begin");
414     std::shared_ptr<Request> request = std::make_shared<Request>();
415     std::unique_ptr<RequestConfig> requestConfig5 =
416         std::make_unique<RequestConfig>();
417     requestConfig5->SetScenario(SCENE_NO_POWER);
418     request->SetRequestConfig(*requestConfig5);
419     auto proxyList5 = std::make_shared<std::list<std::string>>();
420     request->GetProxyName(proxyList5);
421     EXPECT_NE(true, proxyList5->empty());
422     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest006 end");
423 }
424 
425 HWTEST_F(RequestManagerTest, RequestGetProxyNameTest007, TestSize.Level1)
426 {
427     GTEST_LOG_(INFO)
428         << "RequestManagerTest, RequestGetProxyNameTest007, TestSize.Level1";
429     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest007 begin");
430     std::shared_ptr<Request> request = std::make_shared<Request>();
431     std::unique_ptr<RequestConfig> requestConfig6 =
432         std::make_unique<RequestConfig>();
433     requestConfig6->SetScenario(SCENE_UNSET);
434     requestConfig6->SetPriority(PRIORITY_ACCURACY);
435     request->SetRequestConfig(*requestConfig6);
436     auto proxyList6 = std::make_shared<std::list<std::string>>();
437     request->GetProxyName(proxyList6);
438     EXPECT_NE(true, proxyList6->empty());
439     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest007 end");
440 }
441 
442 HWTEST_F(RequestManagerTest, RequestGetProxyNameTest008, TestSize.Level1)
443 {
444     GTEST_LOG_(INFO)
445         << "RequestManagerTest, RequestGetProxyNameTest008, TestSize.Level1";
446     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest008 begin");
447     std::shared_ptr<Request> request = std::make_shared<Request>();
448     std::unique_ptr<RequestConfig> requestConfig7 =
449         std::make_unique<RequestConfig>();
450     requestConfig7->SetScenario(SCENE_UNSET);
451     requestConfig7->SetPriority(PRIORITY_LOW_POWER);
452     request->SetRequestConfig(*requestConfig7);
453     auto proxyList7 = std::make_shared<std::list<std::string>>();
454     request->GetProxyName(proxyList7);
455     EXPECT_NE(true, proxyList7->empty());
456     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest008 end");
457 }
458 
459 HWTEST_F(RequestManagerTest, RequestGetProxyNameTest009, TestSize.Level1)
460 {
461     GTEST_LOG_(INFO)
462         << "RequestManagerTest, RequestGetProxyNameTest009, TestSize.Level1";
463     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest009 begin");
464     std::shared_ptr<Request> request = std::make_shared<Request>();
465     std::unique_ptr<RequestConfig> requestConfig8 =
466         std::make_unique<RequestConfig>();
467     requestConfig8->SetScenario(SCENE_UNSET);
468     requestConfig8->SetPriority(PRIORITY_FAST_FIRST_FIX);
469     request->SetRequestConfig(*requestConfig8);
470     auto proxyList8 = std::make_shared<std::list<std::string>>();
471     request->GetProxyName(proxyList8);
472     EXPECT_NE(true, proxyList8->empty());
473     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest009 end");
474 }
475 
476 HWTEST_F(RequestManagerTest, RequestGetProxyNameTest010, TestSize.Level1)
477 {
478     GTEST_LOG_(INFO)
479         << "RequestManagerTest, RequestGetProxyNameTest010, TestSize.Level1";
480     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest010 begin");
481     std::shared_ptr<Request> request = std::make_shared<Request>();
482     std::unique_ptr<RequestConfig> requestConfig9 =
483         std::make_unique<RequestConfig>();
484     requestConfig9->SetScenario(SCENE_UNSET);
485     requestConfig9->SetPriority(UNKNOWN_PRIORITY);
486     request->SetRequestConfig(*requestConfig9);
487     auto proxyList9 = std::make_shared<std::list<std::string>>();
488     request->GetProxyName(proxyList9);
489     EXPECT_EQ(true, proxyList9->empty());
490     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest010 end");
491 }
492 
493 HWTEST_F(RequestManagerTest, RequestGetProxyNameTest011, TestSize.Level1)
494 {
495     GTEST_LOG_(INFO)
496         << "RequestManagerTest, RequestGetProxyNameTest011, TestSize.Level1";
497     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest011 begin");
498     std::shared_ptr<Request> request = std::make_shared<Request>();
499     std::unique_ptr<RequestConfig> requestConfig10 =
500         std::make_unique<RequestConfig>();
501     requestConfig10->SetScenario(UNKNOWN_SCENE);
502     request->SetRequestConfig(*requestConfig10);
503     auto proxyList10 = std::make_shared<std::list<std::string>>();
504     request->GetProxyName(proxyList10);
505     EXPECT_EQ(true, proxyList10->empty());
506     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RequestGetProxyNameTest011 end");
507 }
508 
509 HWTEST_F(RequestManagerTest, GetRemoteObject001, TestSize.Level1)
510 {
511     GTEST_LOG_(INFO)
512         << "RequestManagerTest, GetRemoteObject001, TestSize.Level1";
513     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] GetRemoteObject001 begin");
514     ASSERT_TRUE(requestManager_ != nullptr);
515     requestManager_->GetRemoteObject(GNSS_ABILITY);
516 
517     requestManager_->GetRemoteObject("");
518     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] GetRemoteObject001 end");
519 }
520 
521 HWTEST_F(RequestManagerTest, HandleChrEvent001, TestSize.Level1)
522 {
523     GTEST_LOG_(INFO)
524         << "RequestManagerTest, HandleChrEvent001, TestSize.Level1";
525     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandleChrEvent001 begin");
526     ASSERT_TRUE(requestManager_ != nullptr);
527     std::list<std::shared_ptr<Request>> requests;
528     std::shared_ptr<Request> request = std::make_shared<Request>();
529     requests.push_back(request);
530     requestManager_->HandleChrEvent(requests);
531     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandleChrEvent001 end");
532 }
533 
534 HWTEST_F(RequestManagerTest, HandleChrEvent002, TestSize.Level1)
535 {
536     GTEST_LOG_(INFO)
537         << "RequestManagerTest, HandleChrEvent002, TestSize.Level1";
538     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandleChrEvent002 begin");
539     ASSERT_TRUE(requestManager_ != nullptr);
540     std::list<std::shared_ptr<Request>> requests;
541     for (int i = 0; i < 25 ; i++) {
542         std::shared_ptr<Request> request = std::make_shared<Request>();
543         requests.push_back(request);
544     }
545     requestManager_->HandleChrEvent(requests);
546     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandleChrEvent002 end");
547 }
548 
549 HWTEST_F(RequestManagerTest, IsUidInProcessing001, TestSize.Level1)
550 {
551     GTEST_LOG_(INFO)
552         << "RequestManagerTest, IsUidInProcessing001, TestSize.Level1";
553     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] IsUidInProcessing001 begin");
554     ASSERT_TRUE(requestManager_ != nullptr);
555     requestManager_->IsUidInProcessing(0);
556     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] IsUidInProcessing001 end");
557 }
558 
559 HWTEST_F(RequestManagerTest, ReportLocationError001, TestSize.Level1)
560 {
561     GTEST_LOG_(INFO)
562         << "RequestManagerTest, ReportLocationError001, TestSize.Level1";
563     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] ReportLocationError001 begin");
564     std::shared_ptr<Request> request = std::make_shared<Request>();
565     const int errorCode = LocationErr::LOCATING_FAILED_INTERNET_ACCESS_FAILURE;
566     request->SetUid(1000);
567     request->SetPid(0);
568     request->SetTokenId(tokenId_);
569     request->SetFirstTokenId(0);
570     request->SetPackageName("RequestManagerTest");
571     sptr<LocatorCallbackHost> locatorCallbackHost =
572         sptr<LocatorCallbackHost>(new (std::nothrow)LocatorCallbackHost());
573     auto callback = sptr<ILocatorCallback>(locatorCallbackHost);
574     request->SetLocatorCallBack(callback);
575     requestManager_->ReportLocationError(errorCode, request); // network loccation failed
576     request->SetLocatorCallBack(nullptr);
577     requestManager_->ReportLocationError(errorCode, request); // network loccation failed and null locator callback
578     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] ReportLocationError001 end");
579 }
580 
581 HWTEST_F(RequestManagerTest, UpdateLocationErrorCallbackToRequest001, TestSize.Level1)
582 {
583     GTEST_LOG_(INFO)
584         << "RequestManagerTest, UpdateLocationErrorCallbackToRequest001, TestSize.Level1";
585     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] UpdateLocationErrorCallbackToRequest001 begin");
586     ASSERT_TRUE(requestManager_ != nullptr);
587     std::shared_ptr<Request> request = std::make_shared<Request>();
588     requestManager_->UpdateLocationError(request);
589     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] UpdateLocationErrorCallbackToRequest001 end");
590 }
591 
592 HWTEST_F(RequestManagerTest, SyncStillMovementState001, TestSize.Level1)
593 {
594     GTEST_LOG_(INFO)
595         << "RequestManagerTest, SyncStillMovementState001, TestSize.Level1";
596     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] SyncStillMovementState001 begin");
597     ASSERT_TRUE(requestManager_ != nullptr);
598     requestManager_->SyncStillMovementState(true);
599     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] SyncStillMovementState001 end");
600 }
601 
602 HWTEST_F(RequestManagerTest, UpdateUsingApproximatelyPermission001, TestSize.Level1)
603 {
604     GTEST_LOG_(INFO)
605         << "RequestManagerTest, UpdateUsingApproximatelyPermission001, TestSize.Level1";
606     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] UpdateUsingApproximatelyPermission001 begin");
607 
608     RequestManager* requestManager = new (std::nothrow) RequestManager();
609     // Arrange
610     auto request = std::make_shared<Request>();
611     request->SetPid(10023);
612 
613     request->SetApproximatelyPermState(false);
614     bool result = requestManager->UpdateUsingApproximatelyPermission(request, true);
615     EXPECT_TRUE(result);
616 
617     request->SetApproximatelyPermState(false);
618     result = requestManager->UpdateUsingApproximatelyPermission(request, true);
619 
620     request->SetApproximatelyPermState(true);
621     result = requestManager->UpdateUsingApproximatelyPermission(request, false);
622     result = requestManager->UpdateUsingApproximatelyPermission(request, false);
623 
624     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] UpdateUsingApproximatelyPermission001 end");
625 }
626 
627 HWTEST_F(RequestManagerTest, RestorRequest001, TestSize.Level1)
628 {
629     GTEST_LOG_(INFO)
630         << "RequestManagerTest, RestorRequest001, TestSize.Level1";
631     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RestorRequest001 begin");
632     RequestManager* requestManager = new (std::nothrow) RequestManager();
633     auto locatorAbility = sptr<LocatorAbility>(new (std::nothrow) LocatorAbility());
634 
635     AppIdentity identity;
636     sptr<ILocatorCallback> callbackStub = new (std::nothrow) LocatorCallbackStub();
637     std::unique_ptr<RequestConfig> requestConfig = std::make_unique<RequestConfig>();
638     std::shared_ptr<Request> request = std::make_shared<Request>(requestConfig, callbackStub, identity);
639 
640     // Act
641     ErrCode result = locatorAbility->StartLocating(*requestConfig, callbackStub);
642 
643     requestManager->RestorRequest(nullptr);
644     requestManager->RestorRequest(request);
645 
646     result = locatorAbility->StopLocating(callbackStub);
647     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RestorRequest001 end");
648 }
649 
650 HWTEST_F(RequestManagerTest, HandleStopLocating_001, TestSize.Level1)
651 {
652     GTEST_LOG_(INFO)
653         << "RequestManagerTest, HandleStopLocating_001, TestSize.Level1";
654     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandleStopLocating_001 begin");
655     RequestManager* requestManager = new (std::nothrow) RequestManager();
656     sptr<ILocatorCallback> callbackStub = new (std::nothrow) LocatorCallbackStub();
657     auto request = std::make_shared<Request>();
658     request->SetLocatorCallBack(callbackStub);
659 
660     requestManager->HandleStartLocating(request);
661     requestManager->HandleStopLocating(callbackStub);
662 
663     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] HandleStopLocating_001 end");
664 }
665 
666 HWTEST_F(RequestManagerTest, ActiveLocatingStrategies_001, TestSize.Level1)
667 {
668     GTEST_LOG_(INFO)
669         << "RequestManagerTest, ActiveLocatingStrategies_001, TestSize.Level1";
670     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] ActiveLocatingStrategies_001 begin");
671     bool testRet = false;
672     RequestManager* requestManager = new (std::nothrow) RequestManager();
673     std::unique_ptr<RequestConfig> requestConfig = std::make_unique<RequestConfig>();
674     auto request = std::make_shared<Request>();
675     // null branch
676     testRet = requestManager->ActiveLocatingStrategies(nullptr);
677     // valid branch
678     requestConfig->SetScenario(SCENE_UNSET);
679     request->SetRequestConfig(*requestConfig);
680     testRet = requestManager->ActiveLocatingStrategies(request);
681     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] ActiveLocatingStrategies_001 end");
682 }
683 
684 HWTEST_F(RequestManagerTest, IsRequestAvailable_001, TestSize.Level1)
685 {
686     GTEST_LOG_(INFO)
687         << "RequestManagerTest, IsRequestAvailable_001, TestSize.Level1";
688     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] IsRequestAvailable_001 begin");
689     bool testRet = false;
690     RequestManager* requestManager = new (std::nothrow) RequestManager();
691     auto request = std::make_shared<Request>();
692     // false branch
693     request->SetRequesting(false);
694     testRet = requestManager->IsRequestAvailable(request);
695 
696     // true branch
697     request->SetRequesting(true);
698     request->GetRequestConfig()->SetFixNumber(1);
699     request->GetRequestConfig()->SetTimeStamp(0);
700     request->GetRequestConfig()->SetTimeOut(1000);
701     testRet = requestManager->IsRequestAvailable(request);
702 
703     request->GetRequestConfig()->SetTimeStamp(CommonUtils::GetCurrentTime());
704     testRet = requestManager->IsRequestAvailable(request);
705 
706     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] IsRequestAvailable_001 end");
707 }
708 
709 HWTEST_F(RequestManagerTest, AddRequestToWorkRecord_001, TestSize.Level1)
710 {
711     GTEST_LOG_(INFO)
712         << "RequestManagerTest, AddRequestToWorkRecord_001, TestSize.Level1";
713     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] Template_001 begin");
714     RequestManager* requestManager = new (std::nothrow) RequestManager();
715     std::shared_ptr<WorkRecord> workRecord = std::make_shared<WorkRecord>();
716     auto locatorAbility = sptr<LocatorAbility>(new (std::nothrow) LocatorAbility());
717     auto request = std::make_shared<Request>();
718     request->GetRequestConfig()->SetFixNumber(0);
719     request->SetUid(1000);
720     request->SetPid(0);
721     request->SetTokenId(tokenId_);
722     request->SetFirstTokenId(0);
723     request->SetPackageName("RequestManagerTest");
724     std::unique_ptr<RequestConfig> requestConfig = std::make_unique<RequestConfig>();
725 
726     // null branch
727     requestManager->AddRequestToWorkRecord(GNSS_ABILITY, request, workRecord);
728     ErrCode result = locatorAbility->EnableAbility(false);
729     requestManager->AddRequestToWorkRecord(GNSS_ABILITY, request, workRecord);
730     result = locatorAbility->EnableAbility(true);
731     requestManager->AddRequestToWorkRecord(GNSS_ABILITY, request, workRecord);
732     // no permission
733     requestManager->AddRequestToWorkRecord(GNSS_ABILITY, request, workRecord);
734     //with permission
735     //with permission no reqConfig
736     request->SetRequestConfig(*requestConfig);
737     requestManager->AddRequestToWorkRecord(GNSS_ABILITY, request, workRecord);
738 
739     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] AddRequestToWorkRecord_001 end");
740 }
741 
742 HWTEST_F(RequestManagerTest, RegisterLocationErrorCallback_001, TestSize.Level1)
743 {
744     GTEST_LOG_(INFO)
745         << "RequestManagerTest, RegisterLocationErrorCallback_001, TestSize.Level1";
746     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RegisterLocationErrorCallback_001 begin");
747 
748     RequestManager* requestManager = new (std::nothrow) RequestManager();
749     sptr<LocatorCallbackHost> locatorCallbackHost =
750         sptr<LocatorCallbackHost>(new (std::nothrow)LocatorCallbackHost());
751     sptr<ILocatorCallback> callback = sptr<ILocatorCallback>(locatorCallbackHost);
752     AppIdentity identity;
753     std::shared_ptr<Request> request = std::make_shared<Request>();
754     const int errorCode = LocationErr::LOCATING_FAILED_INTERNET_ACCESS_FAILURE;
755     request->SetUid(1000);
756     request->SetPid(0);
757     request->SetTokenId(tokenId_);
758     request->SetFirstTokenId(0);
759     request->SetPackageName("RequestManagerTest");
760     request->SetLocatorCallBack(callback);
761     // addable
762     requestManager->RegisterLocationErrorCallback(callback, identity);
763     requestManager->UpdateLocationError(request);
764     requestManager->ReportLocationError(errorCode, request);
765     requestManager->UnRegisterLocationErrorCallback(callback);
766 
767     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] RegisterLocationErrorCallback_001 end");
768 }
769 
770 HWTEST_F(RequestManagerTest, Template_001, TestSize.Level1)
771 {
772     GTEST_LOG_(INFO)
773         << "RequestManagerTest, Template_001, TestSize.Level1";
774     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] Template_001 begin");
775 
776     RequestManager* requestManager = new (std::nothrow) RequestManager();
777     auto request = std::make_shared<Request>();
778 
779 
780     LBSLOGI(REQUEST_MANAGER, "[RequestManagerTest] Template_001 end");
781 }
782 }  // namespace Location
783 }  // namespace OHOS