1 /*
2  * Copyright (c) 2023 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 "print_service_mock_permission.h"
18 #include "mock_remote_object.h"
19 #define private public
20 #define protected public
21 #include "print_service_ability.h"
22 #include "print_bms_helper.h"
23 #undef protected
24 #undef private
25 #ifdef CUPS_ENABLE
26 #include "print_cups_client.h"
27 #endif // CUPS_ENABLE
28 #include "accesstoken_kit.h"
29 #include "array_wrapper.h"
30 #include "int_wrapper.h"
31 #include "ipc_skeleton.h"
32 #include "iservice_registry.h"
33 #include "print_constant.h"
34 #include "print_log.h"
35 #include "printer_info.h"
36 #include "print_utils.h"
37 #include "string_wrapper.h"
38 #include "system_ability_definition.h"
39 #include "want_params_wrapper.h"
40 #include "print_security_guard_manager.h"
41 #include "hisys_event_util.h"
42 #include "nlohmann/json.hpp"
43 #include "print_ipp_over_usb_manager.h"
44 #include "mock_print_callback_proxy.h"
45 #include "mock_print_extension_callback_proxy.h"
46 
47 
48 using namespace testing;
49 using namespace testing::ext;
50 
51 namespace OHOS::Print {
52 using namespace std;
53 using namespace OHOS::HiviewDFX;
54 using namespace Security::AccessToken;
55 using json = nlohmann::json;
56 static constexpr const char *DEFAULT_EXTENSION_ID = "com.example.ext";
57 static constexpr const char *UNLOAD_EXTENSION_ID = "com.example.ext.unload";
58 static constexpr const char *NONEXIST_EXTENSION_ID = "com.example.ext.nonexist";
59 static constexpr const char *DEFAULT_EXT_PRINTER_ID = "https://10.10.10.10/FE8083DCD35F";
60 static constexpr const char *DEFAULT_EXT_PRINTER_ID2 = "https://10.10.10.10/0FDA6E208473";
61 static constexpr const char *DEFAULT_PRINT_FILE_A = "file://data/print/a.png";
62 static constexpr const char *DEFAULT_PRINT_FILE_B = "file://data/print/b.png";
63 static constexpr const char *DEFAULT_PRINT_FILE_C = "file://data/print/c.png";
64 static const std::string PRINT_GET_FILE_EVENT_TYPE = "getPrintFileCallback_adapter";
65 static const std::string PRINTER_EVENT_TYPE = "printerStateChange";
66 static const std::string PRINTJOB_EVENT_TYPE = "jobStateChange";
67 static const std::string EXTINFO_EVENT_TYPE = "extInfoChange";
68 static const std::string PRINT_ADAPTER_EVENT_TYPE = "printCallback_adapter";
69 static const std::string EVENT_CANCEL = "cancel";
70 const uint32_t MAX_JOBQUEUE_NUM = 512;
71 
72 enum EXTENSION_ID_TYPE {
73     TYPE_DEFAULT,
74     TYPE_UNLOAD,
75     TYPE_NON_EXIST,
76 };
77 REGISTER_SYSTEM_ABILITY_BY_ID(PrintServiceAbility, PRINT_SERVICE_ID, true);
78 class PrintServiceAbilityTest : public testing::Test {
79 public:
80     static void SetUpTestCase(void);
81     static void TearDownTestCase(void);
82     void SetUp();
83     void TearDown();
84     std::string GetExtensionId(EXTENSION_ID_TYPE type);
85     std::string GetDefaultTaskId();
86     std::string GetDefaultJobId();
87     std::string GetDefaultPrinterId();
88     std::string GetInvalidPrinterId();
89     void InitExtPrinterList(std::vector<PrinterInfo> &printerList, size_t count);
90     void InitPrinterList(std::vector<PrinterInfo> &printerList, size_t count);
91     void InitExtPrinterIdList(std::vector<std::string> &idList, size_t count);
92     void InitFileList(std::vector<std::string> &fileList);
93     void InitExtensionList(std::vector<AppExecFwk::ExtensionAbilityInfo>& extList);
94 };
95 
SetUpTestCase(void)96 void PrintServiceAbilityTest::SetUpTestCase(void) {}
97 
TearDownTestCase(void)98 void PrintServiceAbilityTest::TearDownTestCase(void) {}
99 
SetUp(void)100 void PrintServiceAbilityTest::SetUp(void)
101 {
102     static int32_t testNo = 0;
103     PRINT_HILOGE("PrintServiceAbilityTest_%{public}d", ++testNo);
104 }
105 
TearDown(void)106 void PrintServiceAbilityTest::TearDown(void) {}
107 
GetExtensionId(EXTENSION_ID_TYPE type)108 std::string PrintServiceAbilityTest::GetExtensionId(EXTENSION_ID_TYPE type)
109 {
110     switch (type) {
111         case TYPE_DEFAULT:
112             return DEFAULT_EXTENSION_ID;
113 
114         case TYPE_UNLOAD:
115             return UNLOAD_EXTENSION_ID;
116 
117         case TYPE_NON_EXIST:
118             return NONEXIST_EXTENSION_ID;
119 
120         default:
121             break;
122     }
123     return DEFAULT_EXTENSION_ID;
124 }
125 
GetDefaultTaskId()126 std::string PrintServiceAbilityTest::GetDefaultTaskId()
127 {
128     return std::to_string(0);
129 }
130 
GetDefaultJobId()131 std::string PrintServiceAbilityTest::GetDefaultJobId()
132 {
133     return std::to_string(0);
134 }
135 
GetDefaultPrinterId()136 std::string PrintServiceAbilityTest::GetDefaultPrinterId()
137 {
138     return PrintUtils::GetGlobalId(DEFAULT_EXTENSION_ID, DEFAULT_EXT_PRINTER_ID);
139 }
140 
GetInvalidPrinterId()141 std::string PrintServiceAbilityTest::GetInvalidPrinterId()
142 {
143     return PrintUtils::GetGlobalId(DEFAULT_EXTENSION_ID, "wrong printer id");
144 }
145 
InitExtPrinterList(std::vector<PrinterInfo> & printerList,size_t count)146 void PrintServiceAbilityTest::InitExtPrinterList(std::vector<PrinterInfo> &printerList, size_t count)
147 {
148     printerList.clear();
149     PrinterInfo info;
150     info.SetPrinterId(DEFAULT_EXT_PRINTER_ID);
151     printerList.emplace_back(info);
152     if (printerList.size() < count) {
153         info.SetPrinterId(DEFAULT_EXT_PRINTER_ID2);
154         printerList.emplace_back(info);
155     }
156 }
157 
InitPrinterList(std::vector<PrinterInfo> & printerList,size_t count)158 void PrintServiceAbilityTest::InitPrinterList(std::vector<PrinterInfo> &printerList, size_t count)
159 {
160     printerList.clear();
161     PrinterInfo info;
162     info.SetPrinterId(PrintUtils::GetGlobalId(DEFAULT_EXTENSION_ID, DEFAULT_EXT_PRINTER_ID));
163     printerList.emplace_back(info);
164     if (printerList.size() < count) {
165         info.SetPrinterId(PrintUtils::GetGlobalId(DEFAULT_EXTENSION_ID, DEFAULT_EXT_PRINTER_ID2));
166         printerList.emplace_back(info);
167     }
168 }
169 
InitExtPrinterIdList(std::vector<std::string> & idList,size_t count)170 void PrintServiceAbilityTest::InitExtPrinterIdList(std::vector<std::string> &idList, size_t count)
171 {
172     idList.clear();
173     idList.emplace_back(DEFAULT_EXT_PRINTER_ID);
174     if (idList.size() < count) {
175         idList.emplace_back(DEFAULT_EXT_PRINTER_ID2);
176     }
177 }
178 
InitFileList(std::vector<std::string> & fileList)179 void PrintServiceAbilityTest::InitFileList(std::vector<std::string> &fileList)
180 {
181     fileList.emplace_back(DEFAULT_PRINT_FILE_A);
182     fileList.emplace_back(DEFAULT_PRINT_FILE_B);
183     fileList.emplace_back(DEFAULT_PRINT_FILE_C);
184 }
185 
InitExtensionList(std::vector<AppExecFwk::ExtensionAbilityInfo> & extList)186 void PrintServiceAbilityTest::InitExtensionList(std::vector<AppExecFwk::ExtensionAbilityInfo>& extList)
187 {
188     std::vector<std::string> nameList = {DEFAULT_EXTENSION_ID, UNLOAD_EXTENSION_ID};
189     AppExecFwk::ExtensionAbilityInfo loadInfo;
190     for (size_t index = 0; index < nameList.size(); index++) {
191         loadInfo.bundleName = nameList[index];
192         loadInfo.moduleName = nameList[index];
193         loadInfo.name = nameList[index];
194         extList.emplace_back(loadInfo);
195     }
196 }
197 /**
198 * @tc.name: PrintServiceAbilityTest_0001
199 * @tc.desc: PrintServiceAbility ctor/dtor
200 * @tc.type: FUNC ~PrintServiceAbility()
201 * @tc.require:
202 */
203 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0001, TestSize.Level1)
204 {
205     PrintServiceAbility* print_service = new PrintServiceAbility(PRINT_SERVICE_ID, true);
206     if (print_service != nullptr) {
207         delete print_service;
208         print_service = nullptr;
209     }
210     PrintServiceAbility* new_print_service = new PrintServiceAbility(PRINT_SERVICE_ID, false);
211     if (new_print_service != nullptr) {
212         delete new_print_service;
213         new_print_service = nullptr;
214     }
215     EXPECT_EQ(PrintServiceAbility::GetInstance()->Init(), E_PRINT_SERVER_FAILURE);
216 }
217 /**
218 * @tc.name: PrintServiceAbilityTest_0002
219 * @tc.desc: PrintServiceAbility ctor/dtor
220 * @tc.type: FUNC ManualStart()
221 * @tc.require:
222 */
223 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0002, TestSize.Level1)
224 {
225     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
226     int state = static_cast<int>(service->state_);
227     service->ManualStart();
228     EXPECT_EQ(state, 0);
229 }
230 /**
231 * @tc.name: PrintServiceAbilityTest_0003
232 * @tc.desc: PrintServiceAbility ctor/dtor
233 * @tc.type: FUNC GetPrintJobOrderId()
234 * @tc.require:
235 */
236 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0003, TestSize.Level1)
237 {
238     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
239     service->GetPrintJobOrderId();
240     EXPECT_NE(service->currentJobOrderId_, 0);
241 }
242 /**
243 * @tc.name: PrintServiceAbilityTest_0004
244 * @tc.desc: PrintServiceAbility ctor/dtor
245 * @tc.type: FUNC
246 * @tc.require: return E_PRINT_NO_PERMISSION
247 */
248 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0004, TestSize.Level1)
249 {
250     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
251     EXPECT_EQ(service->StartService(), E_PRINT_NO_PERMISSION);
252     std::vector<std::string> fileList = {};
253     std::vector<uint32_t> fdList = {};
254     std::string taskId = "";
255     std::shared_ptr<AdapterParam> adapterParam = std::make_shared<AdapterParam>();
256     EXPECT_EQ(service->StartPrint(fileList, fdList, taskId), E_PRINT_NO_PERMISSION);
257     EXPECT_EQ(service->CallSpooler(fileList, fdList, taskId), E_PRINT_NO_PERMISSION);
258     EXPECT_EQ(service->StopPrint(taskId), E_PRINT_NO_PERMISSION);
259     std::string printerId = "1234";
260     EXPECT_EQ(service->ConnectPrinter(printerId), E_PRINT_NO_PERMISSION);
261     EXPECT_EQ(service->DisconnectPrinter(printerId), E_PRINT_NO_PERMISSION);
262     std::vector<std::string> extensionIds;
263     EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NO_PERMISSION);
264     EXPECT_EQ(service->StopDiscoverPrinter(), E_PRINT_NO_PERMISSION);
265     std::vector<PrintExtensionInfo> extensionInfos;
266     EXPECT_EQ(service->QueryAllExtension(extensionInfos), E_PRINT_NO_PERMISSION);
267     std::vector<PrintJob> printJobs;
268     EXPECT_EQ(service->QueryAllPrintJob(printJobs), E_PRINT_NO_PERMISSION);
269     std::vector<std::string> printerList;
270     EXPECT_EQ(service->QueryAddedPrinter(printerList), E_PRINT_NO_PERMISSION);
271     PrinterInfo info;
272     EXPECT_EQ(service->QueryPrinterInfoByPrinterId(printerId, info), E_PRINT_NO_PERMISSION);
273     std::vector<std::string> keyList;
274     std::vector<std::string> valueList;
275     EXPECT_EQ(service->QueryPrinterProperties(printerId, keyList, valueList), E_PRINT_NO_PERMISSION);
276     std::string printJobId = "1";
277     PrintJob printJob;
278     EXPECT_EQ(service->QueryPrintJobById(printJobId, printJob), E_PRINT_NO_PERMISSION);
279     std::string printerUri = "111.222.333";
280     std::string printerName = "pixlab_0759";
281     std::string printerMake = "pixlab b5";
282     EXPECT_EQ(service->AddPrinterToCups(printerUri, printerName, printerMake), E_PRINT_NO_PERMISSION);
283     PrinterCapability printerCaps;
284     EXPECT_EQ(service->QueryPrinterCapabilityByUri(printerUri, printerId, printerCaps), E_PRINT_NO_PERMISSION);
285     EXPECT_EQ(service->StartNativePrintJob(printJob), E_PRINT_NO_PERMISSION);
286     EXPECT_EQ(service->StartPrintJob(printJob), E_PRINT_NO_PERMISSION);
287     EXPECT_EQ(service->CancelPrintJob(printJobId), E_PRINT_NO_PERMISSION);
288     std::vector<PrinterInfo> printerInfos;
289     EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NO_PERMISSION);
290     std::vector<std::string> printerIds;
291     EXPECT_EQ(service->RemovePrinters(printerIds), E_PRINT_NO_PERMISSION);
292     EXPECT_EQ(service->UpdatePrinters(printerInfos), E_PRINT_NO_PERMISSION);
293     uint32_t state = PrinterState::PRINTER_ADDED;
294     EXPECT_EQ(service->UpdatePrinterState(printerId, state), E_PRINT_NO_PERMISSION);
295     uint32_t subState = 0;
296     EXPECT_EQ(service->UpdatePrintJobStateOnlyForSystemApp(printJobId, state, subState), E_PRINT_NO_PERMISSION);
297     EXPECT_EQ(service->AdapterGetFileCallBack(printJobId, state, subState), E_PRINT_NONE);
298     state = PrintJobState::PRINT_JOB_CREATE_FILE_COMPLETED;
299     EXPECT_EQ(service->AdapterGetFileCallBack(printJobId, state, subState), E_PRINT_NO_PERMISSION);
300     std::string extInfo = "";
301     EXPECT_EQ(service->UpdateExtensionInfo(extInfo), E_PRINT_NO_PERMISSION);
302     std::string previewResult = "";
303     EXPECT_EQ(service->RequestPreview(printJob, previewResult), E_PRINT_NO_PERMISSION);
304     EXPECT_EQ(service->QueryPrinterCapability(printerId), E_PRINT_NO_PERMISSION);
305     std::string type = "";
306     sptr<IPrintCallback> listener = nullptr;
307     EXPECT_EQ(service->RegisterPrinterCallback(type, listener), E_PRINT_NO_PERMISSION);
308     EXPECT_EQ(service->UnregisterPrinterCallback(type), E_PRINT_NO_PERMISSION);
309     std::string extensionCID = "";
310     sptr<IPrintExtensionCallback> listenerCB = nullptr;
311     EXPECT_EQ(service->RegisterExtCallback(extensionCID, listenerCB), E_PRINT_NO_PERMISSION);
312     EXPECT_EQ(service->UnregisterAllExtCallback(extensionCID), E_PRINT_NO_PERMISSION);
313     EXPECT_EQ(service->LoadExtSuccess(extensionCID), E_PRINT_NO_PERMISSION);
314     std::string jobName = "a.jpeg";
315     PrintAttributes printAttributes;
316     EXPECT_EQ(service->PrintByAdapter(jobName, printAttributes, taskId), E_PRINT_NO_PERMISSION);
317     uint32_t fd = 46;
318     EXPECT_EQ(service->StartGetPrintFile(printJobId, printAttributes, fd), E_PRINT_NO_PERMISSION);
319     EXPECT_EQ(service->NotifyPrintService(printJobId, type), E_PRINT_NO_PERMISSION);
320     EXPECT_EQ(service->CallStatusBar(), E_PRINT_NO_PERMISSION);
321     uint32_t event = 0;
322     std::string jobId = GetDefaultJobId();
323     EXPECT_EQ(service->NotifyPrintServiceEvent(jobId, event), E_PRINT_NO_PERMISSION);
324     EXPECT_EQ(service->DestroyExtension(), E_PRINT_NO_PERMISSION);
325     std::string printerPreference = "";
326     EXPECT_EQ(service->GetPrinterPreference(printerId, printerPreference), E_PRINT_NO_PERMISSION);
327     EXPECT_EQ(service->SetPrinterPreference(printerId, printerPreference), E_PRINT_NO_PERMISSION);
328     EXPECT_EQ(service->On(taskId, type, listener), E_PRINT_NO_PERMISSION);
329     EXPECT_EQ(service->Off(taskId, type), E_PRINT_NO_PERMISSION);
330     EXPECT_EQ(service->SetDefaultPrinter(printerId, 0), E_PRINT_NO_PERMISSION);
331     EXPECT_EQ(service->DeletePrinterFromCups(printerName), E_PRINT_NO_PERMISSION);
332     std::vector<PrinterInfo> printers;
333     EXPECT_EQ(service->DiscoverUsbPrinters(printers), E_PRINT_NO_PERMISSION);
334 
335     PrintServiceMockPermission::MockPermission();
336     EXPECT_EQ(service->StartService(), E_PRINT_NONE);
337     EXPECT_EQ(service->StartPrint(fileList, fdList, taskId), E_PRINT_INVALID_PARAMETER);
338 
339     EXPECT_EQ(service->StopDiscoverPrinter(), E_PRINT_NONE);
340     EXPECT_EQ(service->StopPrint(taskId), E_PRINT_NONE);
341 }
342 /**
343 * @tc.name: PrintServiceAbilityTest_0006
344 * @tc.desc: PrintServiceAbility ctor/dtor
345 * @tc.type: FUNC CallSpooler
346 * @tc.require: has token
347 */
348 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0006, TestSize.Level1)
349 {
350     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
351     std::vector<std::string> fileList = {};
352     std::vector<uint32_t> fdList = {};
353     std::string jobId = "";
354     EXPECT_EQ(service->CallSpooler(fileList, fdList, jobId), E_PRINT_INVALID_PARAMETER);
355     jobId = "jobId";
356     EXPECT_EQ(service->CallSpooler(fileList, fdList, jobId), E_PRINT_NONE);
357 }
358 
359 /**
360 * @tc.name: PrintServiceAbilityTest_0007
361 * @tc.desc: PrintServiceAbility ctor/dtor
362 * @tc.type: FUNC SetHelper
363 * @tc.require: has token
364 */
365 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0007, TestSize.Level1)
366 {
367     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
368     std::shared_ptr<PrintServiceHelper> helper = nullptr;
369     service->SetHelper(helper);
370     EXPECT_EQ(service->helper_, helper);
371     helper = make_shared<PrintServiceHelper>();
372     if (helper != nullptr) {
373         service->SetHelper(helper);
374         EXPECT_EQ(service->helper_, helper);
375     }
376 }
377 
378 /**
379 * @tc.name: PrintServiceAbilityTest_0008
380 * @tc.desc: PrintServiceAbility ctor/dtor
381 * @tc.type: FUNC ConnectPrinter
382 * @tc.require:
383 */
384 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0008, TestSize.Level1)
385 {
386     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
387     std::string printerId ="1234";
388     EXPECT_EQ(service->ConnectPrinter(printerId), E_PRINT_INVALID_PRINTER);
389     std::shared_ptr<PrinterInfo> info = std::make_shared<PrinterInfo>();
390     service->printSystemData_.discoveredPrinterInfoList_[printerId] = info;
391     service->ConnectPrinter(printerId);
392     std::string extensionId = PrintUtils::GetExtensionId(printerId);
393     std::string cid = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_CONNECT_PRINTER);
394     sptr<IPrintExtensionCallback> extCb = nullptr;
395     service->extCallbackMap_[cid] = extCb;
396     EXPECT_EQ(service->ConnectPrinter(printerId), E_PRINT_NONE);
397     extCb = new MockPrintExtensionCallbackProxy();
398     EXPECT_NE(extCb, nullptr);
399     if (extCb != nullptr) {
400         service->extCallbackMap_.clear();
401         service->extCallbackMap_[cid] = extCb;
402     }
403     service->ConnectPrinter(printerId);
404 }
405 
406 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0009, TestSize.Level1)
407 {
408     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
409     std::string printerId ="1234";
410     EXPECT_EQ(service->DisconnectPrinter(printerId), E_PRINT_INVALID_PRINTER);
411     std::shared_ptr<PrinterInfo> info = std::make_shared<PrinterInfo>();
412     service->printSystemData_.discoveredPrinterInfoList_[printerId] = info;
413     service->DisconnectPrinter(printerId);
414     std::string extensionId = PrintUtils::GetExtensionId(printerId);
415     std::string cid = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_CONNECT_PRINTER);
416     sptr<IPrintExtensionCallback> extCb = nullptr;
417     service->extCallbackMap_[cid] = extCb;
418     EXPECT_EQ(service->DisconnectPrinter(printerId), E_PRINT_SERVER_FAILURE);
419     extCb = new MockPrintExtensionCallbackProxy();
420     EXPECT_NE(extCb, nullptr);
421     if (extCb != nullptr) {
422         service->extCallbackMap_.clear();
423         service->extCallbackMap_[cid] = extCb;
424     }
425     service->DisconnectPrinter(printerId);
426 }
427 
428 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0010, TestSize.Level1)
429 {
430     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
431     std::vector<std::string> extensionIds;
432     EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_INVALID_EXTENSION);
433 }
434 
435 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0011, TestSize.Level1)
436 {
437     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
438     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
439     service->helper_ = helper;
440     std::string extensionCid = "";
441     sptr<IPrintExtensionCallback> listener = nullptr;
442     EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_INVALID_PARAMETER);
443     extensionCid = PrintUtils::EncodeExtensionCid(GetExtensionId(TYPE_NON_EXIST), PRINT_EXTCB_START_DISCOVERY);
444     EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_INVALID_EXTENSION);
445     extensionCid = PrintUtils::EncodeExtensionCid(GetExtensionId(TYPE_UNLOAD), PRINT_EXTCB_START_DISCOVERY);
446     EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_INVALID_EXTENSION);
447     extensionCid = PrintUtils::EncodeExtensionCid(GetExtensionId(TYPE_DEFAULT), PRINT_EXTCB_MAX);
448     EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_INVALID_EXTENSION);
449     EXPECT_EQ(service->LoadExtSuccess(GetExtensionId(TYPE_NON_EXIST)), E_PRINT_INVALID_EXTENSION);
450     EXPECT_EQ(service->LoadExtSuccess(GetExtensionId(TYPE_UNLOAD)), E_PRINT_INVALID_EXTENSION);
451 }
452 
453 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0012, TestSize.Level1)
454 {
455     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
456     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
457     service->helper_ = helper;
458     std::string taskId = "";
459     std::string type = "";
460     sptr<IPrintCallback> listener = nullptr;
461     EXPECT_EQ(service->On(taskId, type, listener), E_PRINT_INVALID_PARAMETER);
462     EXPECT_EQ(service->Off(taskId, type), E_PRINT_INVALID_PARAMETER);
463     taskId = "1";
464     type = "printCallback_adapter";
465     service->On(taskId, type, listener);
466     EXPECT_EQ(service->On(taskId, type, listener), E_PRINT_INVALID_PARAMETER);
467     EXPECT_EQ(service->Off(taskId, type), E_PRINT_INVALID_PARAMETER);
468     listener = new MockPrintCallbackProxy();
469     if (listener != nullptr) {
470         service->On(taskId, type, listener);
471     }
472     service->registeredListeners_[type] = listener;
473     taskId = "";
474     EXPECT_EQ(service->On(taskId, type, listener), E_PRINT_NONE);
475     EXPECT_EQ(service->Off(taskId, type), E_PRINT_NONE);
476 }
477 
478 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0013, TestSize.Level1)
479 {
480     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
481     std::vector<PrinterInfo> printerInfos;
482     InitExtPrinterList(printerInfos, 1);
483     EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE);
484     EXPECT_EQ(service->UpdatePrinters(printerInfos), E_PRINT_NONE);
485     std::vector<std::string> printerIds;
486     InitExtPrinterIdList(printerIds, 1);
487     std::shared_ptr<PrinterInfo> info = std::make_shared<PrinterInfo>();
488     info->SetPrinterId(printerIds[0]);
489     std::string printerId = printerIds[0];
490     service->printSystemData_.discoveredPrinterInfoList_[printerId] = info;
491     EXPECT_EQ(service->RemovePrinters(printerIds), E_PRINT_NONE);
492     std::vector<std::string> newPrinterIds;
493     newPrinterIds.push_back("1234");
494     auto cupsPrinter = std::make_shared<CupsPrinterInfo>();
495     service->printSystemData_.addedPrinterMap_.Insert(printerId, cupsPrinter);
496     service->RemovePrinters(newPrinterIds);
497     printerInfos.clear();
498     EXPECT_EQ(service->UpdatePrinters(printerInfos), E_PRINT_NONE);
499 }
500 
501 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0014, TestSize.Level1)
502 {
503     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
504     PrintJob testJob;
505     std::string jobId = GetDefaultJobId();
506     testJob.SetJobId(jobId);
507     testJob.SetPrinterId(GetDefaultPrinterId());
508     EXPECT_EQ(service->StartPrintJob(testJob), E_PRINT_INVALID_PRINTJOB);
509     std::shared_ptr<PrintJob> job = std::make_shared<PrintJob>();
510     service->printJobList_["1"] = job;
511     EXPECT_EQ(service->StartPrintJob(testJob), E_PRINT_INVALID_PRINTJOB);
512     service->printJobList_["0"] = job;
513     std::string extensionId = PrintUtils::GetExtensionId(GetDefaultPrinterId());
514     sptr<IPrintExtensionCallback> listener = nullptr;
515     std::string cid = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_START_PRINT);
516     service->extCallbackMap_[cid] = listener;
517     service->StartPrintJob(testJob);
518 }
519 
520 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0018, TestSize.Level1)
521 {
522     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
523     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
524     service->helper_ = helper;
525     std::string jobId ="1";
526     uint32_t state = PRINT_JOB_PREPARED;
527     uint32_t subState = PRINT_JOB_COMPLETED_SUCCESS;
528     service->notifyAdapterJobChanged(jobId, state, subState);
529     auto attrIt = service->printAttributesList_.find(jobId);
530     EXPECT_EQ(attrIt, service->printAttributesList_.end());
531     PrintAttributes attr;
532     service->printAttributesList_[jobId] = attr;
533     service->notifyAdapterJobChanged(jobId, state, subState);
534     attrIt = service->printAttributesList_.find(jobId);
535     EXPECT_NE(attrIt, service->printAttributesList_.end());
536     sptr<IPrintCallback> listener = nullptr;
537     service->adapterListenersByJobId_[jobId] = listener;
538     service->notifyAdapterJobChanged(jobId, state, subState);
539     attrIt = service->printAttributesList_.find(jobId);
540     EXPECT_NE(attrIt, service->printAttributesList_.end());
541 }
542 
543 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0019, TestSize.Level1)
544 {
545     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
546     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
547     service->helper_ = helper;
548     std::string jobId ="1";
549     uint32_t state = PRINT_JOB_PREPARED;
550     uint32_t subState = PRINT_JOB_COMPLETED_SUCCESS;
551 
552     state = PRINT_JOB_BLOCKED;
553     service->notifyAdapterJobChanged(jobId, state, subState);
554     auto attrIt = service->printAttributesList_.find(jobId);
555     EXPECT_EQ(attrIt, service->printAttributesList_.end());
556 }
557 
558 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0020, TestSize.Level1)
559 {
560     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
561     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
562     service->helper_ = helper;
563     std::string jobName = "a.jpeg";
564     PrintAttributes printAttributes;
565     std::string taskId ="1";
566     EXPECT_EQ(service->PrintByAdapter(jobName, printAttributes, taskId), E_PRINT_NONE);
567 }
568 
569 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0021, TestSize.Level1)
570 {
571     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
572     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
573     service->helper_ = helper;
574     std::string jobId = "1";
575     PrintAttributes printAttributes;
576     uint32_t fd = 46;
577     sptr<IPrintCallback> listener = nullptr;
578     service->adapterListenersByJobId_[jobId] = listener;
579     EXPECT_EQ(service->StartGetPrintFile(jobId, printAttributes, fd), E_PRINT_NONE);
580     service->adapterListenersByJobId_.clear();
581 
582     EXPECT_EQ(service->StartGetPrintFile(jobId, printAttributes, fd), E_PRINT_NONE);
583     service->printAttributesList_[jobId] = printAttributes;
584     EXPECT_EQ(service->StartGetPrintFile(jobId, printAttributes, fd), E_PRINT_NONE);
585     std::string newJobId = "2";
586     EXPECT_EQ(service->StartGetPrintFile(newJobId, printAttributes, fd), E_PRINT_NONE);
587 }
588 
589 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0022, TestSize.Level1)
590 {
591     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
592     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
593     service->helper_ = helper;
594     std::string printerId = "1234";
595     std::shared_ptr<PrinterInfo> info =std::make_shared<PrinterInfo>();
596     service->printSystemData_.discoveredPrinterInfoList_[printerId] = info;
597     EXPECT_EQ(service->printSystemData_.QueryDiscoveredPrinterInfoById(printerId), info);
598 }
599 
600 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0024, TestSize.Level1)
601 {
602     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
603     PrintJob jobInfo;
604     service->CheckJobQueueBlocked(jobInfo);
605     EXPECT_EQ(service->isJobQueueBlocked_, false);
606 }
607 
608 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0025, TestSize.Level1)
609 {
610     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
611     std::string extensionId = "com.ohos.spooler:0";
612     EXPECT_EQ(service->DelayStartDiscovery(extensionId), false);
613     service->extensionStateList_[extensionId] = PRINT_EXTENSION_UNLOAD;
614     EXPECT_EQ(service->DelayStartDiscovery(extensionId), false);
615     std::string cid = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_STOP_DISCOVERY);
616     sptr<IPrintExtensionCallback> listener = nullptr;
617     service->extCallbackMap_[cid] = listener;
618     EXPECT_EQ(service->DelayStartDiscovery(extensionId), false);
619     cid = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_START_DISCOVERY);
620     service->extCallbackMap_.clear();
621     service->extCallbackMap_[cid] = listener;
622     EXPECT_EQ(service->DelayStartDiscovery(extensionId), false);
623 }
624 
625 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0026, TestSize.Level1)
626 {
627     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
628     service->state_ = ServiceRunningState::STATE_NOT_START;
629     service->OnStop();
630     EXPECT_EQ(service->state_, ServiceRunningState::STATE_NOT_START);
631     service->state_ = ServiceRunningState::STATE_RUNNING;
632     service->OnStop();
633     EXPECT_EQ(service->state_, ServiceRunningState::STATE_NOT_START);
634 }
635 
636 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0028, TestSize.Level1)
637 {
638     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
639     std::string extensionId = "com.ohos.spooler:0";
640     service->extensionStateList_[extensionId] = PRINT_EXTENSION_UNLOAD;
641     EXPECT_EQ(service->StopDiscoverPrinter(), E_PRINT_NONE);
642     service->extensionStateList_[extensionId] = PRINT_EXTENSION_LOADED;
643     EXPECT_EQ(service->StopDiscoverPrinter(), E_PRINT_NONE);
644     std::string cid = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_STOP_DISCOVERY);
645     sptr<IPrintExtensionCallback> listener = nullptr;
646     service->extCallbackMap_[cid] = listener;
647     EXPECT_EQ(service->StopDiscoverPrinter(), E_PRINT_NONE);
648 }
649 
650 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0029, TestSize.Level1)
651 {
652     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
653     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
654     service->helper_ = helper;
655     std::vector<PrintJob> printJobs;
656     int32_t userId = 100;
657     std::shared_ptr<PrintUserData> userData = std::make_shared<PrintUserData>();
658     service->printUserMap_.insert(std::make_pair(userId, userData));
659     service->QueryAllPrintJob(printJobs);
660 }
661 
662 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0030, TestSize.Level1)
663 {
664     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
665     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
666     service->helper_ = helper;
667     std::vector<PrintJob> printJobs;
668     service->QueryAllPrintJob(printJobs);
669     int32_t userId = 100;
670     service->printUserMap_.insert(std::make_pair(userId, nullptr));
671     service->QueryAllPrintJob(printJobs);
672 }
673 
674 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0031, TestSize.Level1)
675 {
676     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
677     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
678     service->helper_ = helper;
679     std::vector<std::string> printerList;
680     EXPECT_EQ(service->QueryAddedPrinter(printerList), E_PRINT_NONE);
681 }
682 
683 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0032, TestSize.Level1)
684 {
685     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
686     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
687     service->helper_ = helper;
688     std::string printerId = "com.ohos.spooler:p2p://DIRECT-PixLab_V1-1620";
689     std::vector<std::string> keyList;
690     std::vector<std::string> valueList;
691     EXPECT_EQ(service->QueryPrinterProperties(printerId, keyList, valueList), E_PRINT_INVALID_PRINTER);
692     auto printerInfo = std::make_shared<PrinterInfo>();
693     service->printSystemData_.addedPrinterInfoList_[printerId] = printerInfo;
694     keyList.push_back("printerId");
695     keyList.push_back("printerName");
696     EXPECT_EQ(service->QueryPrinterProperties(printerId, keyList, valueList), E_PRINT_INVALID_PRINTER);
697 }
698 
699 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0033, TestSize.Level1)
700 {
701     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
702     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
703     service->helper_ = helper;
704     std::string printerId = "com.ohos.spooler:p2p://DIRECT-PixLab_V1-1620";
705     PrinterInfo info;
706     EXPECT_EQ(service->QueryPrinterInfoByPrinterId(printerId, info), E_PRINT_INVALID_PRINTER);
707     auto printerInfo = std::make_shared<CupsPrinterInfo>();
708     printerInfo->name = "testName";
709     printerInfo->uri = "testUri";
710     printerInfo->maker = "testMaker";
711     service->printSystemData_.addedPrinterMap_.Insert(printerId, printerInfo);
712     EXPECT_EQ(service->QueryPrinterInfoByPrinterId(printerId, info), E_PRINT_NONE);
713 }
714 
715 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0034, TestSize.Level1)
716 {
717     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
718     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
719     service->helper_ = helper;
720     std::string printJobId = "1";
721     PrintJob printJob;
722     EXPECT_EQ(service->QueryPrintJobById(printJobId, printJob), E_PRINT_INVALID_USERID);
723     int32_t userId = 100;
724     service->printUserMap_.insert(std::make_pair(userId, nullptr));
725     EXPECT_EQ(service->QueryPrintJobById(printJobId, printJob), E_PRINT_INVALID_USERID);
726 }
727 
728 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0035, TestSize.Level1)
729 {
730     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
731     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
732     service->helper_ = helper;
733     std::string printerUri = "testPrinterUri";
734     std::string printerName = "testPrinterName";
735     std::string printerMake = "testPrinterMake";
736     EXPECT_EQ(service->AddPrinterToCups(printerUri, printerName, printerMake), E_PRINT_SERVER_FAILURE);
737 }
738 
739 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0036, TestSize.Level1)
740 {
741     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
742     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
743     service->helper_ = helper;
744     PrintJob printJob1;
745     printJob1.SetOption("test");
746     EXPECT_EQ(service->UpdatePrintJobOptionByPrinterId(printJob1), false);
747 
748     PrintJob printJob2;
749     std::string printerId = "com.ohos.spooler:p2p://DIRECT-PixLab_V1-1620";
750     printJob2.SetPrinterId(printerId);
751     auto printerInfo = std::make_shared<CupsPrinterInfo>();
752     printerInfo->name = "testName";
753     printerInfo->uri = "testUri";
754     printerInfo->maker = "testMaker";
755     service->printSystemData_.addedPrinterMap_.Insert(printerId, printerInfo);
756     EXPECT_EQ(service->UpdatePrintJobOptionByPrinterId(printJob2), false);
757 
758     nlohmann::json infoJson;
759     infoJson["printerName"] = "testPrinterName";
760     printJob2.SetOption(infoJson.dump());
761     EXPECT_EQ(service->UpdatePrintJobOptionByPrinterId(printJob2), true);
762     service->StartNativePrintJob(printJob2);
763     std::string extensionId = PrintUtils::GetExtensionId(printerId);
764     std::string cid = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_START_PRINT);
765     sptr<IPrintExtensionCallback> extCb = nullptr;
766     service->extCallbackMap_[cid] = extCb;
767     service->StartNativePrintJob(printJob2);
768 }
769 
770 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0037, TestSize.Level1)
771 {
772     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
773     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
774     service->helper_ = helper;
775     PrintJob printJob;
776     std::string jobId = GetDefaultJobId();
777     auto nativePrintJob = std::make_shared<PrintJob>();
778     nativePrintJob->UpdateParams(printJob);
779     nativePrintJob->Dump();
780     service->AddToPrintJobList(jobId, nativePrintJob);
781     EXPECT_NE(service->AddNativePrintJob(jobId, printJob), nativePrintJob);
782 }
783 
784 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0038, TestSize.Level1)
785 {
786     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
787     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
788     service->helper_ = helper;
789     PrintJob printJob;
790     std::string printerId = "com.ohos.spooler:p2p://DIRECT-PixLab_V1-1620";
791     printJob.SetPrinterId(printerId);
792     auto printerInfo = std::make_shared<CupsPrinterInfo>();
793     printerInfo->name = "testName";
794     printerInfo->uri = "testUri";
795     printerInfo->maker = "testMaker";
796     service->printSystemData_.addedPrinterMap_.Insert(printerId, printerInfo);
797     printJob.SetOption("test");
798     EXPECT_EQ(service->StartNativePrintJob(printJob), E_PRINT_INVALID_PRINTER);
799 }
800 
801 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0040, TestSize.Level1)
802 {
803     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
804     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
805     service->helper_ = helper;
806     std::shared_ptr<PrintJob> printJob = std::make_shared<PrintJob>();
807     std::string jobId = GetDefaultJobId();
808     service->UpdateQueuedJobList(jobId, printJob);
809     service->UpdateQueuedJobList("0", printJob);
810     for (int i = 0; i < MAX_JOBQUEUE_NUM + 1; i++) {
811         service->queuedJobList_.insert(std::make_pair(std::to_string(i), printJob));
812     }
813     service->UpdateQueuedJobList("515", printJob);
814     int32_t userId = 100;
815     service->printUserMap_.insert(std::make_pair(userId, nullptr));
816     service->UpdateQueuedJobList("515", printJob);
817     service->printAppCount_ = 3;
818     std::string type ="0";
819     EXPECT_EQ(service->NotifyPrintService(jobId, type), E_PRINT_NONE);
820     type = "spooler_closed_for_started";
821     EXPECT_EQ(service->NotifyPrintService(jobId, type), E_PRINT_NONE);
822     type = "spooler_closed_for_cancelled";
823     EXPECT_EQ(service->NotifyPrintService(jobId, type), E_PRINT_NONE);
824     type = "";
825     EXPECT_EQ(service->NotifyPrintService(jobId, type), E_PRINT_INVALID_PARAMETER);
826 }
827 
828 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0041, TestSize.Level1)
829 {
830     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
831     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
832     service->helper_ = helper;
833     std::string jobId = GetDefaultJobId();
834     EXPECT_EQ(service->CancelPrintJob(jobId), E_PRINT_INVALID_USERID);
835     int32_t userId = 100;
836     service->printUserMap_.insert(std::make_pair(userId, nullptr));
837     EXPECT_EQ(service->CancelPrintJob(jobId), E_PRINT_INVALID_USERID);
838 }
839 
840 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0042, TestSize.Level1)
841 {
842     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
843     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
844     service->helper_ = helper;
845     PrintJob printJob;
846     printJob.SetJobId(GetDefaultJobId());
847     service->SetPrintJobCanceled(printJob);
848     auto testPrintJob = std::make_shared<PrintJob>(printJob);
849     std::string testJobId = testPrintJob->GetJobId();
850     auto attrIt = service->printAttributesList_.find(testJobId);
851     EXPECT_EQ(attrIt, service->printAttributesList_.end());
852     std::string jobId = "123";
853     printJob.SetJobId(jobId);
854     int32_t userId = 100;
855     service->userJobMap_[jobId] = userId;
856     std::shared_ptr<PrintUserData> userData = std::make_shared<PrintUserData>();
857     service->printUserMap_[userId] = userData;
858     service->SetPrintJobCanceled(printJob);
859     testPrintJob = std::make_shared<PrintJob>(printJob);
860     testJobId = testPrintJob->GetJobId();
861     attrIt = service->printAttributesList_.find(testJobId);
862     EXPECT_EQ(attrIt, service->printAttributesList_.end());
863 }
864 
865 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0043, TestSize.Level1)
866 {
867     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
868     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
869     service->helper_ = helper;
870     int32_t userId = 100;
871     service->CancelUserPrintJobs(userId);
872     auto userIt = service->printUserMap_.find(userId);
873     EXPECT_EQ(userIt, service->printUserMap_.end());
874 
875     service->printUserMap_.insert(std::make_pair(userId, nullptr));
876     service->CancelUserPrintJobs(userId);
877     userIt = service->printUserMap_.find(userId);
878     EXPECT_NE(userIt, service->printUserMap_.end());
879 
880     std::shared_ptr<PrintUserData> userData = std::make_shared<PrintUserData>();
881     service->printUserMap_[userId] = userData;
882     service->CancelUserPrintJobs(userId);
883     userIt = service->printUserMap_.find(userId);
884     EXPECT_EQ(userIt, service->printUserMap_.end());
885 }
886 
887 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0044, TestSize.Level1)
888 {
889     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
890     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
891     service->helper_ = helper;
892     PrintJob printJob;
893     std::string printerId = "com.ohos.spooler:p2p://DIRECT-PixLab_V1-1620";
894     EXPECT_EQ(service->SendQueuePrintJob(printerId), false);
895 
896     std::string jobId = GetDefaultJobId();
897     service->printerJobMap_[printerId].insert(std::make_pair(jobId, true));
898     EXPECT_EQ(service->SendQueuePrintJob(printerId), false);
899     int32_t userId = 100;
900     std::shared_ptr<PrintUserData> userData = std::make_shared<PrintUserData>();
901     service->printUserMap_[userId] = userData;
902     EXPECT_EQ(service->SendQueuePrintJob(printerId), false);
903 }
904 
905 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0045, TestSize.Level1)
906 {
907     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
908     std::string printerUri = "111.222.333";
909     std::string printerId = "pixlab_0759";
910     PrinterCapability printerCaps;
911     EXPECT_EQ(service->QueryPrinterCapabilityByUri(printerUri, printerId, printerCaps), E_PRINT_NONE);
912 }
913 
914 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0046, TestSize.Level1)
915 {
916     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
917     std::string jobId = "1";
918     std::shared_ptr<PrintJob> printJob = std::make_shared<PrintJob>();
919     service->StartPrintJobCB(jobId, printJob);
920     EXPECT_EQ(printJob->jobState_, PRINT_JOB_QUEUED);
921 }
922 
923 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0048, TestSize.Level1)
924 {
925     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
926     uint32_t state = PRINTER_UNKNOWN + 1;
927     std::string printerId ="1234";
928     EXPECT_EQ(service->UpdatePrinterState(printerId, state), E_PRINT_INVALID_PARAMETER);
929     state = PrinterState::PRINTER_ADDED;
930     EXPECT_EQ(service->UpdatePrinterState(printerId, state), E_PRINT_INVALID_PRINTER);
931     std::shared_ptr<PrinterInfo> info = std::make_shared<PrinterInfo>();
932     service->printSystemData_.discoveredPrinterInfoList_[printerId] = info;
933     EXPECT_EQ(service->UpdatePrinterState(printerId, state), E_PRINT_INVALID_PRINTER);
934 }
935 
936 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0049, TestSize.Level1)
937 {
938     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
939     std::string jobId = "1";
940     uint32_t state = PRINTER_UNKNOWN + 1;
941     uint32_t subState = 0;
942     EXPECT_EQ(service->checkJobState(state, subState), true);
943     service->UpdatePrintJobState(jobId, state, subState);
944     state = PRINT_JOB_BLOCKED;
945     subState = PRINT_JOB_BLOCKED_OFFLINE - 1;
946     EXPECT_EQ(service->checkJobState(state, subState), false);
947     EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_INVALID_PARAMETER);
948     subState = PRINT_JOB_BLOCKED_UNKNOWN + 1;
949     EXPECT_EQ(service->checkJobState(state, subState), true);
950     EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_INVALID_USERID);
951     state = PRINT_JOB_COMPLETED;
952     subState = PRINT_JOB_COMPLETED_FILE_CORRUPT + 1;
953     EXPECT_EQ(service->checkJobState(state, subState), false);
954     EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_INVALID_PARAMETER);
955 }
956 
957 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0050, TestSize.Level1)
958 {
959     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
960     std::string jobId = "1";
961     uint32_t state = PRINT_JOB_CREATE_FILE_COMPLETED;
962     uint32_t subState = 0;
963     EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), false);
964 }
965 
966 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0051, TestSize.Level1)
967 {
968     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
969     std::string jobId = "1";
970     uint32_t state = PRINTER_UNKNOWN;
971     uint32_t subState = 0;
972     EXPECT_EQ(service->AdapterGetFileCallBack(jobId, state, subState), E_PRINT_NONE);
973     std::string type = PRINT_GET_FILE_EVENT_TYPE;
974     sptr<IPrintCallback>  listener = new MockPrintCallbackProxy();
975     service->registeredListeners_[type] = listener;
976     service->AdapterGetFileCallBack(jobId, state, subState);
977     subState = PRINT_JOB_CREATE_FILE_COMPLETED_SUCCESS;
978     service->AdapterGetFileCallBack(jobId, state, subState);
979     subState = PRINT_JOB_CREATE_FILE_COMPLETED_FAILED;
980     service->AdapterGetFileCallBack(jobId, state, subState);
981 }
982 
983 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0052, TestSize.Level1)
984 {
985     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
986     std::string jobId = "1";
987     int32_t userId = 100;
988     service->userJobMap_[jobId] = userId;
989     std::shared_ptr<PrintUserData> userData = std::make_shared<PrintUserData>();
990     service->printUserMap_[userId] = userData;
991     uint32_t state = PRINTER_UNKNOWN;
992     uint32_t subState = 0;
993     EXPECT_EQ(service->CheckAndSendQueuePrintJob(jobId, state, subState), E_PRINT_INVALID_PRINTJOB);
994     std::shared_ptr<PrintJob> printJob = std::make_shared<PrintJob>();
995     userData->printJobList_[jobId] = printJob;
996     state = PRINT_JOB_BLOCKED;
997     std::string printerId = "1234";
998     printJob->SetPrinterId(printerId);
999     service->printerJobMap_[printerId].insert(std::make_pair(jobId, true));
1000     auto printerInfo = std::make_shared<PrinterInfo>();
1001     service->printSystemData_.addedPrinterInfoList_[printerId] = printerInfo;
1002     service->printSystemData_.discoveredPrinterInfoList_[printerId] = printerInfo;
1003     EXPECT_EQ(service->CheckAndSendQueuePrintJob(jobId, state, subState), E_PRINT_NONE);
1004     userData->queuedJobList_[jobId] = printJob;
1005     state = PRINT_JOB_COMPLETED;
1006     EXPECT_EQ(service->CheckAndSendQueuePrintJob(jobId, state, subState), E_PRINT_NONE);
1007 }
1008 
1009 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0053, TestSize.Level1)
1010 {
1011     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1012     std::string jobId = "1";
1013     EXPECT_EQ(service->IsQueuedJobListEmpty(jobId), false);
1014     int32_t userId = 100;
1015     service->userJobMap_[jobId] = userId;
1016     std::shared_ptr<PrintUserData> userData = std::make_shared<PrintUserData>();
1017     auto printJob = std::make_shared<PrintJob>();
1018     userData->queuedJobList_[jobId] = printJob;
1019     service->printUserMap_[userId] = userData;
1020     EXPECT_EQ(service->IsQueuedJobListEmpty(jobId), false);
1021     userData->queuedJobList_.clear();
1022     service->currentUserId_ = 0;
1023     EXPECT_EQ(service->IsQueuedJobListEmpty(jobId), false);
1024     service->currentUserId_ = 100;
1025     EXPECT_EQ(service->IsQueuedJobListEmpty(jobId), true);
1026 }
1027 
1028 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0055, TestSize.Level1)
1029 {
1030     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1031     uint32_t event = -1;
1032     std::string jobId = GetDefaultJobId();
1033     EXPECT_EQ(service->NotifyPrintServiceEvent(jobId, event), E_PRINT_INVALID_PARAMETER);
1034     event = 3;
1035     EXPECT_EQ(service->NotifyPrintServiceEvent(jobId, event), E_PRINT_INVALID_PARAMETER);
1036     event = 0;
1037     service->NotifyPrintServiceEvent(jobId, event);
1038     auto printJob = std::make_shared<PrintJob>();
1039     service->printJobList_[jobId] = printJob;
1040     service->NotifyPrintServiceEvent(jobId, event);
1041     event = 1;
1042     service->NotifyPrintServiceEvent(jobId, event);
1043     event = 2;
1044     service->NotifyPrintServiceEvent(jobId, event);
1045     event = 3;
1046     service->NotifyPrintServiceEvent(jobId, event);
1047 }
1048 
1049 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0056, TestSize.Level1)
1050 {
1051     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1052     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
1053     service->helper_ = helper;
1054     std::string type = "";
1055     sptr<IPrintCallback> listener = nullptr;
1056     EXPECT_EQ(service->RegisterPrinterCallback(type, listener), E_PRINT_INVALID_PARAMETER);
1057     EXPECT_EQ(service->UnregisterPrinterCallback(type), E_PRINT_INVALID_TOKEN);
1058     sptr<IPrintCallback> listener2 = new MockPrintCallbackProxy();
1059     service->RegisterPrinterCallback(type, listener2);
1060     service->UnregisterPrinterCallback(type);
1061 }
1062 
1063 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0057, TestSize.Level1)
1064 {
1065     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1066     int event = 0;
1067     PrinterInfo info;
1068     EXPECT_EQ(service->SendPrinterChangeEvent(event, info), 0);
1069 }
1070 
1071 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0058, TestSize.Level1)
1072 {
1073     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1074     std::shared_ptr<PrintJob> jobInfo = std::make_shared<PrintJob>();
1075     std::string printerId = "1234";
1076     uint32_t subState = 0;
1077     EXPECT_NE(service->ReportHisysEvent(jobInfo, printerId, subState), 0);
1078     printerId = "ePrintID";
1079     EXPECT_NE(service->ReportHisysEvent(jobInfo, printerId, subState), 0);
1080     std::shared_ptr<PrinterInfo> printInfo = std::make_shared<PrinterInfo>();
1081     printInfo->SetPrinterName("Direct0759");
1082     service->printSystemData_.discoveredPrinterInfoList_[printerId] = printInfo;
1083     EXPECT_NE(service->ReportHisysEvent(jobInfo, printerId, subState), 0);
1084     nlohmann::json infoJson;
1085     infoJson["printerUri"] = "ipp123";
1086     jobInfo->SetOption(infoJson.dump());
1087     EXPECT_NE(service->ReportHisysEvent(jobInfo, printerId, subState), 0);
1088     infoJson["jobDescription"] = "testPrinter";
1089     jobInfo->SetOption(infoJson.dump());
1090     EXPECT_NE(service->ReportHisysEvent(jobInfo, printerId, subState), 0);
1091 }
1092 
1093 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0059, TestSize.Level1)
1094 {
1095     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1096     PrintJob jobInfo;
1097     std::string previewResult = "";
1098     service->RequestPreview(jobInfo, previewResult);
1099 
1100     std::string extensionId = "DEFAULT_EXTENSION_ID";
1101     std::string extInfo = "spooler";
1102     service->SendExtensionEvent(extensionId, extInfo);
1103     EXPECT_EQ(service->UnregisterAllExtCallback(extensionId), E_PRINT_NONE);
1104 }
1105 
1106 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0060, TestSize.Level1)
1107 {
1108     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1109     AppExecFwk::ExtensionAbilityInfo extInfo;
1110     extInfo.bundleName = "spooler";
1111 
1112     PrintExtensionInfo newExtInfo;
1113     PrintExtensionInfo judgeExtInfo;
1114     judgeExtInfo.SetExtensionId(extInfo.bundleName);
1115     judgeExtInfo.SetVendorId(extInfo.bundleName);
1116     judgeExtInfo.SetVendorName(extInfo.bundleName);
1117     judgeExtInfo.SetVendorIcon(0);
1118     judgeExtInfo.SetVersion("1.0.0");
1119     newExtInfo = service->ConvertToPrintExtensionInfo(extInfo);
1120     EXPECT_EQ(newExtInfo.extensionId_, judgeExtInfo.extensionId_);
1121     EXPECT_EQ(newExtInfo.vendorId_, judgeExtInfo.vendorId_);
1122     EXPECT_EQ(newExtInfo.vendorName_, judgeExtInfo.vendorName_);
1123     EXPECT_EQ(newExtInfo.vendorIcon_, judgeExtInfo.vendorIcon_);
1124     EXPECT_EQ(newExtInfo.version_, judgeExtInfo.version_);
1125 }
1126 
1127 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0061, TestSize.Level1)
1128 {
1129     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1130     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
1131     service->helper_ = helper;
1132     std::string jobId = "123";
1133     int32_t userId = 100;
1134     service->userJobMap_[jobId] = userId;
1135     std::shared_ptr<PrintUserData> userData = std::make_shared<PrintUserData>();
1136     service->printUserMap_[userId] = userData;
1137     EXPECT_EQ(service->CancelPrintJob(jobId), E_PRINT_INVALID_PRINTJOB);
1138     std::shared_ptr<PrintJob> printJob = std::make_shared<PrintJob>();
1139     userData->queuedJobList_[jobId] = printJob;
1140     EXPECT_EQ(service->CancelPrintJob(jobId), E_PRINT_NONE);
1141     printJob->SetJobState(PRINT_JOB_RUNNING);
1142     EXPECT_EQ(service->CancelPrintJob(jobId), E_PRINT_NONE);
1143     printJob->SetPrinterId("1234");
1144     std::string extensionId = PrintUtils::GetExtensionId("1234");
1145     std::string cid = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_CANCEL_PRINT);
1146     sptr<IPrintExtensionCallback> extCb = nullptr;
1147     service->extCallbackMap_[cid] = extCb;
1148     EXPECT_EQ(service->CancelPrintJob(jobId), E_PRINT_NONE);
1149     printJob->SetPrinterId("com.ohos.spooler:p2p://DIRECT-PixLab_V1-1620");
1150     std::string extensionId2 = PrintUtils::GetExtensionId("com.ohos.spooler:p2p://DIRECT-PixLab_V1-1620");
1151     std::string cid2 = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_CANCEL_PRINT);
1152     service->extCallbackMap_[cid2] = extCb;
1153     EXPECT_EQ(service->CancelPrintJob(jobId), E_PRINT_NONE);
1154 }
1155 
1156 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0062, TestSize.Level1)
1157 {
1158     DelayedSingleton<PrintBMSHelper>::GetInstance()->hasBms = false;
1159     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1160     std::vector<std::string> extensionIds;
1161     std::string extensionId = "com.ohos.spooler";
1162     extensionIds.push_back(extensionId);
1163     EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_INVALID_EXTENSION);
1164     std::vector<PrintExtensionInfo> extensionInfos;
1165     service->QueryAllExtension(extensionInfos);
1166     service->StartDiscoverPrinter(extensionIds);
1167 }
1168 
1169 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0063, TestSize.Level1)
1170 {
1171     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1172     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
1173     service->helper_ = helper;
1174     std::string extensionId = "com.ohos.spooler:0";
1175     service->extensionStateList_[extensionId] = PRINT_EXTENSION_UNLOAD;
1176     EXPECT_EQ(service->DestroyExtension(), E_PRINT_NONE);
1177     service->extensionStateList_[extensionId] = PRINT_EXTENSION_LOADED;
1178     EXPECT_EQ(service->DestroyExtension(), E_PRINT_NONE);
1179     std::string cid = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_DESTROY_EXTENSION);
1180     sptr<IPrintExtensionCallback> listener = nullptr;
1181     service->extCallbackMap_[cid] = listener;
1182     EXPECT_EQ(service->DestroyExtension(), E_PRINT_NONE);
1183 }
1184 
1185 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0064, TestSize.Level1)
1186 {
1187     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1188     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
1189     service->helper_ = helper;
1190     std::string printerId = "com.ohos.spooler:p2p://DIRECT-PixLab_V1-1620";
1191     PrinterInfo info;
1192     EXPECT_EQ(service->QueryPrinterInfoByPrinterId(printerId, info), E_PRINT_INVALID_PRINTER);
1193     auto printerInfo = std::make_shared<CupsPrinterInfo>();
1194     printerInfo->name = "testName";
1195     printerInfo->uri = "testUri";
1196     printerInfo->maker = "testMaker";
1197     PrinterCapability caps;
1198     nlohmann::json opsJson;
1199     opsJson["key"] = "value";
1200     caps.SetOption(opsJson.dump());
1201     std::vector<PrintPageSize> pageSizeList;
1202     PrintPageSize pageSize;
1203     pageSizeList.push_back(pageSize);
1204     caps.SetSupportedPageSize(pageSizeList);
1205     printerInfo->printerCapability = caps;
1206     service->printSystemData_.addedPrinterMap_.Insert(printerId, printerInfo);
1207     EXPECT_EQ(service->QueryPrinterInfoByPrinterId(printerId, info), E_PRINT_NONE);
1208 }
1209 
1210 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0065, TestSize.Level1)
1211 {
1212     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1213     std::string printerId = "com.ohos.spooler:p2p://DIRECT-PixLab_V1-1620";
1214     auto info = std::make_shared<PrinterInfo>();
1215     info->SetPrinterId(printerId);
1216     service->printSystemData_.addedPrinterInfoList_[printerId] = info;
1217     std::vector<std::string> keyList;
1218     keyList.emplace_back("pagesizeId");
1219     keyList.emplace_back("orientation");
1220     keyList.emplace_back("duplex");
1221     keyList.emplace_back("quality");
1222     keyList.emplace_back("test");
1223     std::vector<std::string> valueList;
1224     EXPECT_EQ(service->QueryPrinterProperties(printerId, keyList, valueList), E_PRINT_INVALID_PRINTER);
1225 }
1226 
1227 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0066, TestSize.Level1)
1228 {
1229     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1230     std::string printerId = "com.ohos.spooler:p2p://DIRECT-PixLab_V1-1620";
1231     auto info = std::make_shared<PrinterInfo>();
1232     info->SetPrinterId(printerId);
1233     service->printSystemData_.addedPrinterInfoList_[printerId] = info;
1234     std::string savePrinterPreference = "test";
1235     service->printerIdAndPreferenceMap_[printerId] = savePrinterPreference;
1236     std::vector<std::string> keyList;
1237     keyList.emplace_back("pagesizeId");
1238     keyList.emplace_back("orientation");
1239     keyList.emplace_back("duplex");
1240     keyList.emplace_back("quality");
1241     keyList.emplace_back("test");
1242     std::vector<std::string> valueList;
1243     EXPECT_EQ(service->QueryPrinterProperties(printerId, keyList, valueList), E_PRINT_INVALID_PRINTER);
1244 }
1245 
1246 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0067, TestSize.Level1)
1247 {
1248     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1249     std::string printerId = "com.ohos.spooler:p2p://DIRECT-PixLab_V1-1620";
1250     std::string printerExtId = PrintUtils::GetGlobalId("", printerId);
1251     service->printerIdAndPreferenceMap_[printerExtId] = "test";
1252     PrinterCapability printerCaps;
1253     printerCaps.SetOption("test");
1254     std::string printerUri = "ipp://192.168.186.1:631/ipp/print";
1255     EXPECT_EQ(service->QueryPrinterCapabilityByUri(printerUri, printerId, printerCaps), E_PRINT_NONE);
1256 }
1257 
1258 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0068, TestSize.Level1)
1259 {
1260     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1261     std::string printerId = "com.ohos.spooler:p2p://DIRECT-PixLab_V1-1620";
1262     std::string printerExtId = PrintUtils::GetGlobalId("", printerId);
1263     service->printerIdAndPreferenceMap_["123"] = "test";
1264     PrinterCapability printerCaps;
1265     printerCaps.SetOption("test");
1266     std::string printerUri = "ipp://192.168.186.1:631/ipp/print";
1267     EXPECT_EQ(service->QueryPrinterCapabilityByUri(printerUri, printerId, printerCaps), E_PRINT_NONE);
1268 }
1269 
1270 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0069, TestSize.Level1)
1271 {
1272     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1273     std::string printerId = "com.ohos.spooler:p2p://DIRECT-PixLab_V1-1620";
1274     PrinterCapability printerCaps;
1275     std::string printerUri = "ipp://192.168.186.1:631/ipp/print";
1276     service->printSystemData_.discoveredPrinterInfoList_["123"] = nullptr;
1277     auto printerInfo = std::make_shared<PrinterInfo>();
1278     service->printSystemData_.discoveredPrinterInfoList_["456"] = printerInfo;
1279     service->printSystemData_.discoveredPrinterInfoList_[printerId] = printerInfo;
1280     EXPECT_EQ(service->QueryPrinterCapabilityByUri(printerUri, printerId, printerCaps), E_PRINT_NONE);
1281 }
1282 
1283 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0071, TestSize.Level1)
1284 {
1285     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1286     PreferenceSetting printerDefaultAttr;
1287     nlohmann::json capOpt;
1288     service->BuildPrinterPreferenceByDefault(capOpt, printerDefaultAttr);
1289     capOpt["defaultPageSizeId"] = 123;
1290     capOpt["orientation-requested-default"] = 123;
1291     capOpt["sides-default"] = 123;
1292     capOpt["print-quality-default"] = 123;
1293     service->BuildPrinterPreferenceByDefault(capOpt, printerDefaultAttr);
1294     capOpt["defaultPageSizeId"] = "123";
1295     capOpt["orientation-requested-default"] = "123";
1296     capOpt["sides-default"] = "123";
1297     capOpt["print-quality-default"] = "123";
1298     service->BuildPrinterPreferenceByDefault(capOpt, printerDefaultAttr);
1299     EXPECT_EQ(printerDefaultAttr.pagesizeId, capOpt["defaultPageSizeId"].get<std::string>());
1300     EXPECT_EQ(printerDefaultAttr.orientation, capOpt["orientation-requested-default"].get<std::string>());
1301     EXPECT_EQ(printerDefaultAttr.duplex, capOpt["sides-default"].get<std::string>());
1302     EXPECT_EQ(printerDefaultAttr.quality, capOpt["print-quality-default"].get<std::string>());
1303 }
1304 
1305 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0072, TestSize.Level1)
1306 {
1307     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1308     std::string key;
1309     std::string supportedOpts;
1310     std::vector<std::string> optAttrs;
1311     service->BuildPrinterPreferenceByOption(key, supportedOpts, optAttrs);
1312     std::string supportedOpts2 = "test";
1313     service->BuildPrinterPreferenceByOption(key, supportedOpts2, optAttrs);
1314     nlohmann::json optJson;
1315     nlohmann::json itemJson;
1316     itemJson["key"] = "value";
1317     optJson["testList"] = itemJson;
1318     std::string supportedOpts3 = optJson.dump();
1319     service->BuildPrinterPreferenceByOption(key, supportedOpts3, optAttrs);
1320 }
1321 
1322 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0073, TestSize.Level1)
1323 {
1324     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1325     PrinterCapability cap;
1326     PrinterPreference printPreference;
1327     cap.SetOption("test");
1328     EXPECT_EQ(service->BuildPrinterPreference(cap, printPreference), E_PRINT_INVALID_PARAMETER);
1329     nlohmann::json capJson;
1330     capJson["key"] = "value";
1331     cap.SetOption(capJson.dump());
1332     EXPECT_EQ(service->BuildPrinterPreference(cap, printPreference), E_PRINT_INVALID_PARAMETER);
1333     nlohmann::json capJson2;
1334     capJson2["cupsOptions"] = "value";
1335     cap.SetOption(capJson2.dump());
1336     EXPECT_EQ(service->BuildPrinterPreference(cap, printPreference), E_PRINT_NONE);
1337     nlohmann::json capJson3;
1338     nlohmann::json capOpt3;
1339     capOpt3["orientation-requested-supported"] = 123;
1340     capOpt3["sides-supported"] = 123;
1341     capOpt3["print-quality-supported"] = 123;
1342     capJson3["cupsOptions"] = capOpt3;
1343     cap.SetOption(capJson3.dump());
1344     EXPECT_EQ(service->BuildPrinterPreference(cap, printPreference), E_PRINT_NONE);
1345     nlohmann::json capJson4;
1346     nlohmann::json capOpt4;
1347     capOpt4["orientation-requested-supported"] = "123";
1348     capOpt4["sides-supported"] = "123";
1349     capOpt4["print-quality-supported"] = "123";
1350     capJson4["cupsOptions"] = capOpt4;
1351     cap.SetOption(capJson4.dump());
1352     EXPECT_EQ(service->BuildPrinterPreference(cap, printPreference), E_PRINT_NONE);
1353 }
1354 
1355 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0074, TestSize.Level1)
1356 {
1357     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1358     std::string key = "key";
1359     nlohmann::json jsonArrObject = nlohmann::json::object();
1360     jsonArrObject["key"] = "value";
1361     std::vector<std::string> printerAttrs;
1362     service->BuildPrinterAttrComponentByJson(key, jsonArrObject, printerAttrs);
1363 
1364     nlohmann::json jsonArrObject2 = nlohmann::json::array();
1365     nlohmann::json attrItem = nlohmann::json::object();
1366     attrItem["123"] = "123";
1367     nlohmann::json attrItem2 = nlohmann::json::object();;
1368     attrItem2["key"] = "123";
1369     nlohmann::json attrItem3 = nlohmann::json::object();;
1370     attrItem3["key"] = 123;
1371     jsonArrObject2.push_back(attrItem);
1372     jsonArrObject2.push_back(attrItem2);
1373     jsonArrObject2.push_back(attrItem3);
1374     service->BuildPrinterAttrComponentByJson(key, jsonArrObject2, printerAttrs);
1375     std::vector<std::string> testPrinterAttrs;
1376     for (int i = 0; i < 2; i++) {
1377         testPrinterAttrs.push_back("123");
1378     }
1379     EXPECT_EQ(printerAttrs, testPrinterAttrs);
1380 }
1381 
1382 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0075, TestSize.Level1)
1383 {
1384     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1385     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
1386     service->helper_ = helper;
1387     std::string printerId = "123";
1388     std::string printerPreference = "";
1389     EXPECT_EQ(service->GetPrinterPreference(printerId, printerPreference), E_PRINT_INVALID_PRINTER);
1390     service->printerIdAndPreferenceMap_["111"] = "123";
1391     EXPECT_EQ(service->GetPrinterPreference(printerId, printerPreference), E_PRINT_INVALID_PRINTER);
1392     service->printerIdAndPreferenceMap_["123"] = "123";
1393     EXPECT_EQ(service->GetPrinterPreference(printerId, printerPreference), E_PRINT_NONE);
1394 }
1395 
1396 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0076, TestSize.Level1)
1397 {
1398     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1399     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
1400     service->helper_ = helper;
1401     std::string printerId = "123";
1402     std::string printerSetting = "test";
1403     EXPECT_EQ(service->SetPrinterPreference(printerId, printerSetting), E_PRINT_INVALID_PRINTER);
1404 }
1405 
1406 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0077, TestSize.Level1)
1407 {
1408     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1409     std::string printerId = "123";
1410     std::string printerPreference = "test";
1411     service->printerIdAndPreferenceMap_["111"] = "123";
1412     EXPECT_EQ(service->ReadPreferenceFromFile(printerId, printerPreference), false);
1413     service->printerIdAndPreferenceMap_["123"] = "123";
1414     EXPECT_EQ(service->ReadPreferenceFromFile(printerId, printerPreference), true);
1415 }
1416 
1417 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0078, TestSize.Level1)
1418 {
1419     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1420     service->InitPreferenceMap();
1421     service->printerIdAndPreferenceMap_["printerId"] = "123";
1422     nlohmann::json printPreferenceJson;
1423     printPreferenceJson["key"] = "value";
1424     service->printerIdAndPreferenceMap_["printerId2"] = printPreferenceJson.dump();
1425     EXPECT_EQ(service->WritePreferenceToFile(), true);
1426     service->InitPreferenceMap();
1427 }
1428 
1429 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0079, TestSize.Level1)
1430 {
1431     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1432     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
1433     service->helper_ = helper;
1434     std::string printerId = "123";
1435     PrintJob printJob;
1436     nlohmann::json opsJson;
1437     opsJson["key"] = "value";
1438     printJob.SetPrinterId(printerId);
1439     printJob.SetOption(opsJson.dump());
1440     auto cupsPrinter = std::make_shared<CupsPrinterInfo>();
1441     service->printSystemData_.addedPrinterMap_.Insert(printerId, cupsPrinter);
1442     service->StartNativePrintJob(printJob);
1443     auto extensionId = PrintUtils::GetExtensionId(printerId);
1444     std::string cid = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_START_PRINT);
1445     sptr<IPrintExtensionCallback> extCb = nullptr;
1446     service->extCallbackMap_[cid] = extCb;
1447     service->StartNativePrintJob(printJob);
1448 }
1449 
1450 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0080, TestSize.Level1)
1451 {
1452     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1453     std::string printerId = "123";
1454     service->SetLastUsedPrinter(printerId);
1455     auto cupsPrinter = std::make_shared<CupsPrinterInfo>();
1456     service->printSystemData_.addedPrinterMap_.Insert(printerId, cupsPrinter);
1457     service->SetLastUsedPrinter(printerId);
1458 }
1459 
1460 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0081, TestSize.Level1)
1461 {
1462     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1463     uint32_t state = PRINT_JOB_UNKNOWN + 1;
1464     uint32_t subState = PRINT_JOB_CREATE_FILE_COMPLETED_SUCCESS;
1465     service->checkJobState(state, subState);
1466     std::string jobId = "123";
1467     service->UpdatePrintJobStateOnlyForSystemApp(jobId, state, subState);
1468 }
1469 
1470 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0082, TestSize.Level1)
1471 {
1472     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1473     uint32_t state = PRINT_JOB_CREATE_FILE_COMPLETED;
1474     uint32_t subState = PRINT_JOB_CREATE_FILE_COMPLETED_SUCCESS;
1475     std::string jobId = "123";
1476     std::string type = PRINT_GET_FILE_EVENT_TYPE;
1477     sptr<IPrintCallback> listener = new MockPrintCallbackProxy();
1478     service->registeredListeners_[type] = listener;
1479     service->AdapterGetFileCallBack(jobId, state, subState);
1480     subState = PRINT_JOB_CREATE_FILE_COMPLETED_FAILED;
1481     service->AdapterGetFileCallBack(jobId, state, subState);
1482     subState = PRINT_JOB_BLOCKED_UNKNOWN;
1483     service->AdapterGetFileCallBack(jobId, state, subState);
1484 }
1485 
1486 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0083, TestSize.Level1)
1487 {
1488     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1489     std::string jobId = "1";
1490     int32_t userId = 100;
1491     service->userJobMap_[jobId] = userId;
1492     std::shared_ptr<PrintUserData> userData = std::make_shared<PrintUserData>();
1493     service->printUserMap_[userId] = userData;
1494     uint32_t state = PRINT_JOB_COMPLETED;
1495     uint32_t subState = 0;
1496     std::string printerId = "1234";
1497     std::shared_ptr<PrintJob> printJob = std::make_shared<PrintJob>();
1498     printJob->SetPrinterId(printerId);
1499     userData->printJobList_[jobId] = printJob;
1500     service->printerJobMap_[printerId].insert(std::make_pair(jobId, true));
1501     EXPECT_EQ(service->CheckAndSendQueuePrintJob(jobId, state, subState), E_PRINT_NONE);
1502 }
1503 
1504 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0084, TestSize.Level1)
1505 {
1506     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1507     std::string jobId = "1";
1508     int32_t userId = 100;
1509     service->userJobMap_[jobId] = userId;
1510     std::shared_ptr<PrintUserData> userData = std::make_shared<PrintUserData>();
1511     service->printUserMap_[userId] = userData;
1512     uint32_t state = PRINT_JOB_COMPLETED;
1513     uint32_t subState = 0;
1514     std::string printerId = "1234";
1515     std::shared_ptr<PrintJob> printJob = std::make_shared<PrintJob>();
1516     printJob->SetPrinterId(printerId);
1517     userData->printJobList_[jobId] = printJob;
1518     service->printerJobMap_[printerId].insert(std::make_pair(jobId, true));
1519     auto printerInfo = std::make_shared<PrinterInfo>();
1520     service->printSystemData_.discoveredPrinterInfoList_[printerId] = printerInfo;
1521     service->printSystemData_.addedPrinterInfoList_[printerId] = printerInfo;
1522     EXPECT_EQ(service->CheckAndSendQueuePrintJob(jobId, state, subState), E_PRINT_NONE);
1523 }
1524 
1525 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0085, TestSize.Level1)
1526 {
1527     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1528     std::string printerId = "1234";
1529     service->printAppCount_ = 1;
1530     service->ReportCompletedPrint(printerId);
1531     std::string jobId = "1";
1532     std::shared_ptr<PrintJob> printJob = std::make_shared<PrintJob>();
1533     service->queuedJobList_[jobId] = printJob;
1534     service->printAppCount_ = 0;
1535     service->ReportCompletedPrint(printerId);
1536     EXPECT_EQ(service->unloadCount_, 0);
1537 }
1538 
1539 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0086, TestSize.Level1)
1540 {
1541     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1542     std::string printerId = "";
1543     EXPECT_EQ(service->isEprint(printerId), false);
1544 }
1545 
1546 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0087, TestSize.Level1)
1547 {
1548     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1549     std::string printerId = "1234";
1550     service->QueryPrinterCapability(printerId);
1551     auto printerInfo = std::make_shared<PrinterInfo>();
1552     service->printSystemData_.discoveredPrinterInfoList_[printerId] = printerInfo;
1553     service->QueryPrinterCapability(printerId);
1554     std::string extensionId = PrintUtils::GetExtensionId(printerId);
1555     std::string cid = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_REQUEST_CAP);
1556     sptr<IPrintExtensionCallback> extCb = nullptr;
1557     service->extCallbackMap_[cid] = extCb;
1558     service->QueryPrinterCapability(printerId);
1559 }
1560 
1561 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0088, TestSize.Level1)
1562 {
1563     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1564     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
1565     service->helper_ = helper;
1566     std::string extensionCid = "";
1567     sptr<IPrintExtensionCallback> listener = nullptr;
1568     service->RegisterExtCallback(extensionCid, listener);
1569     std::string extensionCid2 = "123:20";
1570     service->RegisterExtCallback(extensionCid2, listener);
1571     std::string extensionId = "123";
1572     service->extensionStateList_[extensionId] = PRINT_EXTENSION_UNLOAD;
1573     service->RegisterExtCallback(extensionCid2, listener);
1574     service->extensionStateList_[extensionId] = PRINT_EXTENSION_LOADING;
1575     service->RegisterExtCallback(extensionCid2, listener);
1576     std::string extensionCid3 = "123:2";
1577     service->RegisterExtCallback(extensionCid2, listener);
1578 }
1579 
1580 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0089, TestSize.Level1)
1581 {
1582     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1583     uint32_t callbackId = 0;
1584     std::string extensionId = "123";
1585     std::string cid = PrintUtils::EncodeExtensionCid(extensionId, callbackId);
1586     sptr<IPrintExtensionCallback> extCb = nullptr;
1587     service->extCallbackMap_[cid] = extCb;
1588     service->UnregisterAllExtCallback(extensionId);
1589 }
1590 
1591 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0090, TestSize.Level1)
1592 {
1593     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1594     std::string extensionId = "123";
1595     service->extensionStateList_[extensionId] = PRINT_EXTENSION_UNLOAD;
1596     service->LoadExtSuccess(extensionId);
1597     service->extensionStateList_[extensionId] = PRINT_EXTENSION_LOADING;
1598     service->LoadExtSuccess(extensionId);
1599 }
1600 
1601 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0091, TestSize.Level1)
1602 {
1603     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1604     std::string jobId = "123";
1605     std::string type = PRINT_CALLBACK_ADAPTER;
1606     sptr<IPrintCallback> listener = new MockPrintCallbackProxy();
1607     EXPECT_NE(listener, nullptr);
1608     service->On(jobId, type, listener);
1609     type = PRINTER_CHANGE_EVENT_TYPE;
1610     service->On(jobId, type, listener);
1611 }
1612 
1613 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0092, TestSize.Level1)
1614 {
1615     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1616     service->helper_ = nullptr;
1617     AAFwk::Want want;
1618     service->StartAbility(want);
1619 }
1620 
1621 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0093, TestSize.Level1)
1622 {
1623     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1624     service->printUserDataMap_[100] = nullptr;
1625     std::shared_ptr<PrintUserData> userData = std::make_shared<PrintUserData>();
1626     service->printUserDataMap_[101] = userData;
1627     int event = 0;
1628     PrinterInfo info;
1629     EXPECT_NE(service->SendPrinterDiscoverEvent(event, info), 0);
1630 }
1631 
1632 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0094, TestSize.Level1)
1633 {
1634     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1635     service->printUserDataMap_[100] = nullptr;
1636     std::shared_ptr<PrintUserData> userData = std::make_shared<PrintUserData>();
1637     service->printUserDataMap_[101] = userData;
1638     int event = 0;
1639     PrinterInfo info;
1640     EXPECT_NE(service->SendPrinterChangeEvent(event, info), 0);
1641 }
1642 
1643 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0095, TestSize.Level1)
1644 {
1645     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1646     PrinterInfo info;
1647     service->SendPrinterEvent(info);
1648     sptr<IPrintCallback> listener = new MockPrintCallbackProxy();
1649     service->registeredListeners_[PRINTER_EVENT_TYPE] = listener;
1650     service->SendPrinterEvent(info);
1651 }
1652 
1653 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0096, TestSize.Level1)
1654 {
1655     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1656     PrinterInfo info;
1657     PrinterEvent printerEvent = PRINTER_EVENT_STATE_CHANGED;
1658     service->registeredListeners_["test"] = nullptr;
1659     EXPECT_EQ(service->SendPrinterEventChangeEvent(printerEvent, info), 0);
1660 
1661     std::string eventType = "123" + PRINTER_CHANGE_EVENT_TYPE;
1662     service->registeredListeners_[eventType] = nullptr;
1663     EXPECT_EQ(service->SendPrinterEventChangeEvent(printerEvent, info), 0);
1664 
1665     sptr<IPrintCallback> listener = new MockPrintCallbackProxy();
1666     service->registeredListeners_[eventType] = listener;
1667     EXPECT_EQ(service->SendPrinterEventChangeEvent(printerEvent, info), 0);
1668 }
1669 
1670 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0097, TestSize.Level1)
1671 {
1672     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1673     PrintJob jobInfo;
1674     jobInfo.SetJobId("1");
1675     service->SendPrintJobEvent(jobInfo);
1676     sptr<IPrintCallback> listener = new MockPrintCallbackProxy();
1677     service->registeredListeners_[PRINTJOB_EVENT_TYPE] = listener;
1678     service->SendPrintJobEvent(jobInfo);
1679     jobInfo.SetJobState(PRINT_JOB_COMPLETED);
1680     service->SendPrintJobEvent(jobInfo);
1681     jobInfo.SetJobState(PRINT_JOB_BLOCKED);
1682     service->SendPrintJobEvent(jobInfo);
1683     jobInfo.SetJobState(PRINT_JOB_COMPLETED);
1684     jobInfo.SetSubState(PRINT_JOB_COMPLETED_SUCCESS);
1685     service->SendPrintJobEvent(jobInfo);
1686     jobInfo.SetSubState(PRINT_JOB_COMPLETED_FAILED);
1687     service->SendPrintJobEvent(jobInfo);
1688     jobInfo.SetSubState(PRINT_JOB_COMPLETED_CANCELLED);
1689     std::string taskEvent = PrintUtils::GetTaskEventId(jobInfo.GetJobId(), EVENT_CANCEL);
1690     service->registeredListeners_[taskEvent] = listener;
1691     service->SendPrintJobEvent(jobInfo);
1692 }
1693 
1694 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0098, TestSize.Level1)
1695 {
1696     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1697     std::string extensionId = "123";
1698     std::string extInfo = "123";
1699     EXPECT_EQ(service->SendExtensionEvent(extensionId, extInfo), 0);
1700     sptr<IPrintCallback> listener = new MockPrintCallbackProxy();
1701     service->registeredListeners_[EXTINFO_EVENT_TYPE] = listener;
1702     EXPECT_NE(service->SendExtensionEvent(extensionId, extInfo), 0);
1703 }
1704 
1705 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0099, TestSize.Level1)
1706 {
1707     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1708     PrintJob jobInfo;
1709     std::string jobId = "123";
1710     jobInfo.SetJobId(jobId);
1711     service->isJobQueueBlocked_ = true;
1712     jobInfo.SetJobState(PRINT_JOB_COMPLETED);
1713     service->CheckJobQueueBlocked(jobInfo);
1714     EXPECT_EQ(service->isJobQueueBlocked_, true);
1715     service->isJobQueueBlocked_ = false;
1716     service->CheckJobQueueBlocked(jobInfo);
1717     EXPECT_EQ(service->isJobQueueBlocked_, false);
1718     jobInfo.SetJobState(PRINT_JOB_BLOCKED);
1719     service->CheckJobQueueBlocked(jobInfo);
1720     EXPECT_EQ(service->isJobQueueBlocked_, true);
1721     int32_t userId = 100;
1722     service->userJobMap_[jobId] = userId;
1723     service->currentUserId_ = userId;
1724     service->CheckJobQueueBlocked(jobInfo);
1725     EXPECT_EQ(service->isJobQueueBlocked_, true);
1726     service->isJobQueueBlocked_ = true;
1727     jobInfo.SetJobState(PRINT_JOB_COMPLETED);
1728     service->CheckJobQueueBlocked(jobInfo);
1729     EXPECT_EQ(service->isJobQueueBlocked_, true);
1730     std::shared_ptr<PrintUserData> userData = std::make_shared<PrintUserData>();
1731     service->printUserMap_[userId] = userData;
1732     auto job = std::make_shared<PrintJob>();
1733     job->SetJobState(PRINT_JOB_COMPLETED);
1734     auto job2 = std::make_shared<PrintJob>();
1735     job2->SetJobState(PRINT_JOB_BLOCKED);
1736     userData->queuedJobList_["1"] = job;
1737     userData->queuedJobList_["2"] = job2;
1738     service->CheckJobQueueBlocked(jobInfo);
1739     EXPECT_EQ(service->isJobQueueBlocked_, true);
1740     userData->queuedJobList_.clear();
1741     userData->queuedJobList_["1"] = job;
1742     service->CheckJobQueueBlocked(jobInfo);
1743     EXPECT_EQ(service->isJobQueueBlocked_, false);
1744     service->userJobMap_.clear();
1745     service->CheckJobQueueBlocked(jobInfo);
1746     EXPECT_EQ(service->isJobQueueBlocked_, false);
1747 }
1748 
1749 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0100, TestSize.Level1)
1750 {
1751     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1752     std::string jobName = "";
1753     PrintAttributes printAttributes;
1754     std::string taskId = "";
1755     service->PrintByAdapter(jobName, printAttributes, taskId);
1756 }
1757 
1758 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0102, TestSize.Level1)
1759 {
1760     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1761     std::string jobId = "123";
1762     uint32_t state = PRINT_JOB_RUNNING;
1763     uint32_t subState = PRINT_JOB_SPOOLER_CLOSED_FOR_CANCELED;
1764     service->notifyAdapterJobChanged(jobId, state, subState);
1765     auto attrIt = service->printAttributesList_.find(jobId);
1766     EXPECT_EQ(attrIt, service->printAttributesList_.end());
1767     state = PRINT_JOB_SPOOLER_CLOSED;
1768     service->notifyAdapterJobChanged(jobId, state, subState);
1769     attrIt = service->printAttributesList_.find(jobId);
1770     EXPECT_EQ(attrIt, service->printAttributesList_.end());
1771     state = PRINT_JOB_COMPLETED;
1772     PrintAttributes printAttributes;
1773     service->printAttributesList_[jobId] = printAttributes;
1774     service->notifyAdapterJobChanged(jobId, state, subState);
1775     attrIt = service->printAttributesList_.find(jobId);
1776     EXPECT_EQ(attrIt, service->printAttributesList_.end());
1777 }
1778 
1779 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0103, TestSize.Level1)
1780 {
1781     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1782     service->helper_ = nullptr;
1783     AAFwk::Want want;
1784     EXPECT_FALSE(service->StartPluginPrintIconExtAbility(want));
1785     service->helper_ = std::make_shared<PrintServiceHelper>();
1786     service->StartPluginPrintIconExtAbility(want);
1787 }
1788 
1789 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0104, TestSize.Level1)
1790 {
1791     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1792     std::string jobId = "123";
1793     EXPECT_EQ(service->GetUserDataByJobId(jobId), nullptr);
1794     int32_t userId = 100;
1795     service->userJobMap_[jobId] = userId;
1796     EXPECT_EQ(service->GetUserDataByJobId(jobId), nullptr);
1797     std::shared_ptr<PrintUserData> userData = std::make_shared<PrintUserData>();
1798     service->printUserMap_[userId] = userData;
1799     EXPECT_NE(service->GetUserDataByJobId(jobId), nullptr);
1800 }
1801 
1802 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0105, TestSize.Level1)
1803 {
1804     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1805     std::string jobId = "123";
1806     service->RegisterAdapterListener(jobId);
1807     auto lisIt = service->adapterListenersByJobId_.find(jobId);
1808     EXPECT_EQ(lisIt, service->adapterListenersByJobId_.end());
1809     sptr<IPrintCallback> listener = new MockPrintCallbackProxy();
1810     service->registeredListeners_[PRINT_ADAPTER_EVENT_TYPE] = listener;
1811     service->RegisterAdapterListener(jobId);
1812     lisIt = service->adapterListenersByJobId_.find(jobId);
1813     EXPECT_NE(lisIt, service->adapterListenersByJobId_.end());
1814 }
1815 
1816 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0106, TestSize.Level1)
1817 {
1818     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1819     std::string printerId = "1234";
1820     service->SetDefaultPrinter(printerId, 0);
1821 }
1822 
1823 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0107, TestSize.Level1)
1824 {
1825     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1826     std::string printerId = "1234";
1827     EXPECT_EQ(service->CheckIsDefaultPrinter(printerId), false);
1828 }
1829 
1830 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0108, TestSize.Level1)
1831 {
1832     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1833     std::string printerId = "1234";
1834     EXPECT_EQ(service->CheckIsLastUsedPrinter(printerId), false);
1835 }
1836 
1837 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0109, TestSize.Level1)
1838 {
1839     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1840     std::string printerName = "pixlab_0759";
1841     EXPECT_EQ(service->DeletePrinterFromCups(printerName), E_PRINT_NONE);
1842 }
1843 
1844 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0111, TestSize.Level1)
1845 {
1846     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1847     std::string printerId = "printerId";
1848     int32_t userId1 = 100;
1849     int32_t userId2 = 101;
1850     std::shared_ptr<PrintUserData> userData1 = std::make_shared<PrintUserData>();
1851     userData1->SetDefaultPrinter("test", 0);
1852     std::shared_ptr<PrintUserData> userData2 = std::make_shared<PrintUserData>();
1853     userData1->SetDefaultPrinter(printerId, 0);
1854     service->printUserMap_[userId1] = userData1;
1855     service->printUserMap_[userId2] = userData2;
1856     service->DeletePrinterFromUserData(printerId);
1857 }
1858 
1859 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0112, TestSize.Level1)
1860 {
1861     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1862     std::string jobId = "1";
1863     int32_t userId = 100;
1864     service->userJobMap_[jobId] = userId;
1865     std::shared_ptr<PrintUserData> userData = std::make_shared<PrintUserData>();
1866     service->printUserMap_[userId] = userData;
1867     uint32_t state = PRINT_JOB_COMPLETED;
1868     uint32_t subState = 0;
1869     std::string printerId = "1234";
1870     std::shared_ptr<PrintJob> printJob = std::make_shared<PrintJob>();
1871     printJob->SetPrinterId(printerId);
1872     userData->queuedJobList_[jobId] = printJob;
1873     service->printerJobMap_[printerId].insert(std::make_pair(jobId, true));
1874     auto printerInfo = std::make_shared<PrinterInfo>();
1875     service->printSystemData_.discoveredPrinterInfoList_[printerId] = printerInfo;
1876     service->printSystemData_.addedPrinterInfoList_[printerId] = printerInfo;
1877     service->currentUserId_ = 0;
1878     EXPECT_EQ(service->CheckAndSendQueuePrintJob(jobId, state, subState), E_PRINT_NONE);
1879 }
1880 
1881 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0113, TestSize.Level1)
1882 {
1883     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1884     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
1885     service->helper_ = helper;
1886     std::string taskId = "";
1887     std::string type = PRINTER_CHANGE_EVENT_TYPE;
1888     service->Off(taskId, type);
1889 }
1890 
1891 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0120, TestSize.Level1)
1892 {
1893     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1894     EXPECT_NE(service, nullptr);
1895     std::map<std::string, std::shared_ptr<PrintJob>> jobList;
1896     auto job = std::make_shared<PrintJob>();
1897     EXPECT_NE(job, nullptr);
1898     job->SetJobState(PRINT_JOB_BLOCKED);
1899     jobList.insert(std::make_pair("test", job));
1900     EXPECT_EQ(service->DetermineUserJobStatus(jobList), PRINT_JOB_BLOCKED);
1901 }
1902 
1903 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0121, TestSize.Level1)
1904 {
1905     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1906     EXPECT_NE(service, nullptr);
1907     std::map<std::string, std::shared_ptr<PrintJob>> jobList;
1908     auto job = std::make_shared<PrintJob>();
1909     EXPECT_NE(job, nullptr);
1910     job->SetJobState(PRINT_JOB_COMPLETED);
1911     jobList.insert(std::make_pair("test", job));
1912     EXPECT_EQ(service->DetermineUserJobStatus(jobList), PRINT_JOB_COMPLETED);
1913 }
1914 
1915 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0122, TestSize.Level1)
1916 {
1917     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1918     EXPECT_NE(service, nullptr);
1919     std::map<std::string, std::shared_ptr<PrintJob>> jobList;
1920     auto job = std::make_shared<PrintJob>();
1921     EXPECT_NE(job, nullptr);
1922     job->SetJobState(PRINT_JOB_RUNNING);
1923     jobList.insert(std::make_pair("test", job));
1924     EXPECT_EQ(service->DetermineUserJobStatus(jobList), PRINT_JOB_RUNNING);
1925 }
1926 
1927 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0123, TestSize.Level1)
1928 {
1929     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1930     int32_t userId = 100;
1931     auto userData1 = service->GetUserDataByUserId(100);
1932     EXPECT_NE(userData1, nullptr);
1933     auto userData2 = service->GetUserDataByUserId(100);
1934     EXPECT_EQ(userData1, userData2);
1935     auto job = std::make_shared<PrintJob>();
1936     EXPECT_NE(job, nullptr);
1937     job->SetJobState(PRINT_JOB_BLOCKED);
1938     userData1->queuedJobList_.insert(std::make_pair("test1", job));
1939     service->NotifyCurrentUserChanged(userId);
1940     auto job2 = std::make_shared<PrintJob>();
1941     EXPECT_NE(job2, nullptr);
1942     job2->SetJobState(PRINT_JOB_RUNNING);
1943     userData1->queuedJobList_.insert(std::make_pair("test2", job2));
1944     service->NotifyCurrentUserChanged(userId);
1945 }
1946 
1947 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0124, TestSize.Level1)
1948 {
1949     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1950     int32_t userId = 100;
1951     auto userData1 = service->GetUserDataByUserId(100);
1952     EXPECT_NE(userData1, nullptr);
1953     auto userData2 = service->GetUserDataByUserId(100);
1954     EXPECT_EQ(userData1, userData2);
1955     auto job = std::make_shared<PrintJob>();
1956     EXPECT_NE(job, nullptr);
1957     job->SetJobState(PRINT_JOB_COMPLETED);
1958     userData1->queuedJobList_.insert(std::make_pair("test1", job));
1959     service->NotifyCurrentUserChanged(userId);
1960     auto job2 = std::make_shared<PrintJob>();
1961     EXPECT_NE(job2, nullptr);
1962     job2->SetJobState(PRINT_JOB_RUNNING);
1963     userData1->queuedJobList_.insert(std::make_pair("test2", job2));
1964     service->NotifyCurrentUserChanged(userId);
1965 }
1966 
1967 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0125, TestSize.Level1)
1968 {
1969     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1970     EXPECT_NE(service, nullptr);
1971     uint32_t subState = PRINT_JOB_SPOOLER_CLOSED_FOR_CANCELED;
1972     EXPECT_EQ(service->GetListeningState(subState), PREVIEW_ABILITY_DESTROY_FOR_CANCELED);
1973     subState = PRINT_JOB_SPOOLER_CLOSED_FOR_STARTED;
1974     EXPECT_EQ(service->GetListeningState(subState), PREVIEW_ABILITY_DESTROY_FOR_STARTED);
1975     subState = PRINT_JOB_CREATE_FILE_COMPLETED_SUCCESS;
1976     EXPECT_EQ(service->GetListeningState(subState), PREVIEW_ABILITY_DESTROY);
1977     uint32_t state1 = service->GetListeningState(PRINT_JOB_SPOOLER_CLOSED, subState);
1978     uint32_t state2 = service->GetListeningState(subState);
1979     EXPECT_EQ(state1, state2);
1980     state1 = service->GetListeningState(PRINT_JOB_BLOCKED, subState);
1981     EXPECT_EQ(state1, PRINT_TASK_BLOCK);
1982     state1 = service->GetListeningState(PRINT_JOB_QUEUED, PRINT_JOB_COMPLETED_SUCCESS);
1983     EXPECT_EQ(state1, PRINT_TASK_SUCCEED);
1984     state1 = service->GetListeningState(PRINT_JOB_QUEUED, PRINT_JOB_COMPLETED_FAILED);
1985     EXPECT_EQ(state1, PRINT_TASK_FAIL);
1986     state1 = service->GetListeningState(PRINT_JOB_QUEUED, PRINT_JOB_COMPLETED_CANCELLED);
1987     EXPECT_EQ(state1, PRINT_TASK_CANCEL);
1988     state1 = service->GetListeningState(PRINT_JOB_QUEUED, PRINT_JOB_BLOCKED_OUT_OF_INK);
1989     EXPECT_EQ(state1, PRINT_TASK_FAIL);
1990 }
1991 
1992 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0126, TestSize.Level1)
1993 {
1994     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
1995     std::string printerName = "testPrinterName";
1996     EXPECT_EQ(service->printSystemData_.QueryPrinterIdByStandardizeName(printerName), "");
1997 }
1998 
1999 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0127, TestSize.Level1)
2000 {
2001     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
2002     std::string printerId = "Pixlab_0759";
2003     PrinterCapability printerCaps;
2004     EXPECT_EQ(service->WriteEprinterPreference(printerId, printerCaps), true);
2005 }
2006 
2007 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0128, TestSize.Level1)
2008 {
2009     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
2010     std::string printerId = "Pixlab_0759";
2011     PrinterInfo info;
2012     EXPECT_EQ(service->UpdatePrinterCapability(printerId, info), true);
2013 }
2014 
2015 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0129, TestSize.Level1)
2016 {
2017     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
2018     std::shared_ptr<PrintServiceHelper> helper = std::make_shared<PrintServiceHelper>();
2019     service->helper_ = helper;
2020     std::vector<PrinterInfo> printers;
2021     service->DiscoverUsbPrinters(printers);
2022     EXPECT_EQ(printers.size(), 0);
2023 }
2024 
2025 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0130, TestSize.Level1)
2026 {
2027     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
2028     PrinterInfo info;
2029     info.SetPrinterId(DEFAULT_EXT_PRINTER_ID);
2030     EXPECT_EQ(service->AddPrinterToDiscovery(info), E_PRINT_NONE);
2031     EXPECT_EQ(service->UpdatePrinterInDiscovery(info), E_PRINT_NONE);
2032     info.SetPrinterId("1234");
2033     EXPECT_EQ(service->UpdatePrinterInDiscovery(info), E_PRINT_NONE);
2034 
2035     std::shared_ptr<PrinterInfo> info1 = std::make_shared<PrinterInfo>();
2036     info1->SetPrinterId(DEFAULT_EXT_PRINTER_ID);
2037     service->printSystemData_.discoveredPrinterInfoList_[DEFAULT_EXT_PRINTER_ID] = info1;
2038     EXPECT_EQ(service->RemovePrinterFromDiscovery(DEFAULT_EXT_PRINTER_ID), E_PRINT_NONE);
2039     EXPECT_EQ(service->RemovePrinterFromDiscovery(DEFAULT_EXT_PRINTER_ID), E_PRINT_INVALID_PRINTER);
2040 }
2041 
2042 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0131, TestSize.Level1)
2043 {
2044     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
2045     std::string printerId = "com.ohos.spooler:p2p://DIRECT-PixLab_V1-1620";
2046     std::string printerExtId = PrintUtils::GetGlobalId("", printerId);
2047     service->printerIdAndPreferenceMap_[printerExtId] = "test";
2048     PrinterCapability printerCaps;
2049     printerCaps.SetOption("test");
2050     std::string printerUri = "usb:ipp://192.168.186.1:631/ipp/print";
2051     EXPECT_EQ(service->QueryPrinterCapabilityByUri(printerUri, printerId, printerCaps), E_PRINT_INVALID_PRINTER);
2052 }
2053 
2054 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0132, TestSize.Level1)
2055 {
2056     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
2057     std::string vendorName = "fwk.driver";
2058     std::string printerId = "testprinter";
2059     PrinterInfo info;
2060     info.SetPrinterId(printerId);
2061     EXPECT_TRUE(service->AddVendorPrinterToDiscovery(vendorName, info));
2062     EXPECT_TRUE(service->AddVendorPrinterToDiscovery(vendorName, info));
2063     EXPECT_TRUE(service->UpdateVendorPrinterToDiscovery(vendorName, info));
2064     EXPECT_TRUE(service->RemoveVendorPrinterFromDiscovery(vendorName, printerId));
2065 }
2066 
2067 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0133, TestSize.Level1)
2068 {
2069     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
2070     std::string vendorName = "fwk.driver";
2071     std::string printerId = "testprinter";
2072     PrinterInfo info;
2073     PrinterInfo info2;
2074     info.SetPrinterId(printerId);
2075     std::string globalId = VendorManager::GetGlobalPrinterId(vendorName, printerId);
2076     EXPECT_EQ(service->QueryVendorPrinterInfo(globalId, info2), E_PRINT_INVALID_PRINTER);
2077     EXPECT_TRUE(service->UpdateVendorPrinterToDiscovery(vendorName, info));
2078     EXPECT_TRUE(service->AddVendorPrinterToDiscovery(vendorName, info));
2079     EXPECT_EQ(service->QueryVendorPrinterInfo(globalId, info2), E_PRINT_INVALID_PRINTER);
2080     EXPECT_TRUE(service->RemoveVendorPrinterFromDiscovery(vendorName, printerId));
2081     PrinterCapability cap;
2082     info.SetCapability(cap);
2083     EXPECT_TRUE(service->AddVendorPrinterToDiscovery(vendorName, info));
2084     EXPECT_EQ(service->QueryVendorPrinterInfo(globalId, info2), E_PRINT_NONE);
2085 }
2086 
2087 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0134, TestSize.Level1)
2088 {
2089     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
2090     std::string vendorName = "fwk.driver";
2091     std::string printerId = "testprinter";
2092     std::string ppdData;
2093     PrinterInfo info;
2094     info.SetPrinterId(printerId);
2095     EXPECT_FALSE(service->RemoveVendorPrinterFromCups(vendorName, printerId));
2096     EXPECT_FALSE(service->AddVendorPrinterToCupsWithPpd(vendorName, printerId, ppdData));
2097     EXPECT_TRUE(service->AddVendorPrinterToDiscovery(vendorName, info));
2098     EXPECT_FALSE(service->AddVendorPrinterToCupsWithPpd(vendorName, printerId, ppdData));
2099     PrinterCapability cap;
2100     info.SetCapability(cap);
2101     EXPECT_TRUE(service->UpdateVendorPrinterToDiscovery(vendorName, info));
2102     EXPECT_FALSE(service->AddVendorPrinterToCupsWithPpd(vendorName, printerId, ppdData));
2103     info.SetUri("uri");
2104     EXPECT_TRUE(service->UpdateVendorPrinterToDiscovery(vendorName, info));
2105     EXPECT_FALSE(service->AddVendorPrinterToCupsWithPpd(vendorName, printerId, ppdData));
2106     info.SetPrinterMake("maker");
2107     EXPECT_TRUE(service->UpdateVendorPrinterToDiscovery(vendorName, info));
2108     service->AddVendorPrinterToCupsWithPpd(vendorName, printerId, ppdData);
2109     ppdData = "ppd";
2110     service->AddVendorPrinterToCupsWithPpd(vendorName, printerId, ppdData);
2111     service->RemoveVendorPrinterFromCups(vendorName, printerId);
2112     EXPECT_TRUE(service->AddVendorPrinterToDiscovery(vendorName, info));
2113 }
2114 
2115 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0135, TestSize.Level1)
2116 {
2117     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
2118     EXPECT_EQ(service->TryConnectPrinterByIp(""), E_PRINT_INVALID_PRINTER);
2119     std::string param = "{\"protocol\":\"ipp\"}";
2120     EXPECT_EQ(service->TryConnectPrinterByIp(param), E_PRINT_INVALID_PRINTER);
2121     param = "{\"protocol\":\"ipp\",\"ip\":\"a.b.c.d\"}";
2122     EXPECT_EQ(service->TryConnectPrinterByIp(param), E_PRINT_SERVER_FAILURE);
2123 }
2124 
2125 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0136, TestSize.Level1)
2126 {
2127     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
2128     std::string vendorName = "fwk.driver";
2129     std::string printerId = "testprinter";
2130     std::string ppdData;
2131     PrinterInfo info;
2132     info.SetPrinterName(vendorName);
2133     info.SetPrinterId(printerId);
2134     PrinterCapability cap;
2135     info.SetCapability(cap);
2136     info.SetUri("uri");
2137     info.SetPrinterMake("maker");
2138     ppdData = "ppd";
2139     EXPECT_TRUE(service->AddVendorPrinterToDiscovery(vendorName, info));
2140     service->AddVendorPrinterToCupsWithPpd(vendorName, printerId, ppdData);
2141 
2142     std::string vendorName1 = "fwk.driver";
2143     std::string printerId1 = "testprinter1";
2144     PrinterInfo info1;
2145     info1.SetPrinterName(vendorName1);
2146     info1.SetPrinterId(printerId1);
2147     PrinterCapability cap1;
2148     info1.SetCapability(cap1);
2149     info1.SetUri("uri1");
2150     info1.SetPrinterMake("maker1");
2151     EXPECT_TRUE(service->RenamePrinterWhenAdded(info1) == "fwk.driver 1");
2152     service->RemoveVendorPrinterFromCups(vendorName, printerId);
2153 }
2154 
2155 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0137, TestSize.Level1)
2156 {
2157     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
2158     PrinterInfo info;
2159     info.SetPrinterId(DEFAULT_EXT_PRINTER_ID);
2160     EXPECT_EQ(service->UpdatePrinterInSystem(info), E_PRINT_INVALID_PARAMETER);
2161 
2162     nlohmann::json infoJson;
2163     infoJson["alias"] = "testPrinterName";
2164     info.SetOption(infoJson.dump());
2165     EXPECT_EQ(service->UpdatePrinterInSystem(info), E_PRINT_INVALID_PARAMETER);
2166 }
2167 
2168 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0138, TestSize.Level1)
2169 {
2170     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
2171     PrinterInfo info;
2172     info.SetPrinterId(DEFAULT_EXT_PRINTER_ID);
2173     std::string type = "testType";
2174     EXPECT_EQ(service->CheckUserIdInEventType(type), false);
2175     type = PRINTER_CHANGE_EVENT_TYPE;
2176     EXPECT_EQ(service->CheckUserIdInEventType(type), false);
2177 }
2178 
2179 HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0139, TestSize.Level1)
2180 {
2181     auto service = std::make_shared<PrintServiceAbility>(PRINT_SERVICE_ID, true);
2182     std::string vendorName = "fwk.driver";
2183     std::string printerId = "testprinter";
2184     std::string ppdData;
2185     PrinterInfo info;
2186     info.SetPrinterId(printerId);
2187     EXPECT_FALSE(service->RemoveVendorPrinterFromCups(vendorName, printerId));
2188     EXPECT_FALSE(service->AddVendorPrinterToCupsWithSpecificPpd(vendorName, printerId, ppdData));
2189     EXPECT_TRUE(service->AddVendorPrinterToDiscovery(vendorName, info));
2190     EXPECT_FALSE(service->AddVendorPrinterToCupsWithSpecificPpd(vendorName, printerId, ppdData));
2191     PrinterCapability cap;
2192     info.SetCapability(cap);
2193     EXPECT_TRUE(service->UpdateVendorPrinterToDiscovery(vendorName, info));
2194     EXPECT_FALSE(service->AddVendorPrinterToCupsWithSpecificPpd(vendorName, printerId, ppdData));
2195     info.SetUri("uri");
2196     EXPECT_TRUE(service->UpdateVendorPrinterToDiscovery(vendorName, info));
2197     EXPECT_FALSE(service->AddVendorPrinterToCupsWithSpecificPpd(vendorName, printerId, ppdData));
2198     info.SetPrinterMake("maker");
2199     EXPECT_TRUE(service->UpdateVendorPrinterToDiscovery(vendorName, info));
2200     service->AddVendorPrinterToCupsWithSpecificPpd(vendorName, printerId, ppdData);
2201     ppdData = "ppd";
2202     service->AddVendorPrinterToCupsWithSpecificPpd(vendorName, printerId, ppdData);
2203     service->RemoveVendorPrinterFromCups(vendorName, printerId);
2204     EXPECT_TRUE(service->AddVendorPrinterToDiscovery(vendorName, info));
2205 }
2206 } // namespace OHOS::Print
2207