From f5de3cddcc3933d8c225b8dedcf9c1c520236dfc Mon Sep 17 00:00:00 2001 From: xiongqiao Date: Wed, 12 Jul 2023 18:10:50 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0tdd=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B=20Signed-off-by:xiongqiao3@huawei.com?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiongqiao --- bundle.json | 3 + .../include/printer_capability.h | 4 - .../innerkitsimpl/include/printer_info.h | 2 +- .../src/print_manager_client.cpp | 1 + frameworks/innerkitsimpl/src/printer_info.cpp | 2 +- frameworks/kits/extension/BUILD.gn | 1 + .../kits/extension/src/js_print_extension.cpp | 10 +- services/BUILD.gn | 1 + services/include/print_bms_helper.h | 18 +- services/include/print_callback_proxy.h | 9 +- services/include/print_service_ability.h | 3 + services/include/print_service_helper.h | 33 + services/src/print_bms_death_recipient.cpp | 14 +- services/src/print_bms_helper.cpp | 67 +- services/src/print_callback_proxy.cpp | 24 +- services/src/print_security_guard_info.cpp | 10 +- services/src/print_service_ability.cpp | 190 +- services/src/print_service_helper.cpp | 120 + services/src/print_service_stub.cpp | 13 - test/unittest/fwk_inner_napi_test/BUILD.gn | 7 +- .../mock/mock_print_callback_stub.h | 10 +- .../print_callback_stub_test.cpp | 196 ++ .../print_manager_client_test.cpp | 1092 +++++--- .../print_sa_death_recipient_test.cpp | 43 + .../print_service_proxy_test.cpp | 54 +- .../fwk_inner_napi_test/print_utils_test.cpp | 318 +++ .../printer_capability_test.cpp | 2 +- test/unittest/service_test/BUILD.gn | 82 + .../service_test/hisys_event_util_test.cpp | 63 + .../service_test/mock/mock_bundle_mgr.h | 39 + .../mock/mock_print_callback_proxy.h | 34 + .../mock_print_extension_callback_proxy.h | 34 + .../mock/mock_print_service_helper.h | 37 + .../print_bms_death_recipient_test.cpp | 54 + .../service_test/print_bms_helper_test.cpp | 252 ++ .../print_callback_proxy_test.cpp | 287 +++ .../print_extension_callback_proxy_test.cpp | 251 ++ .../print_security_guard_info_test.cpp | 57 + .../print_security_guard_manager_test.cpp | 57 + .../print_service_ability_test.cpp | 2202 +++++++++++++++++ .../print_service_helper_test.cpp | 102 + .../service_test/print_service_stub_test.cpp | 1009 ++++++++ 42 files changed, 6215 insertions(+), 592 deletions(-) create mode 100644 services/include/print_service_helper.h create mode 100644 services/src/print_service_helper.cpp create mode 100644 test/unittest/fwk_inner_napi_test/print_callback_stub_test.cpp create mode 100644 test/unittest/fwk_inner_napi_test/print_sa_death_recipient_test.cpp create mode 100644 test/unittest/fwk_inner_napi_test/print_utils_test.cpp create mode 100644 test/unittest/service_test/BUILD.gn create mode 100644 test/unittest/service_test/hisys_event_util_test.cpp create mode 100644 test/unittest/service_test/mock/mock_bundle_mgr.h create mode 100644 test/unittest/service_test/mock/mock_print_callback_proxy.h create mode 100644 test/unittest/service_test/mock/mock_print_extension_callback_proxy.h create mode 100644 test/unittest/service_test/mock/mock_print_service_helper.h create mode 100644 test/unittest/service_test/print_bms_death_recipient_test.cpp create mode 100644 test/unittest/service_test/print_bms_helper_test.cpp create mode 100644 test/unittest/service_test/print_callback_proxy_test.cpp create mode 100644 test/unittest/service_test/print_extension_callback_proxy_test.cpp create mode 100644 test/unittest/service_test/print_security_guard_info_test.cpp create mode 100644 test/unittest/service_test/print_security_guard_manager_test.cpp create mode 100644 test/unittest/service_test/print_service_ability_test.cpp create mode 100644 test/unittest/service_test/print_service_helper_test.cpp create mode 100644 test/unittest/service_test/print_service_stub_test.cpp diff --git a/bundle.json b/bundle.json index d2af2107..15d1de17 100644 --- a/bundle.json +++ b/bundle.json @@ -41,6 +41,7 @@ "i18n", "init", "ipc", + "ipc_js", "napi", "netmanager_base", "os_account", @@ -53,6 +54,7 @@ "time_service" ], "third_party": [ + "thirdparty_googletest", "zlib" ] }, @@ -86,6 +88,7 @@ ], "test": [ "//base/print/print_fwk/test/unittest/fwk_inner_napi_test:print_fwk_inner_napi_test", + "//base/print/print_fwk/test/unittest/service_test:print_service_test", "//base/print/print_fwk/test/fuzztest:fuzztest" ] }, diff --git a/frameworks/innerkitsimpl/include/printer_capability.h b/frameworks/innerkitsimpl/include/printer_capability.h index d8e6a842..def58673 100644 --- a/frameworks/innerkitsimpl/include/printer_capability.h +++ b/frameworks/innerkitsimpl/include/printer_capability.h @@ -50,8 +50,6 @@ public: [[nodiscard]] uint32_t GetDuplexMode() const; - [[nodiscard]] bool GetIsEmpty() const; - void SetMinMargin(const PrintMargin &minMargin); void SetPageSize(const std::vector &pageSizeList); @@ -62,8 +60,6 @@ public: void SetDuplexMode(uint32_t duplexMode); - void SetIsEmpty(bool isEmpty); - virtual bool Marshalling(Parcel &parcel) const override; static std::shared_ptr Unmarshalling(Parcel &parcel); diff --git a/frameworks/innerkitsimpl/include/printer_info.h b/frameworks/innerkitsimpl/include/printer_info.h index 6d650f28..b646f403 100644 --- a/frameworks/innerkitsimpl/include/printer_info.h +++ b/frameworks/innerkitsimpl/include/printer_info.h @@ -26,7 +26,7 @@ public: PrinterInfo(const PrinterInfo &right); - PrinterInfo &operator=(const PrinterInfo &PrinterInfo); + PrinterInfo &operator=(const PrinterInfo &right); virtual ~PrinterInfo(); diff --git a/frameworks/innerkitsimpl/src/print_manager_client.cpp b/frameworks/innerkitsimpl/src/print_manager_client.cpp index d304fab8..483a8ce4 100644 --- a/frameworks/innerkitsimpl/src/print_manager_client.cpp +++ b/frameworks/innerkitsimpl/src/print_manager_client.cpp @@ -58,6 +58,7 @@ bool PrintManagerClient::GetPrintServiceProxy() systemAbility->AddDeathRecipient(deathRecipient_); printServiceProxy_ = iface_cast(systemAbility); PRINT_HILOGD("Getting PrintManagerClientProxy succeeded."); + result = true; } } } diff --git a/frameworks/innerkitsimpl/src/printer_info.cpp b/frameworks/innerkitsimpl/src/printer_info.cpp index 2b6ca84d..d6538e49 100644 --- a/frameworks/innerkitsimpl/src/printer_info.cpp +++ b/frameworks/innerkitsimpl/src/printer_info.cpp @@ -47,7 +47,7 @@ PrinterInfo &PrinterInfo::operator=(const PrinterInfo &right) hasCapability_ = right.hasCapability_; capability_ = right.capability_; hasOption_ = right.hasOption_; - option_= right.option_; + option_ = right.option_; } return *this; } diff --git a/frameworks/kits/extension/BUILD.gn b/frameworks/kits/extension/BUILD.gn index ef054749..2b2af9ce 100644 --- a/frameworks/kits/extension/BUILD.gn +++ b/frameworks/kits/extension/BUILD.gn @@ -84,6 +84,7 @@ ohos_shared_library("print_extension_framework") { "hitrace:hitrace_meter", "i18n:intl_util", "ipc:ipc_napi_common", + "ipc_js:rpc", "napi:ace_napi", "resource_management:global_resmgr", ] diff --git a/frameworks/kits/extension/src/js_print_extension.cpp b/frameworks/kits/extension/src/js_print_extension.cpp index 52e89c42..a2896cd9 100644 --- a/frameworks/kits/extension/src/js_print_extension.cpp +++ b/frameworks/kits/extension/src/js_print_extension.cpp @@ -142,19 +142,14 @@ void JsPrintExtension::OnStart(const AAFwk::Want &want) NativeValue *nativeWant = reinterpret_cast(napiWant); NativeValue *argv[] = { nativeWant }; CallObjectMethod("onCreate", argv, NapiPrintUtils::ARGC_ONE); - RegisterCb(); - PrintManagerClient::GetInstance()->LoadExtSuccess(extensionId_); - PRINT_HILOGD("%{public}s end.", __func__); -} - -void JsPrintExtension::RegisterCb() -{ RegisterDiscoveryCb(); RegisterConnectionCb(); RegisterPrintJobCb(); RegisterPreviewCb(); RegisterQueryCapCb(); RegisterExtensionCb(); + PrintManagerClient::GetInstance()->LoadExtSuccess(extensionId_); + PRINT_HILOGD("%{public}s end.", __func__); } void JsPrintExtension::OnStop() @@ -252,7 +247,6 @@ void JsPrintExtension::OnCommand(const AAFwk::Want &want, bool restart, int star return; } PrintManagerClient::GetInstance()->LoadExtSuccess(extensionId_); - RegisterCb(); PRINT_HILOGD("%{public}s end.", __func__); } diff --git a/services/BUILD.gn b/services/BUILD.gn index 63cd8c60..d6530809 100644 --- a/services/BUILD.gn +++ b/services/BUILD.gn @@ -33,6 +33,7 @@ ohos_shared_library("print_service") { "src/print_security_guard_info.cpp", "src/print_security_guard_manager.cpp", "src/print_service_ability.cpp", + "src/print_service_helper.cpp", "src/print_service_stub.cpp", ] diff --git a/services/include/print_bms_helper.h b/services/include/print_bms_helper.h index f4209787..80c1a543 100644 --- a/services/include/print_bms_helper.h +++ b/services/include/print_bms_helper.h @@ -21,35 +21,33 @@ #include "bundle_mgr_interface.h" #include "extension_ability_info.h" -#include "iremote_object.h" #include "print_bms_death_recipient.h" -#include "refbase.h" +#include "print_service_helper.h" #include "singleton.h" -#include "want.h" namespace OHOS::Print { class PrintBMSHelper : public DelayedSingleton { public: - using IBundleMgr = OHOS::AppExecFwk::IBundleMgr; - - explicit PrintBMSHelper(); + PrintBMSHelper(); virtual ~PrintBMSHelper(); + void SetHelper(const std::shared_ptr &helper); + bool QueryExtensionInfos(std::vector &extensionInfo); std::string QueryCallerBundleName(); - void ResetProxy(); + void ResetProxy(const wptr &remote); private: bool GetProxy(); private: - sptr sptrBundleMgr_; + sptr sptrBundleMgr_; std::mutex mutex_; sptr printBMSDeath_; + std::shared_ptr helper_; }; } // namespace OHOS - -#endif // PRINT_BMS_HELPER_H \ No newline at end of file +#endif // PRINT_BMS_HELPER_H diff --git a/services/include/print_callback_proxy.h b/services/include/print_callback_proxy.h index 16c63584..4deabd00 100644 --- a/services/include/print_callback_proxy.h +++ b/services/include/print_callback_proxy.h @@ -13,8 +13,8 @@ * limitations under the License. */ -#ifndef PRINT_NOTIFY_PROXY_H -#define PRINT_NOTIFY_PROXY_H +#ifndef PRINT_CALLBACK_PROXY_H +#define PRINT_CALLBACK_PROXY_H #include "iprint_callback.h" #include "iremote_proxy.h" @@ -32,6 +32,5 @@ public: private: static inline BrokerDelegator delegator_; }; -} // namespace OHOS::Print - -#endif // PRINT_NOTIFY_PROXY_H \ No newline at end of file +} // namespace OHOS::Print +#endif // PRINT_CALLBACK_PROXY_H diff --git a/services/include/print_service_ability.h b/services/include/print_service_ability.h index 3a651c5a..0197da78 100644 --- a/services/include/print_service_ability.h +++ b/services/include/print_service_ability.h @@ -29,6 +29,7 @@ #include "print_service_stub.h" #include "system_ability.h" #include "print_security_guard_manager.h" +#include "print_service_helper.h" namespace OHOS::Print { enum class ServiceRunningState { STATE_NOT_START, STATE_RUNNING }; @@ -69,6 +70,7 @@ public: int32_t LoadExtSuccess(const std::string &extensionId) override; int32_t QueryAllPrintJob(std::vector &printJobs) override; int32_t QueryPrintJobById(std::string &printJobId, PrintJob &printjob) override; + void SetHelper(const std::shared_ptr &helper); protected: void OnStart() override; @@ -123,6 +125,7 @@ private: std::mutex lock_; uint64_t currentJobId_; + std::shared_ptr helper_; bool isJobQueueBlocked_; }; diff --git a/services/include/print_service_helper.h b/services/include/print_service_helper.h new file mode 100644 index 00000000..6bca10c0 --- /dev/null +++ b/services/include/print_service_helper.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef PRINT_SERVICE_HELPER_H +#define PRINT_SERVICE_HELPER_H + +#include +#include "ability_manager_client.h" +#include "system_ability.h" + +namespace OHOS::Print { +class PrintServiceHelper { +public: + virtual ~PrintServiceHelper(); + virtual bool CheckPermission(const std::string &name); + virtual bool StartAbility(const AAFwk::Want &want); + virtual sptr GetBundleMgr(); + virtual bool QueryAccounts(std::vector &accountList); +}; +} // namespace OHOS +#endif // PRINT_SERVICE_HELPER_H diff --git a/services/src/print_bms_death_recipient.cpp b/services/src/print_bms_death_recipient.cpp index 4a28d3ca..247b84f3 100644 --- a/services/src/print_bms_death_recipient.cpp +++ b/services/src/print_bms_death_recipient.cpp @@ -21,18 +21,6 @@ namespace OHOS::Print { void PrintBMSDeathRecipient::OnRemoteDied(const wptr &wptrDeath) { PRINT_HILOGD("bundle manager service died, remove the proxy object"); - - if (wptrDeath == nullptr) { - PRINT_HILOGE("wptrDeath is null"); - return; - } - - sptr object = wptrDeath.promote(); - if (!object) { - PRINT_HILOGE("object is null"); - return; - } - - DelayedSingleton::GetInstance()->ResetProxy(); + DelayedSingleton::GetInstance()->ResetProxy(wptrDeath); } } // namespace OHOS \ No newline at end of file diff --git a/services/src/print_bms_helper.cpp b/services/src/print_bms_helper.cpp index f070bfc6..5c5d0cb5 100644 --- a/services/src/print_bms_helper.cpp +++ b/services/src/print_bms_helper.cpp @@ -14,25 +14,25 @@ */ #include "print_bms_helper.h" -#include "bundle_mgr_proxy.h" #include "bundle_constants.h" -#include "bundle_mgr_client.h" #include "ipc_skeleton.h" -#include "iservice_registry.h" -#include "nlohmann/json.hpp" -#include "os_account_manager.h" #include "print_log.h" -#include "system_ability_definition.h" namespace OHOS::Print { using namespace OHOS::AppExecFwk::Constants; -PrintBMSHelper::PrintBMSHelper() : sptrBundleMgr_(nullptr), printBMSDeath_(nullptr) +PrintBMSHelper::PrintBMSHelper() : sptrBundleMgr_(nullptr), printBMSDeath_(nullptr), helper_(nullptr) {} PrintBMSHelper::~PrintBMSHelper() {} +void PrintBMSHelper::SetHelper(const std::shared_ptr &helper) +{ + helper_ = helper; + sptrBundleMgr_ = nullptr; +} + bool PrintBMSHelper::QueryExtensionInfos(std::vector &extensionInfos) { std::lock_guard lock(mutex_); @@ -40,18 +40,13 @@ bool PrintBMSHelper::QueryExtensionInfos(std::vector osAccountIds; - if (AccountSA::OsAccountManager::QueryActiveOsAccountIds(osAccountIds) != ERR_OK) { - PRINT_HILOGE("failed to QueryActiveOsAccountIds!"); - return false; - } - if (osAccountIds.size() == 0) { - PRINT_HILOGE("no os account acquired!"); + if (!helper_->QueryAccounts(osAccountIds)) { return false; } + for (auto userId : osAccountIds) { PRINT_HILOGE("active userId = %{public}d", userId); - sptrBundleMgr_->QueryExtensionAbilityInfos(AppExecFwk::ExtensionAbilityType::PRINT, - userId, extensionInfos); + helper_->QueryExtension(sptrBundleMgr_, userId, extensionInfos); } return true; } @@ -64,9 +59,7 @@ std::string PrintBMSHelper::QueryCallerBundleName() } int32_t callerUid = IPCSkeleton::GetCallingUid(); std::string bundleName = ""; - if (sptrBundleMgr_ != nullptr) { - sptrBundleMgr_->GetNameForUid(callerUid, bundleName); - } + helper_->QueryNameForUid(sptrBundleMgr_, callerUid, bundleName); PRINT_HILOGD("callerUid = %{public}d, bundleName = %{public}s", callerUid, bundleName.c_str()); return bundleName; } @@ -74,14 +67,11 @@ std::string PrintBMSHelper::QueryCallerBundleName() bool PrintBMSHelper::GetProxy() { if (sptrBundleMgr_ == nullptr) { - sptr systemAbilityManager = - SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); - if (systemAbilityManager == nullptr) { - PRINT_HILOGE("Failed to get system ability mgr."); + if (helper_ == nullptr) { + PRINT_HILOGE("Invalid printer helper."); return false; } - - sptr remoteObject = systemAbilityManager->GetSystemAbility(BUNDLE_MGR_SERVICE_SYS_ABILITY_ID); + auto remoteObject = helper_->GetBundleMgr(); if (remoteObject == nullptr) { PRINT_HILOGE("Failed to get bundle manager service."); return false; @@ -93,26 +83,35 @@ bool PrintBMSHelper::GetProxy() return false; } - printBMSDeath_ = new PrintBMSDeathRecipient(); + printBMSDeath_ = new (std::nothrow) PrintBMSDeathRecipient(); if (printBMSDeath_ == nullptr) { PRINT_HILOGE("Failed to create death Recipient ptr BMSDeathRecipient"); return false; } - if (!sptrBundleMgr_->AsObject()->AddDeathRecipient(printBMSDeath_)) { - PRINT_HILOGW("Failed to add death recipient"); - } + remoteObject->AddDeathRecipient(printBMSDeath_); } - return true; } -void PrintBMSHelper::ResetProxy() +void PrintBMSHelper::ResetProxy(const wptr &remote) { + if (remote == nullptr) { + PRINT_HILOGE("remote is nullptr"); + return; + } + std::lock_guard lock(mutex_); + if (sptrBundleMgr_ == nullptr) { + PRINT_HILOGE("sptrBundleMgr_ is null"); + return; + } - if ((sptrBundleMgr_ != nullptr) && (sptrBundleMgr_->AsObject() != nullptr)) { - sptrBundleMgr_->AsObject()->RemoveDeathRecipient(printBMSDeath_); + auto serviceRemote = sptrBundleMgr_->AsObject(); + if ((serviceRemote != nullptr) && (serviceRemote == remote.promote())) { + PRINT_HILOGD("need reset"); + serviceRemote->RemoveDeathRecipient(printBMSDeath_); + sptrBundleMgr_ = nullptr; + printBMSDeath_ = nullptr; } - sptrBundleMgr_ = nullptr; } -} // namespace OHOS \ No newline at end of file +} // namespace OHOS diff --git a/services/src/print_callback_proxy.cpp b/services/src/print_callback_proxy.cpp index 748da162..215b550b 100644 --- a/services/src/print_callback_proxy.cpp +++ b/services/src/print_callback_proxy.cpp @@ -27,11 +27,7 @@ bool PrintCallbackProxy::OnCallback() MessageParcel reply; MessageOption option; - if (!data.WriteInterfaceToken(GetDescriptor())) { - PRINT_HILOGE("write descriptor failed"); - return false; - } - + data.WriteInterfaceToken(GetDescriptor()); int error = Remote()->SendRequest(PRINT_CALLBACK_TASK, data, reply, option); if (error != 0) { PRINT_HILOGE("SendRequest failed, error %{public}d", error); @@ -48,12 +44,8 @@ bool PrintCallbackProxy::OnCallback(uint32_t state, const PrinterInfo &info) MessageParcel reply; MessageOption option; - if (!data.WriteInterfaceToken(GetDescriptor())) { - PRINT_HILOGE("write descriptor failed"); - return false; - } - PRINT_HILOGD("Printer Event argument:[%{public}d], printerId [%{private}s]", state, info.GetPrinterId().c_str()); + data.WriteInterfaceToken(GetDescriptor()); data.WriteUint32(state); info.Marshalling(data); @@ -73,12 +65,8 @@ bool PrintCallbackProxy::OnCallback(uint32_t state, const PrintJob &info) MessageParcel reply; MessageOption option; - if (!data.WriteInterfaceToken(GetDescriptor())) { - PRINT_HILOGE("write descriptor failed"); - return false; - } - PRINT_HILOGD("PrintJob Event argument:[%{public}d], subState [%{public}d]", state, info.GetSubState()); + data.WriteInterfaceToken(GetDescriptor()); data.WriteUint32(state); info.Marshalling(data); @@ -98,11 +86,7 @@ bool PrintCallbackProxy::OnCallback(const std::string &extensionId, const std::s MessageParcel reply; MessageOption option; - if (!data.WriteInterfaceToken(GetDescriptor())) { - PRINT_HILOGE("write descriptor failed"); - return false; - } - + data.WriteInterfaceToken(GetDescriptor()); data.WriteString(extensionId); data.WriteString(info); diff --git a/services/src/print_security_guard_info.cpp b/services/src/print_security_guard_info.cpp index 0780f38e..628194bc 100644 --- a/services/src/print_security_guard_info.cpp +++ b/services/src/print_security_guard_info.cpp @@ -16,8 +16,8 @@ #include "print_security_guard_manager.h" namespace OHOS::Print { -using json = nlohmann::json; static const int32_t SPLIT_INDEX = 2; +static const std::string EPRINT_DOMAIN = "https://apigw-01.huawei.com"; PrintSecurityGuardInfo::PrintSecurityGuardInfo(const std::string callPkg, const std::vector &fileList) { @@ -41,13 +41,7 @@ void PrintSecurityGuardInfo::setPrintTypeInfo(const PrinterInfo &printerInfo, co printTypeInfo_.ip = PrintUtil::SplitStr(description, '&', SPLIT_INDEX); printTypeInfo_.mac = PrintUtil::SplitStr(printerId, '/', SPLIT_INDEX); subType_ = PrintSecurityGuardUtil::GetPrinterType(printerId); - - if (subType_ == FROM_EPRINT) { - json optionJson = json::parse(printerInfo.GetOption()); - printTypeInfo_.domain = optionJson["ePrintUrl"].get(); - } else { - printTypeInfo_.domain = ""; - } + printTypeInfo_.domain = (subType_ == FROM_EPRINT) ? EPRINT_DOMAIN : ""; uint32_t subState = printJob.GetSubState(); switch (subState) { diff --git a/services/src/print_service_ability.cpp b/services/src/print_service_ability.cpp index d8b35ae7..f3e3b7af 100644 --- a/services/src/print_service_ability.cpp +++ b/services/src/print_service_ability.cpp @@ -33,7 +33,6 @@ #include "printer_info.h" #include "print_utils.h" #include "string_wrapper.h" -#include "system_ability.h" #include "system_ability_definition.h" #include "want_params_wrapper.h" #include "common_event_data.h" @@ -50,8 +49,6 @@ using namespace OHOS::HiviewDFX; using namespace Security::AccessToken; using json = nlohmann::json; -const uint32_t MAX_RETRY_TIMES = 10; -const uint32_t START_ABILITY_INTERVAL = 6; const uint32_t ASYNC_CMD_DELAY = 10; const int64_t INIT_INTERVAL = 5000L; @@ -78,9 +75,8 @@ static const std::string QUEUE_JOB_LIST_CHANGED = "queuedJobListChanged"; static const std::string ACTION_QUEUE_JOB_LIST_CHANGED = "action.printkit.queuedJobListChanged"; static const std::string QUEUE_JOB_LIST_PRINTING = "printing"; static const std::string QUEUE_JOB_LIST_COMPLETED = "completed"; -static const std::string QUEUE_JOB_LIST_BLOCKED = "blocked"; -static const std::string QUEUE_JOB_LIST_CLEAR_BLOCKED = "clear_blocked"; +static bool publishState = false; REGISTER_SYSTEM_ABILITY_BY_ID(PrintServiceAbility, PRINT_SERVICE_ID, true); @@ -93,7 +89,7 @@ std::string PrintServiceAbility::ingressPackage; PrintServiceAbility::PrintServiceAbility(int32_t systemAbilityId, bool runOnCreate) : SystemAbility(systemAbilityId, runOnCreate), state_(ServiceRunningState::STATE_NOT_START), spoolerBundleName_(SPOOLER_BUNDLE_NAME), spoolerAbilityName_(SPOOLER_ABILITY_NAME), currentJobId_(0), - isJobQueueBlocked_(false) + helper_(nullptr), isJobQueueBlocked_(false) {} PrintServiceAbility::~PrintServiceAbility() @@ -114,10 +110,17 @@ sptr PrintServiceAbility::GetInstance() int32_t PrintServiceAbility::Init() { - bool ret = Publish(PrintServiceAbility::GetInstance()); - if (!ret) { - PRINT_HILOGE("PrintServiceAbility Publish failed."); - return E_PRINT_SERVER_FAILURE; + if (helper_ == nullptr) { + helper_ = std::make_shared(); + } + DelayedSingleton::GetInstance()->SetHelper(helper_); + if (!publishState) { + bool ret = Publish(PrintServiceAbility::GetInstance()); + if (!ret) { + PRINT_HILOGE("PrintServiceAbility Publish failed."); + return E_PRINT_SERVER_FAILURE; + } + publishState = true; } state_ = ServiceRunningState::STATE_RUNNING; PRINT_HILOGE("state_ is %{public}d.", static_cast(state_)); @@ -297,7 +300,11 @@ int32_t PrintServiceAbility::ConnectPrinter(const std::string &printerId) cbFunc->OnCallback(printerId); } }; - serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + if (helper_->IsSyncMode()) { + callback(); + } else { + serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + } return E_PRINT_NONE; } @@ -330,7 +337,11 @@ int32_t PrintServiceAbility::DisconnectPrinter(const std::string &printerId) cbFunc->OnCallback(printerId); } }; - serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + if (helper_->IsSyncMode()) { + callback(); + } else { + serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + } return E_PRINT_NONE; } @@ -356,8 +367,11 @@ int32_t PrintServiceAbility::StartDiscoverPrinter(const std::vector PRINT_HILOGW("No valid extension found"); return E_PRINT_INVALID_EXTENSION; } - for (auto extension : extensionList_) { - abilityList.insert(std::make_pair(extension.first, extension.second)); + + if (extensionIds.empty()) { + for (auto extension : extensionList_) { + abilityList.insert(std::make_pair(extension.first, extension.second)); + } } if (abilityList.empty()) { @@ -416,8 +430,8 @@ int32_t PrintServiceAbility::StopDiscoverPrinter() std::lock_guard lock(apiMutex_); for (auto extension : extensionStateList_) { - if (extension.second < PRINT_EXTENSION_LOADED) { - return E_PRINT_NO_PERMISSION; + if (extension.second < PRINT_EXTENSION_LOADING) { + continue; } extension.second = PRINT_EXTENSION_UNLOAD; std::string cid = PrintUtils::EncodeExtensionCid(extension.first, PRINT_EXTCB_STOP_DISCOVERY); @@ -432,7 +446,11 @@ int32_t PrintServiceAbility::StopDiscoverPrinter() cbFunc->OnCallback(); } }; - serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + if (helper_->IsSyncMode()) { + callback(); + } else { + serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + } } PRINT_HILOGW("StopDiscoverPrinter out."); return E_PRINT_NONE; @@ -520,31 +538,26 @@ int32_t PrintServiceAbility::StartPrintJob(const PrintJob &jobInfo) PRINT_HILOGE("no permission to access print service"); return E_PRINT_NO_PERMISSION; } - std::lock_guard lock(apiMutex_); - auto jobId = jobInfo.GetJobId(); auto printerId = jobInfo.GetPrinterId(); auto extensionId = PrintUtils::GetExtensionId(printerId); - PRINT_HILOGI("StartPrintJob started jobId:%{public}s printerId:%{public}s.", jobId.c_str(), printerId.c_str()); bool IsPrinterDisabled = CheckIsPrinterDisabled(); if (IsPrinterDisabled) { - PRINT_HILOGD("prohibit print"); + PRINT_HILOGE("prohibit print"); return E_PRINT_NO_PERMISSION; } auto jobIt = printJobList_.find(jobId); if (jobIt == printJobList_.end()) { - PRINT_HILOGD("invalid job id"); + PRINT_HILOGE("invalid job id"); return E_PRINT_INVALID_PRINTJOB; } - std::string cid = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_START_PRINT); if (extCallbackMap_.find(cid) == extCallbackMap_.end()) { PRINT_HILOGW("StartPrintJob Not Register Yet!!!"); return E_PRINT_SERVER_FAILURE; } printJobList_.erase(jobIt); - auto printJob = std::make_shared(); if (printJob == nullptr) { PRINT_HILOGE("fail to move print job to queue"); @@ -553,7 +566,6 @@ int32_t PrintServiceAbility::StartPrintJob(const PrintJob &jobInfo) printJob->UpdateParams(jobInfo); queuedJobList_.insert(std::make_pair(jobId, printJob)); printerJobMap_[printerId].insert(std::make_pair(jobId, true)); - auto cbFunc = extCallbackMap_[cid]; auto callback = [=]() { if (cbFunc != nullptr) { @@ -564,7 +576,11 @@ int32_t PrintServiceAbility::StartPrintJob(const PrintJob &jobInfo) cbFunc->OnCallback(*printJob); } }; - serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + if (helper_->IsSyncMode()) { + callback(); + } else { + serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + } return E_PRINT_NONE; } @@ -579,7 +595,7 @@ int32_t PrintServiceAbility::CancelPrintJob(const std::string &jobId) std::lock_guard lock(apiMutex_); auto jobIt = queuedJobList_.find(jobId); - if (jobIt == queuedJobList_.end() || jobIt->second == nullptr) { + if (jobIt == queuedJobList_.end()) { PRINT_HILOGD("invalid job id"); return E_PRINT_INVALID_PRINTJOB; } @@ -601,7 +617,11 @@ int32_t PrintServiceAbility::CancelPrintJob(const std::string &jobId) cbFunc->OnCallback(*tmpPrintJob); } }; - serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + if (helper_->IsSyncMode()) { + callback(); + } else { + serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + } } else { PRINT_HILOGI("job state is prepare"); auto printJob = std::make_shared(*jobIt->second); @@ -626,7 +646,7 @@ void PrintServiceAbility::SendQueuePrintJob(const std::string &printerId) auto jobId = printerJobMap_[printerId].begin()->first; auto jobIt = queuedJobList_.find(jobId); - if (jobIt == queuedJobList_.end() || jobIt->second == nullptr) { + if (jobIt == queuedJobList_.end()) { PRINT_HILOGE("invalid print job, jobId:%{public}s", jobId.c_str()); return; } @@ -649,7 +669,11 @@ void PrintServiceAbility::SendQueuePrintJob(const std::string &printerId) UpdatePrintJobState(jobId, PRINT_JOB_QUEUED, PRINT_JOB_BLOCKED_UNKNOWN); } }; - serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + if (helper_->IsSyncMode()) { + callback(); + } else { + serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + } } int32_t PrintServiceAbility::AddPrinters(const std::vector &printerInfos) @@ -734,6 +758,7 @@ int32_t PrintServiceAbility::UpdatePrinters(const std::vector &prin std::string extensionId = DelayedSingleton::GetInstance()->QueryCallerBundleName(); PRINT_HILOGD("extensionId = %{public}s", extensionId.c_str()); + bool isChanged = false; for (auto info : printerInfos) { std::string printExtId = PrintUtils::GetGlobalId(extensionId, info.GetPrinterId()); auto printerIt = printerInfoList_.find(printExtId); @@ -745,6 +770,10 @@ int32_t PrintServiceAbility::UpdatePrinters(const std::vector &prin printerIt->second->SetPrinterState(PRINTER_UPDATE_CAP); printerIt->second->SetPrinterId(printExtId); SendPrinterEvent(*printerIt->second); + isChanged = true; + } + if (!isChanged) { + return E_PRINT_INVALID_PARAMETER; } PRINT_HILOGD("UpdatePrinters end. Total size is %{private}zd", printerInfoList_.size()); return E_PRINT_NONE; @@ -803,10 +832,10 @@ int32_t PrintServiceAbility::UpdatePrintJobState(const std::string &jobId, uint3 auto jobIt = queuedJobList_.find(jobId); bool jobInQueue = true; - if (jobIt == queuedJobList_.end() || jobIt->second == nullptr) { + if (jobIt == queuedJobList_.end()) { jobInQueue = false; jobIt = printJobList_.find(jobId); - if (jobIt == printJobList_.end() || jobIt->second == nullptr) { + if (jobIt == printJobList_.end()) { PRINT_HILOGD("Invalid print job id"); return E_PRINT_INVALID_PRINTJOB; } @@ -876,10 +905,13 @@ void PrintServiceAbility::ReportHisysEvent(const std::shared_ptr &jobI msg["COPIES_SETTING"] = jobInfo->GetCopyNumber(); std::string option = jobInfo->GetOption(); PRINT_HILOGI("test option:%{public}s", option.c_str()); - json optionJson = json::parse(option); - PRINT_HILOGI("test optionJson: %{public}s", optionJson.dump().c_str()); - PRINT_HILOGI("test jobDescription: %{public}s", optionJson["jobDescription"].get().c_str()); - msg["JOB_DESCRIPTION"] = optionJson["jobDescription"].get(); + if (option != "") { + json optionJson = json::parse(option); + PRINT_HILOGI("test optionJson: %{public}s", optionJson.dump().c_str()); + PRINT_HILOGI("test jobDescription: %{public}s", optionJson["jobDescription"].get().c_str()); + msg["JOB_DESCRIPTION"] = optionJson["jobDescription"].get(); + } + msg["PRINT_STYLE_SETTING"] = jobInfo->GetDuplexMode(); msg["FAIL_REASON_CODE"] = subState; HisysEventUtil::faultPrint("PRINT_JOB_BLOCKED", msg.dump()); @@ -891,7 +923,7 @@ void PrintServiceAbility::NotifyAppJobQueueChanged(const std::string &applyResul AAFwk::Want want; want.SetAction(ACTION_QUEUE_JOB_LIST_CHANGED); want.SetParam(QUEUE_JOB_LIST_CHANGED, applyResult); - EventFwk::CommonEventData commonData{ want }; + EventFwk::CommonEventData commonData { want }; EventFwk::CommonEventManager::PublishCommonEvent(commonData); PRINT_HILOGD("NotifyAppJobQueueChanged end."); } @@ -929,7 +961,11 @@ void PrintServiceAbility::DestroyExtension(const std::string &printerId) cbFunc->OnCallback(); } }; - serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + if (helper_->IsSyncMode()) { + callback(); + } else { + serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + } } int32_t PrintServiceAbility::UpdateExtensionInfo(const std::string &extInfo) @@ -985,9 +1021,9 @@ int32_t PrintServiceAbility::RequestPreview(const PrintJob &jobInfo, std::string return E_PRINT_INVALID_PRINTJOB; } - std::string cid = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_START_PRINT); + std::string cid = PrintUtils::EncodeExtensionCid(extensionId, PRINT_EXTCB_REQUEST_PREVIEW); if (extCallbackMap_.find(cid) == extCallbackMap_.end()) { - PRINT_HILOGW("StartPrintJob Not Register Yet!!!"); + PRINT_HILOGW("RequestPreview Not Register Yet!!!"); return E_PRINT_SERVER_FAILURE; } @@ -1024,23 +1060,20 @@ int32_t PrintServiceAbility::QueryPrinterCapability(const std::string &printerId cbFunc->OnCallback(printerId); } }; - serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + if (helper_->IsSyncMode()) { + callback(); + } else { + serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + } return E_PRINT_NONE; } bool PrintServiceAbility::CheckPermission(const std::string &permissionName) { - AccessTokenID tokenId = IPCSkeleton::GetCallingTokenID(); - TypeATokenTypeEnum tokenType = AccessTokenKit::GetTokenTypeFlag(tokenId); - if (tokenType == TOKEN_INVALID) { - PRINT_HILOGE("invalid token id %{public}d", tokenId); + if (helper_ == nullptr) { return false; } - int result = AccessTokenKit::VerifyAccessToken(tokenId, permissionName); - if (result != PERMISSION_GRANTED) { - PRINT_HILOGE("Current tokenId permission is %{public}d", result); - } - return result == PERMISSION_GRANTED; + return helper_->CheckPermission(permissionName); } int32_t PrintServiceAbility::RegisterExtCallback(const std::string &extensionCID, @@ -1075,6 +1108,12 @@ int32_t PrintServiceAbility::RegisterExtCallback(const std::string &extensionCID PRINT_HILOGE("Invalid callback id [%{public}d]", callbackId); return E_PRINT_INVALID_PARAMETER; } + + if (listener == nullptr) { + PRINT_HILOGE("Invalid listener"); + return E_PRINT_INVALID_PARAMETER; + } + std::lock_guard lock(apiMutex_); if (extCallbackMap_.find(extensionCID) == extCallbackMap_.end()) { extCallbackMap_.insert(std::make_pair(extensionCID, listener)); @@ -1129,7 +1168,11 @@ int32_t PrintServiceAbility::LoadExtSuccess(const std::string &extensionId) PRINT_HILOGD("Auto Stat Printer Discovery"); auto callback = [=]() { DelayStartDiscovery(extensionId); }; - serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + if (helper_->IsSyncMode()) { + callback(); + } else { + serviceHandler_->PostTask(callback, ASYNC_CMD_DELAY); + } PRINT_HILOGD("PrintServiceAbility::LoadExtSuccess end."); return E_PRINT_NONE; } @@ -1147,14 +1190,20 @@ int32_t PrintServiceAbility::On(const std::string taskId, const std::string &typ return E_PRINT_NO_PERMISSION; } + if (eventType == "") { + PRINT_HILOGE("Invalid event type"); + return E_PRINT_INVALID_PARAMETER; + } + + if (listener == nullptr) { + PRINT_HILOGE("Invalid listener"); + return E_PRINT_INVALID_PARAMETER; + } + PRINT_HILOGD("PrintServiceAbility::On started. type=%{public}s", eventType.c_str()); std::lock_guard lock(apiMutex_); if (registeredListeners_.find(eventType) == registeredListeners_.end()) { - const auto temp = registeredListeners_.insert(std::make_pair(eventType, listener)); - if (!temp.second) { - PRINT_HILOGE("PrintServiceAbility::On insert type=%{public}s object fail.", eventType.c_str()); - return E_PRINT_SERVER_FAILURE; - } + registeredListeners_.insert(std::make_pair(eventType, listener)); } else { PRINT_HILOGD("PrintServiceAbility::On Replace listener."); registeredListeners_[eventType] = listener; @@ -1176,6 +1225,11 @@ int32_t PrintServiceAbility::Off(const std::string taskId, const std::string &ty return E_PRINT_NO_PERMISSION; } + if (eventType == "") { + PRINT_HILOGE("Invalid event type"); + return E_PRINT_INVALID_PARAMETER; + } + PRINT_HILOGD("PrintServiceAbility::Off started."); std::lock_guard lock(apiMutex_); auto iter = registeredListeners_.find(eventType); @@ -1189,24 +1243,10 @@ int32_t PrintServiceAbility::Off(const std::string taskId, const std::string &ty bool PrintServiceAbility::StartAbility(const AAFwk::Want &want) { - AppExecFwk::ElementName element = want.GetElement(); - AAFwk::AbilityManagerClient::GetInstance()->Connect(); - uint32_t retry = 0; - while (retry++ < MAX_RETRY_TIMES) { - PRINT_HILOGD("PrintServiceAbility::StartAbility %{public}s %{public}s", - element.GetBundleName().c_str(), element.GetAbilityName().c_str()); - if (AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want) == 0) { - break; - } - break; - std::this_thread::sleep_for(std::chrono::seconds(START_ABILITY_INTERVAL)); - PRINT_HILOGD("PrintServiceAbility::StartAbility %{public}d", retry); - } - if (retry > MAX_RETRY_TIMES) { - PRINT_HILOGE("PrintServiceAbility::StartAbility --> failed "); + if (helper_ == nullptr) { return false; } - return true; + return helper_->StartAbility(want); } PrintExtensionInfo PrintServiceAbility::ConvertToPrintExtensionInfo(const AppExecFwk::ExtensionAbilityInfo &extInfo) @@ -1296,6 +1336,12 @@ std::shared_ptr PrintServiceAbility::getPrinterInfo(const std::stri return nullptr; } +void PrintServiceAbility::SetHelper(const std::shared_ptr &helper) +{ + helper_ = helper; + DelayedSingleton::GetInstance()->SetHelper(helper_); +} + void PrintServiceAbility::CheckJobQueueBlocked(const PrintJob &jobInfo) { PRINT_HILOGD("CheckJobQueueBlocked started,isJobQueueBlocked_=%{public}s", isJobQueueBlocked_ ? "true" : "false"); diff --git a/services/src/print_service_helper.cpp b/services/src/print_service_helper.cpp new file mode 100644 index 00000000..e950285c --- /dev/null +++ b/services/src/print_service_helper.cpp @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "print_service_helper.h" +#include +#include "accesstoken_kit.h" +#include "ipc_skeleton.h" +#include "iservice_registry.h" +#include "os_account_manager.h" +#include "print_constant.h" +#include "print_log.h" +#include "system_ability_definition.h" + +namespace OHOS::Print { +const uint32_t MAX_RETRY_TIMES = 10; +const uint32_t START_ABILITY_INTERVAL = 6; +using namespace Security::AccessToken; + +PrintServiceHelper::~PrintServiceHelper() +{ +} + +bool PrintServiceHelper::CheckPermission(const std::string &name) +{ + AccessTokenID tokenId = IPCSkeleton::GetCallingTokenID(); + TypeATokenTypeEnum tokenType = AccessTokenKit::GetTokenTypeFlag(tokenId); + if (tokenType == TOKEN_INVALID) { + PRINT_HILOGE("invalid token id %{public}d", tokenId); + return false; + } + int result = AccessTokenKit::VerifyAccessToken(tokenId, name); + if (result != PERMISSION_GRANTED) { + PRINT_HILOGE("Current tokenId permission is %{public}d", result); + } + return result == PERMISSION_GRANTED; +} + +bool PrintServiceHelper::StartAbility(const AAFwk::Want &want) +{ + AppExecFwk::ElementName element = want.GetElement(); + AAFwk::AbilityManagerClient::GetInstance()->Connect(); + uint32_t retry = 0; + while (retry++ < MAX_RETRY_TIMES) { + PRINT_HILOGD("PrintServiceHelper::StartAbility %{public}s %{public}s", + element.GetBundleName().c_str(), element.GetAbilityName().c_str()); + if (AAFwk::AbilityManagerClient::GetInstance()->StartAbility(want) == 0) { + break; + } + break; + std::this_thread::sleep_for(std::chrono::seconds(START_ABILITY_INTERVAL)); + PRINT_HILOGD("PrintServiceHelper::StartAbility %{public}d", retry); + } + if (retry > MAX_RETRY_TIMES) { + PRINT_HILOGE("PrintServiceHelper::StartAbility --> failed "); + return false; + } + return true; +} + +sptr PrintServiceHelper::GetBundleMgr() +{ + auto systemAbilityManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); + if (systemAbilityManager == nullptr) { + PRINT_HILOGE("Failed to get system ability mgr."); + return nullptr; + } + + return systemAbilityManager->GetSystemAbility(BUNDLE_MGR_SERVICE_SYS_ABILITY_ID); +} + +bool PrintServiceHelper::QueryAccounts(std::vector &accountList) +{ + if (AccountSA::OsAccountManager::QueryActiveOsAccountIds(accountList) != ERR_OK) { + PRINT_HILOGE("failed to QueryActiveOsAccountIds!"); + return false; + } + if (accountList.size() == 0) { + PRINT_HILOGE("no os account acquired!"); + return false; + } + return true; +} + +bool PrintServiceHelper::QueryExtension(sptr mgr, int userId, + std::vector &extensionInfos) +{ + if (mgr != nullptr) { + mgr->QueryExtensionAbilityInfos(AppExecFwk::ExtensionAbilityType::PRINT, userId, extensionInfos); + return true; + } + PRINT_HILOGE("Invalid bundle manager"); + return false; +} + +bool PrintServiceHelper::QueryNameForUid(sptr mgr, int32_t userId, std::string& name) +{ + if (mgr != nullptr) { + mgr->GetNameForUid(userId, name); + } + PRINT_HILOGE("Invalid bundle manager"); + return false; +} + +bool PrintServiceHelper::IsSyncMode() +{ + return false; +} +} // namespace OHOS diff --git a/services/src/print_service_stub.cpp b/services/src/print_service_stub.cpp index d9e22d3f..902f3a6e 100644 --- a/services/src/print_service_stub.cpp +++ b/services/src/print_service_stub.cpp @@ -425,19 +425,6 @@ bool PrintServiceStub::OnUnregisterAllExtCallback(MessageParcel &data, MessagePa { PRINT_HILOGD("PrintServiceStub::OnUnregisterAllExtCallback in"); std::string extensionId = data.ReadString(); - sptr remote = data.ReadRemoteObject(); - if (remote == nullptr) { - PRINT_HILOGD("PrintServiceStub::OnUnregisterAllExtCallback remote is nullptr"); - reply.WriteInt32(E_PRINT_RPC_FAILURE); - return true; - } - sptr listener = iface_cast(remote); - if (listener.GetRefPtr() == nullptr) { - PRINT_HILOGD("PrintServiceStub::OnUnregisterAllExtCallback listener is null"); - reply.WriteInt32(E_PRINT_RPC_FAILURE); - return false; - } - int32_t ret = UnregisterAllExtCallback(extensionId); reply.WriteInt32(ret); PRINT_HILOGD("PrintServiceStub::OnUnregisterAllExtCallback out"); diff --git a/test/unittest/fwk_inner_napi_test/BUILD.gn b/test/unittest/fwk_inner_napi_test/BUILD.gn index c39354a7..9a38477f 100644 --- a/test/unittest/fwk_inner_napi_test/BUILD.gn +++ b/test/unittest/fwk_inner_napi_test/BUILD.gn @@ -22,16 +22,13 @@ ohos_unittest("print_fwk_inner_napi_test") { "mock", "../service_test/mock", "${print_path}/frameworks/innerkitsimpl/include", - "${print_path}/frameworks/innerkitsimpl/src", - "${print_path}/interfaces/kits/napi/include", - "${print_path}/interfaces/kits/napi/src", "${print_path}/services/include", "${print_utils_path}/include", "//third_party/node/src", - "//third_party/curl/include", ] sources = [ + "print_callback_stub_test.cpp", "print_extension_callback_stub_test.cpp", "print_extension_info_test.cpp", "print_job_test.cpp", @@ -41,8 +38,10 @@ ohos_unittest("print_fwk_inner_napi_test") { "print_preview_attribute_test.cpp", "print_range_test.cpp", "print_resolution_test.cpp", + "print_sa_death_recipient_test.cpp", "print_service_proxy_test.cpp", "print_sync_load_callback_test.cpp", + "print_utils_test.cpp", "printer_capability_test.cpp", "printer_info_test.cpp", ] diff --git a/test/unittest/fwk_inner_napi_test/mock/mock_print_callback_stub.h b/test/unittest/fwk_inner_napi_test/mock/mock_print_callback_stub.h index ca93219f..83b7aef7 100644 --- a/test/unittest/fwk_inner_napi_test/mock/mock_print_callback_stub.h +++ b/test/unittest/fwk_inner_napi_test/mock/mock_print_callback_stub.h @@ -12,8 +12,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#ifndef MOCK_PRINT_CALLBACK_H -#define MOCK_PRINT_CALLBACK_H +#ifndef MOCK_PRINT_CALLBACK_STUB_H +#define MOCK_PRINT_CALLBACK_STUB_H #include #include "print_callback_stub.h" @@ -47,6 +47,6 @@ public: MOCK_METHOD2(OnCallback, bool(uint32_t, const PrintJob&)); MOCK_METHOD2(OnCallback, bool(const std::string&, const std::string&)); }; -} // namespace Print -} // namespace OHOS -#endif // MOCK_PRINT_SERVICE_H \ No newline at end of file +} // namespace Print +} // namespace OHOS +#endif // MOCK_PRINT_CALLBACK_STUB_H diff --git a/test/unittest/fwk_inner_napi_test/print_callback_stub_test.cpp b/test/unittest/fwk_inner_napi_test/print_callback_stub_test.cpp new file mode 100644 index 00000000..9dd18171 --- /dev/null +++ b/test/unittest/fwk_inner_napi_test/print_callback_stub_test.cpp @@ -0,0 +1,196 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include +#include "mock_print_callback_stub.h" +#include "iremote_broker.h" +#include "print_constant.h" +#include "print_job.h" +#include "printer_info.h" + +using namespace testing; +using namespace testing::ext; + +namespace OHOS { +namespace Print { +class PrintCallbackStubTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); +}; + +void PrintCallbackStubTest::SetUpTestCase(void) {} + +void PrintCallbackStubTest::TearDownTestCase(void) {} + +void PrintCallbackStubTest::SetUp(void) {} + +void PrintCallbackStubTest::TearDown(void) {} + + +/** + * @tc.name: PrintCallbackStubTest_0001 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintCallbackStubTest, PrintCallbackStubTest_0001, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(PRINT_CALLBACK_TASK); + + auto callback = std::make_shared(); + EXPECT_NE(callback, nullptr); + EXPECT_EQ(callback->OnRemoteRequest(code, data, reply, option), E_PRINT_RPC_FAILURE); +} + +/** + * @tc.name: PrintServiceProxyTest_0002 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintCallbackStubTest, PrintCallbackStubTest_0002, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(PRINT_CALLBACK_TASK + 100); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + auto callback = std::make_shared(); + EXPECT_NE(callback, nullptr); + EXPECT_EQ(callback->OnRemoteRequest(code, data, reply, option), OHOS::IPC_STUB_UNKNOW_TRANS_ERR); +} + +/** + * @tc.name: PrintServiceProxyTest_0003 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintCallbackStubTest, PrintCallbackStubTest_0003, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(PRINT_CALLBACK_TASK); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + auto callback = std::make_shared(); + EXPECT_NE(callback, nullptr); + EXPECT_CALL(*callback, OnCallback()).Times(1); + EXPECT_TRUE(static_cast(callback->OnRemoteRequest(code, data, reply, option))); +} + +MATCHER_P(PrinterInfoMatcher, oParam, "Match Printer Info") +{ + const PrinterInfo& op = (const PrinterInfo&)arg; + return op.GetPrinterId() == oParam.GetPrinterId(); +} + +MATCHER_P(PrintJobMatcher, oParam, "Match Print Job") +{ + const PrintJob& op = (const PrintJob&)arg; + return op.GetJobId() == oParam.GetJobId(); +} + +/** + * @tc.name: PrintServiceProxyTest_0004 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintCallbackStubTest, PrintCallbackStubTest_0004, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(PRINT_CALLBACK_PRINTER); + + auto testState = static_cast(PRINTER_ADDED); + PrinterInfo testInfo; + std::string testPrinterId = "com.sample.ext:1"; + testInfo.SetPrinterId(testPrinterId); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteUint32(testState)); + EXPECT_TRUE(testInfo.Marshalling(data)); + auto callback = std::make_shared(); + EXPECT_NE(callback, nullptr); + EXPECT_CALL(*callback, OnCallback(testState, + Matcher(PrinterInfoMatcher(testInfo)))).Times(1).WillOnce(Return(true)); + EXPECT_TRUE(static_cast(callback->OnRemoteRequest(code, data, reply, option))); + EXPECT_TRUE(reply.ReadBool()); +} + +/** + * @tc.name: PrintServiceProxyTest_0005 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintCallbackStubTest, PrintCallbackStubTest_0005, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(PRINT_CALLBACK_PRINT_JOB); + + auto testState = static_cast(PRINT_JOB_RUNNING); + PrintJob testJob; + std::string jobId = "job:1234"; + testJob.SetJobId(jobId); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteUint32(testState)); + EXPECT_TRUE(testJob.Marshalling(data)); + auto callback = std::make_shared(); + EXPECT_NE(callback, nullptr); + EXPECT_CALL(*callback, OnCallback(testState, + Matcher(PrintJobMatcher(testJob)))).Times(1).WillOnce(Return(true)); + EXPECT_TRUE(static_cast(callback->OnRemoteRequest(code, data, reply, option))); + EXPECT_TRUE(reply.ReadBool()); +} + +/** + * @tc.name: PrintCallbackStubTest_0006 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintCallbackStubTest, PrintCallbackStubTest_0006, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(PRINT_CALLBACK_EXTINFO); + + std::string extensionId = "com.sample.ext"; + std::string extInfo = "custom extension info"; + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(extensionId)); + EXPECT_TRUE(data.WriteString(extInfo)); + auto callback = std::make_shared(); + EXPECT_NE(callback, nullptr); + EXPECT_CALL(*callback, OnCallback(extensionId, extInfo)).Times(1).WillOnce(Return(true)); + EXPECT_TRUE(static_cast(callback->OnRemoteRequest(code, data, reply, option))); + EXPECT_TRUE(reply.ReadBool()); +} +} // namespace Print +} // namespace OHOS diff --git a/test/unittest/fwk_inner_napi_test/print_manager_client_test.cpp b/test/unittest/fwk_inner_napi_test/print_manager_client_test.cpp index 46edc61f..ab8e75f6 100644 --- a/test/unittest/fwk_inner_napi_test/print_manager_client_test.cpp +++ b/test/unittest/fwk_inner_napi_test/print_manager_client_test.cpp @@ -109,7 +109,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0002, TestSize.Level1) /** * @tc.name: PrintManagerClientTest_0003 -* @tc.desc: StartPrint success case. +* @tc.desc: StartPrint failed case. * @tc.type: FUNC * @tc.require: */ @@ -120,6 +120,26 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0003, TestSize.Level1) std::vector testFdList = {1, 2}; std::string testTaskId = "2"; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->StartPrint(testFileList, testFdList, testTaskId); + EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); +} + + +/** +* @tc.name: PrintManagerClientTest_0004 +* @tc.desc: StartPrint success case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0004, TestSize.Level1) +{ + std::vector testFileList = {"file://data/print/a.png", + "file://data/print/b.png", "file://data/print/c.png"}; + std::vector testFdList = {1, 2}; + std::string testTaskId = "2"; + auto service = std::make_shared(); EXPECT_NE(service, nullptr); EXPECT_CALL(*service, StartPrint(_, _, _)).Times(1); @@ -133,7 +153,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0003, TestSize.Level1) EXPECT_EQ(testFdList.size(), fdList.size()); return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -144,43 +164,59 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0003, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0004 + * @tc.name: PrintManagerClientTest_0005 * @tc.desc: StopPrint failed case. * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0004, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0005, TestSize.Level1) { std::string testTaskId = "2"; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->StopPrint(testTaskId); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0005 +* @tc.name: PrintManagerClientTest_0006 * @tc.desc: StopPrint failed case. * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0005, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0006, TestSize.Level1) { std::string testTaskId = "2"; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->StopPrint(testTaskId); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0006 +* @tc.name: PrintManagerClientTest_0007 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0007, TestSize.Level1) +{ + std::string testTaskId = "2"; + + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->StopPrint(testTaskId); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0008 * @tc.desc: StopPrint succedd case. * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0006, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0008, TestSize.Level1) { std::string testTaskId = "2"; auto service = std::make_shared(); @@ -191,7 +227,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0006, TestSize.Level1) EXPECT_EQ(testTaskId, taskId); return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -202,41 +238,57 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0006, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0007 + * @tc.name: PrintManagerClientTest_0009 * @tc.desc: QueryAllExtension * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0007, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0009, TestSize.Level1) { std::vector extensionInfos; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->QueryAllExtension(extensionInfos); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0008 +* @tc.name: PrintManagerClientTest_00010 * @tc.desc: QueryAllExtension_NA1 * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0008, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_00010, TestSize.Level1) { std::vector extensionInfos; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->QueryAllExtension(extensionInfos); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0011 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0011, TestSize.Level1) +{ + std::vector extensionInfos; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->QueryAllExtension(extensionInfos); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } + /** -* @tc.name: PrintManagerClientTest_0009 +* @tc.name: PrintManagerClientTest_0012 * @tc.desc: StartDiscoverPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0009, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0012, TestSize.Level1) { PrintExtensionInfo info1, info2; info1.SetExtensionId("ext-123"); @@ -251,7 +303,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0009, TestSize.Level1) extensionInfos.assign(testExtensionInfos.begin(), testExtensionInfos.end()); return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -267,43 +319,59 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0009, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0010 + * @tc.name: PrintManagerClientTest_0013 * @tc.desc: QueryAllExtension * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0010, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0013, TestSize.Level1) { std::vector testExtensionList = {"extensionId-1", "extensionId-2"}; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->StartDiscoverPrinter(testExtensionList); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0011 +* @tc.name: PrintManagerClientTest_0014 * @tc.desc: QueryAllExtension_NA1 * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0011, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0014, TestSize.Level1) { std::vector testExtensionList = {"extensionId-1", "extensionId-2"}; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->StartDiscoverPrinter(testExtensionList); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0012 +* @tc.name: PrintManagerClientTest_0015 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0015, TestSize.Level1) +{ + std::vector testExtensionList = {"extensionId-1", "extensionId-2"}; + std::vector extensionInfos; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->StartDiscoverPrinter(testExtensionList); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0016 * @tc.desc: StartDiscoverPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0012, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0016, TestSize.Level1) { std::vector testExtensionList = {"extensionId-1", "extensionId-2"}; @@ -314,7 +382,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0012, TestSize.Level1) [&testExtensionList](const std::vector &extensionList) { return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -325,39 +393,55 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0012, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0013 + * @tc.name: PrintManagerClientTest_0017 * @tc.desc: QueryAllExtension * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0013, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0017, TestSize.Level1) { PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->StopDiscoverPrinter(); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0014 +* @tc.name: PrintManagerClientTest_0018 * @tc.desc: QueryAllExtension_NA1 * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0014, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0018, TestSize.Level1) { PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->StopDiscoverPrinter(); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0015 +* @tc.name: PrintManagerClientTest_0019 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0019, TestSize.Level1) +{ + std::vector testExtensionList = {"extensionId-1", "extensionId-2"}; + std::vector extensionInfos; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->StartDiscoverPrinter(testExtensionList); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0020 * @tc.desc: StartDiscoverPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0015, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0020, TestSize.Level1) { auto service = std::make_shared(); EXPECT_NE(service, nullptr); @@ -366,7 +450,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0015, TestSize.Level1) []() { return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -377,12 +461,12 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0015, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0016 + * @tc.name: PrintManagerClientTest_0021 * @tc.desc: QueryAllExtension * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0016, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0021, TestSize.Level1) { std::vector printerInfos; PrintManagerClient::GetInstance()->LoadServerFail(); @@ -391,12 +475,12 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0016, TestSize.Level1) } /** -* @tc.name: PrintManagerClientTest_0017 +* @tc.name: PrintManagerClientTest_0022 * @tc.desc: QueryAllExtension_NA1 * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0017, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0022, TestSize.Level1) { std::vector printerInfos; PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -406,12 +490,27 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0017, TestSize.Level1) } /** -* @tc.name: PrintManagerClientTest_0018 +* @tc.name: PrintManagerClientTest_0023 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0023, TestSize.Level1) +{ + std::vector printerInfos; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->AddPrinters(printerInfos); + EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); +} + +/** +* @tc.name: PrintManagerClientTest_0024 * @tc.desc: StartDiscoverPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0018, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0024, TestSize.Level1) { OHOS::Print::PrinterInfo printerInfo; std::string printerId = "printId-123"; @@ -438,7 +537,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0018, TestSize.Level1) } return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -449,46 +548,60 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0018, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0019 + * @tc.name: PrintManagerClientTest_0025 * @tc.desc: QueryAllExtension * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0019, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0025, TestSize.Level1) { std::vector testPrinterIds = {"printerId-1", "printerId-2"}; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->RemovePrinters(testPrinterIds); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0020 +* @tc.name: PrintManagerClientTest_0026 * @tc.desc: QueryAllExtension_NA1 * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0020, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0026, TestSize.Level1) { std::vector testPrinterIds = {"printerId-1", "printerId-2"}; - PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->RemovePrinters(testPrinterIds); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0021 -* @tc.desc: RemovePrinters +* @tc.name: PrintManagerClientTest_0027 +* @tc.desc: StartPrint failed case. * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0021, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0027, TestSize.Level1) { std::vector testPrinterIds = {"printerId-1", "printerId-2"}; + std::vector printerInfos; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->RemovePrinters(testPrinterIds); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} +/** +* @tc.name: PrintManagerClientTest_0028 +* @tc.desc: RemovePrinters +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0028, TestSize.Level1) +{ + std::vector testPrinterIds = {"printerId-1", "printerId-2"}; auto service = std::make_shared(); EXPECT_NE(service, nullptr); EXPECT_CALL(*service, RemovePrinters(_)).Times(1); @@ -500,7 +613,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0021, TestSize.Level1) } return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -511,12 +624,12 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0021, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0022 + * @tc.name: PrintManagerClientTest_0029 * @tc.desc: QueryAllExtension * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0022, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0029, TestSize.Level1) { std::vector printerInfos; PrintManagerClient::GetInstance()->LoadServerFail(); @@ -525,12 +638,12 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0022, TestSize.Level1) } /** -* @tc.name: PrintManagerClientTest_0023 +* @tc.name: PrintManagerClientTest_0030 * @tc.desc: QueryAllExtension_NA1 * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0023, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0030, TestSize.Level1) { std::vector printerInfos; PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -540,12 +653,27 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0023, TestSize.Level1) } /** -* @tc.name: PrintManagerClientTest_0024 +* @tc.name: PrintManagerClientTest_0031 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0031, TestSize.Level1) +{ + std::vector printerInfos; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->UpdatePrinters(printerInfos); + EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); +} + +/** +* @tc.name: PrintManagerClientTest_0032 * @tc.desc: StartDiscoverPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0024, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0032, TestSize.Level1) { PrinterInfo printerInfo; std::string printerId = "printId-123"; @@ -572,7 +700,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0024, TestSize.Level1) } return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -583,43 +711,56 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0024, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0025 + * @tc.name: PrintManagerClientTest_0033 * @tc.desc: ConnectPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0025, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0033, TestSize.Level1) { std::string printerId = "printerId-1"; - PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->ConnectPrinter(printerId); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0026 +* @tc.name: PrintManagerClientTest_0034 * @tc.desc: ConnectPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0026, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0034, TestSize.Level1) { std::string printerId = "printerId-1"; - PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->ConnectPrinter(printerId); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0027 +* @tc.name: PrintManagerClientTest_0035 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0035, TestSize.Level1) +{ + std::string printerId = "printerId-1"; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->ConnectPrinter(printerId); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0036 * @tc.desc: ConnectPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0027, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0036, TestSize.Level1) { std::string testPrinterId = "printerId-1"; @@ -631,7 +772,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0027, TestSize.Level1) EXPECT_EQ(testPrinterId, printerId); return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -642,43 +783,59 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0027, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0028 + * @tc.name: PrintManagerClientTest_0037 * @tc.desc: DisconnectPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0028, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0037, TestSize.Level1) { std::string printerId = "printerId-1"; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->DisconnectPrinter(printerId); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0029 +* @tc.name: PrintManagerClientTest_0038 * @tc.desc: DisconnectPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0029, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0038, TestSize.Level1) { std::string printerId = "printerId-1"; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->DisconnectPrinter(printerId); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0030 +* @tc.name: PrintManagerClientTest_0039 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0039, TestSize.Level1) +{ + std::string printerId = "printerId-1"; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->DisconnectPrinter(printerId); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + + +/** +* @tc.name: PrintManagerClientTest_0040 * @tc.desc: DisconnectPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0030, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0040, TestSize.Level1) { std::string testPrinterId = "printerId-1"; @@ -690,7 +847,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0030, TestSize.Level1) EXPECT_EQ(testPrinterId, printerId); return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -701,42 +858,57 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0030, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0031 + * @tc.name: PrintManagerClientTest_0041 * @tc.desc: StartPrintJob * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0031, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0041, TestSize.Level1) { PrintJob jobinfo; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->StartPrintJob(jobinfo); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0032 +* @tc.name: PrintManagerClientTest_0042 * @tc.desc: StartPrintJob * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0032, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0042, TestSize.Level1) { PrintJob jobinfo; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->StartPrintJob(jobinfo); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0033 +* @tc.name: PrintManagerClientTest_0043 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0043, TestSize.Level1) +{ + PrintJob jobinfo; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->StartPrintJob(jobinfo); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0044 * @tc.desc: StartPrintJob * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0033, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0044, TestSize.Level1) { OHOS::Print::PrintJob testJob; testJob.SetJobId("jobId-123"); @@ -748,7 +920,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0033, TestSize.Level1) EXPECT_EQ(testJob.GetJobId(), jobinfo.GetJobId()); return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -759,43 +931,58 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0033, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0034 + * @tc.name: PrintManagerClientTest_0045 * @tc.desc: CancelPrintJob * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0034, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0045, TestSize.Level1) { std::string jobId = "jobId-1"; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->CancelPrintJob(jobId); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0035 +* @tc.name: PrintManagerClientTest_0046 * @tc.desc: CancelPrintJob * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0035, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0046, TestSize.Level1) { std::string jobId = "jobId-1"; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->CancelPrintJob(jobId); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0036 +* @tc.name: PrintManagerClientTest_0047 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0047, TestSize.Level1) +{ + std::string jobId = "jobId-1"; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->CancelPrintJob(jobId); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0048 * @tc.desc: CancelPrintJob * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0036, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0048, TestSize.Level1) { std::string testJobId = "jobId-1"; @@ -807,7 +994,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0036, TestSize.Level1) EXPECT_EQ(testJobId, jobId); return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -818,28 +1005,28 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0036, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0037 + * @tc.name: PrintManagerClientTest_0049 * @tc.desc: UpdatePrinterState * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0037, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0049, TestSize.Level1) { std::string printerId = "printerId-1"; uint32_t state = 6; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->UpdatePrinterState(printerId, state); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0038 +* @tc.name: PrintManagerClientTest_0050 * @tc.desc: UpdatePrinterState * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0038, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0050, TestSize.Level1) { std::string printerId = "printerId-1"; uint32_t state = 6; @@ -847,16 +1034,32 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0038, TestSize.Level1) PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->UpdatePrinterState(printerId, state); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0039 +* @tc.name: PrintManagerClientTest_0051 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0051, TestSize.Level1) +{ + std::string printerId = "printerId-1"; + uint32_t state = 6; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->UpdatePrinterState(printerId, state); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0052 * @tc.desc: UpdatePrinterState * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0039, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0052, TestSize.Level1) { std::string testPrinterId = "printerId-1"; uint32_t testState = 6; @@ -869,7 +1072,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0039, TestSize.Level1) EXPECT_EQ(testState, state); return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -880,28 +1083,28 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0039, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0040 + * @tc.name: PrintManagerClientTest_0053 * @tc.desc: UpdatePrintJobState * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0040, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0053, TestSize.Level1) { std::string printerId = "printerId-1"; uint32_t state = 6; uint32_t subState = 6; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->UpdatePrintJobState(printerId, state, subState); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0041 +* @tc.name: PrintManagerClientTest_0054 * @tc.desc: UpdatePrintJobState * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0041, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0054, TestSize.Level1) { std::string printerId = "printerId-1"; uint32_t state = 6; @@ -909,16 +1112,33 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0041, TestSize.Level1) PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->UpdatePrintJobState(printerId, state, subState); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0042 +* @tc.name: PrintManagerClientTest_0055 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0055, TestSize.Level1) +{ + std::string printerId = "printerId-1"; + uint32_t state = 6; + uint32_t subState = 6; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->UpdatePrintJobState(printerId, state, subState); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0056 * @tc.desc: UpdatePrintJobState * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0042, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0056, TestSize.Level1) { std::string testPrinterId = "printerId-1"; uint32_t testState = 6; @@ -934,7 +1154,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0042, TestSize.Level1) EXPECT_EQ(testSubState, subState); return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -945,41 +1165,56 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0042, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0043 + * @tc.name: PrintManagerClientTest_0057 * @tc.desc: UpdateExtensionInfo * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0043, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0057, TestSize.Level1) { std::string extensionId = "extensionId-1"; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->UpdateExtensionInfo(extensionId); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0044 +* @tc.name: PrintManagerClientTest_0058 * @tc.desc: UpdateExtensionInfo * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0044, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0058, TestSize.Level1) { std::string extensionId = "extensionId-1"; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->UpdateExtensionInfo(extensionId); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0045 +* @tc.name: PrintManagerClientTest_0059 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0059, TestSize.Level1) +{ + std::string extensionId = "extensionId-1"; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->UpdateExtensionInfo(extensionId); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0060 * @tc.desc: UpdateExtensionInfo * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0045, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0060, TestSize.Level1) { std::string testExtensionId = "extensionId-1"; @@ -991,7 +1226,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0045, TestSize.Level1) EXPECT_EQ(testExtensionId, extensionId); return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -1002,43 +1237,59 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0045, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0046 + * @tc.name: PrintManagerClientTest_0061 * @tc.desc: RequestPreview * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0046, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0061, TestSize.Level1) { PrintJob jobinfo; std::string previewFilePath = "/data/temp/preview.png"; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->RequestPreview(jobinfo, previewFilePath); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0047 +* @tc.name: PrintManagerClientTest_0062 * @tc.desc: RequestPreview * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0047, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0062, TestSize.Level1) { PrintJob jobinfo; std::string previewFilePath = "/data/temp/preview.png"; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->RequestPreview(jobinfo, previewFilePath); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0048 +* @tc.name: PrintManagerClientTest_0063 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0063, TestSize.Level1) +{ + PrintJob jobinfo; + std::string previewFilePath = "/data/temp/preview.png"; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->RequestPreview(jobinfo, previewFilePath); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0064 * @tc.desc: RequestPreview * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0048, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0064, TestSize.Level1) { PrintJob testJobinfo; testJobinfo.SetJobId("jobId-123"); @@ -1052,7 +1303,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0048, TestSize.Level1) previewResult = testPreviewFilePath; return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -1065,43 +1316,58 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0048, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0049 + * @tc.name: PrintManagerClientTest_0065 * @tc.desc: QueryAllExtension * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0049, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0065, TestSize.Level1) { std::string testPrintId = "printId-123"; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->QueryPrinterCapability(testPrintId); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0050 +* @tc.name: PrintManagerClientTest_0066 * @tc.desc: QueryAllExtension_NA1 * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0050, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0066, TestSize.Level1) { std::string testPrintId = "printId-123"; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->QueryPrinterCapability(testPrintId); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0051 +* @tc.name: PrintManagerClientTest_0067 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0067, TestSize.Level1) +{ + std::string testPrintId = "printId-123"; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->QueryPrinterCapability(testPrintId); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0068 * @tc.desc: StartDiscoverPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0051, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0068, TestSize.Level1) { std::string testPrintId = "printId-123"; @@ -1113,7 +1379,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0051, TestSize.Level1) EXPECT_EQ(testPrintId, printerId); return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -1124,43 +1390,58 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0051, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0052 + * @tc.name: PrintManagerClientTest_0069 * @tc.desc: QueryAllExtension * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0052, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0069, TestSize.Level1) { std::vector testPrintJobs; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->QueryAllPrintJob(testPrintJobs); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0053 +* @tc.name: PrintManagerClientTest_0070 * @tc.desc: QueryAllExtension_NA1 * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0053, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0070, TestSize.Level1) { std::vector testPrintJobs; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->QueryAllPrintJob(testPrintJobs); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0054 +* @tc.name: PrintManagerClientTest_0071 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0071, TestSize.Level1) +{ + std::vector testPrintJobs; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->QueryAllPrintJob(testPrintJobs); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0072 * @tc.desc: StartDiscoverPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0054, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0072, TestSize.Level1) { PrintJob job1, job2; job1.SetJobId("1"); @@ -1175,7 +1456,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0054, TestSize.Level1) printJobs.assign(testPrintJobs.begin(), testPrintJobs.end()); return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -1192,43 +1473,59 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0054, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0055 + * @tc.name: PrintManagerClientTest_0073 * @tc.desc: QueryAllExtension * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0055, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0073, TestSize.Level1) { std::string testPrintJobId = "jobId-123"; PrintJob testPrintJob; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->QueryPrintJobById(testPrintJobId, testPrintJob); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0056 +* @tc.name: PrintManagerClientTest_0074 * @tc.desc: QueryAllExtension_NA1 * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0056, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0074, TestSize.Level1) { std::string testPrintJobId = "jobId-123"; PrintJob testPrintJob; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->QueryPrintJobById(testPrintJobId, testPrintJob); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0075 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0075, TestSize.Level1) +{ + std::string testPrintJobId = "jobId-123"; + PrintJob testPrintJob; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->QueryPrintJobById(testPrintJobId, testPrintJob); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0057 +* @tc.name: PrintManagerClientTest_0076 * @tc.desc: StartDiscoverPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0057, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0076, TestSize.Level1) { std::string testPrintJobId = "jobId-123"; PrintJob testPrintJob; @@ -1243,7 +1540,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0057, TestSize.Level1) printJob = testPrintJob; return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -1256,12 +1553,12 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0057, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0058 + * @tc.name: PrintManagerClientTest_0077 * @tc.desc: QueryAllExtension * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0058, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0077, TestSize.Level1) { std::string testTaskId = "taskId-123"; std::string testType = "type"; @@ -1269,16 +1566,16 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0058, TestSize.Level1) PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->On(testTaskId, testType, testListener); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_INVALID_PARAMETER); } /** -* @tc.name: PrintManagerClientTest_0059 +* @tc.name: PrintManagerClientTest_0078 * @tc.desc: QueryAllExtension_NA1 * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0059, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0078, TestSize.Level1) { std::string testTaskId = "taskId-123"; std::string testType = "type"; @@ -1287,20 +1584,37 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0059, TestSize.Level1) PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->On(testTaskId, testType, testListener); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_INVALID_PARAMETER); } /** -* @tc.name: PrintManagerClientTest_0060 +* @tc.name: PrintManagerClientTest_0079 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0079, TestSize.Level1) +{ + std::string testTaskId = "taskId-123"; + std::string testType = "type"; + sptr testListener; + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->On(testTaskId, testType, testListener); + EXPECT_EQ(ret, E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintManagerClientTest_0080 * @tc.desc: StartDiscoverPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0060, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0080, TestSize.Level1) { std::string testTaskId = "taskId-123"; std::string testType = "type"; - sptr testListener = new (std::nothrow)DummyPrintCallbackStub(); + sptr testListener = new (std::nothrow) DummyPrintCallbackStub(); auto service = std::make_shared(); EXPECT_NE(service, nullptr); @@ -1313,7 +1627,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0060, TestSize.Level1) EXPECT_TRUE(testListener == listener); return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -1324,28 +1638,28 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0060, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0061 + * @tc.name: PrintManagerClientTest_0081 * @tc.desc: Off failed * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0061, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0081, TestSize.Level1) { std::string testTaskId = "taskId-123"; std::string testType = "type"; PrintManagerClient::GetInstance()->LoadServerFail(); int32_t ret = PrintManagerClient::GetInstance()->Off(testTaskId, testType); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0062 +* @tc.name: PrintManagerClientTest_0082 * @tc.desc: Off failed2 * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0062, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0082, TestSize.Level1) { std::string testTaskId = "taskId-123"; std::string testType = "type"; @@ -1353,16 +1667,33 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0062, TestSize.Level1) PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); int32_t ret = PrintManagerClient::GetInstance()->Off(testTaskId, testType); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0063 +* @tc.name: PrintManagerClientTest_0083 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0083, TestSize.Level1) +{ + std::string testTaskId = "taskId-123"; + std::string testType = "type"; + + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->Off(testTaskId, testType); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintManagerClientTest_0084 * @tc.desc: StartDiscoverPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0063, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0084, TestSize.Level1) { std::string testTaskId = "taskId-123"; std::string testType = "type"; @@ -1376,7 +1707,7 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0063, TestSize.Level1) EXPECT_EQ(testType, type); return E_PRINT_NONE; }); - sptr obj = new MockRemoteObject(); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); @@ -1387,387 +1718,456 @@ HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0063, TestSize.Level1) } /** - * @tc.name: PrintManagerClientTest_0064 - * @tc.desc: QueryAllExtension + * @tc.name: PrintManagerClientTest_0085 + * @tc.desc: RegisterExtCallback: invalid callback id of ext cb * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0064, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0085, TestSize.Level1) { - std::string testExtCID = "extId-123"; - uint32_t testCallbackId = 111; + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_MAX + 100; PrintExtCallback testCb = nullptr; - PrintManagerClient::GetInstance()->LoadServerFail(); - int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtCID, testCallbackId, testCb); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); + EXPECT_EQ(ret, E_PRINT_INVALID_PARAMETER); } /** - * @tc.name: PrintManagerClientTest_0065 - * @tc.desc: QueryAllExtension + * @tc.name: PrintManagerClientTest_0086 + * @tc.desc: RegisterExtCallback: invalid callback id of job cb * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0065, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0086, TestSize.Level1) { - std::string testExtCID = "extId-123"; - uint32_t testCallbackId = 111; + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_MAX + 100; PrintJobCallback testCb = nullptr; - PrintManagerClient::GetInstance()->LoadServerFail(); - int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtCID, testCallbackId, testCb); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); + EXPECT_EQ(ret, E_PRINT_INVALID_PARAMETER); } /** - * @tc.name: PrintManagerClientTest_0066 - * @tc.desc: QueryAllExtension + * @tc.name: PrintManagerClientTest_0087 + * @tc.desc: RegisterExtCallback: invalid callback id of printer cap cb * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0066, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0087, TestSize.Level1) { - std::string testExtCID = "extId-123"; - uint32_t testCallbackId = 111; - PrinterCallback testCb = nullptr; + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_MAX + 100; + PrinterCapabilityCallback testCb = nullptr; - PrintManagerClient::GetInstance()->LoadServerFail(); - int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtCID, testCallbackId, testCb); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); + EXPECT_EQ(ret, E_PRINT_INVALID_PARAMETER); } /** - * @tc.name: PrintManagerClientTest_0067 - * @tc.desc: QueryAllExtension + * @tc.name: PrintManagerClientTest_0088 + * @tc.desc: RegisterExtCallback: invalid callback id of printer cb * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0067, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0088, TestSize.Level1) +{ + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_MAX + 100; + PrinterCallback testCb = nullptr; + + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); + EXPECT_EQ(ret, E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintManagerClientTest_0089 +* @tc.desc: RegisterExtCallback: load serve failed for ext cb +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0089, TestSize.Level1) +{ + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_START_DISCOVERY; + PrintExtCallback testCb = nullptr; + + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); + EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); +} + +/** +* @tc.name: PrintManagerClientTest_0090 +* @tc.desc: RegisterExtCallback: load serve failed for job cb +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0090, TestSize.Level1) { - std::string testExtCID = "extId-123"; - uint32_t testCallbackId = 111; + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_START_DISCOVERY; + PrintJobCallback testCb = nullptr; + + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); + EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); +} + +/** +* @tc.name: PrintManagerClientTest_0091 +* @tc.desc: RegisterExtCallback: load serve failed for printer cb +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0091, TestSize.Level1) +{ + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_START_DISCOVERY; + PrinterCallback testCb = nullptr; + + PrintManagerClient::GetInstance()->LoadServerFail(); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); + EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); +} + +/** +* @tc.name: PrintManagerClientTest_0092 +* @tc.desc: RegisterExtCallback: load serve failed for printer cap cb +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0092, TestSize.Level1) +{ + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_START_DISCOVERY; PrinterCapabilityCallback testCb = nullptr; PrintManagerClient::GetInstance()->LoadServerFail(); - int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtCID, testCallbackId, testCb); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); } /** -* @tc.name: PrintManagerClientTest_0068 -* @tc.desc: QueryAllExtension_NA1 +* @tc.name: PrintManagerClientTest_0093 +* @tc.desc: RegisterExtCallback: without proxy for ext cb * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0068, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0093, TestSize.Level1) { - std::string testExtCID = "extId-123"; - uint32_t testCallbackId = 111; + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_START_DISCOVERY; PrintExtCallback testCb = nullptr; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); - int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtCID, testCallbackId, testCb); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); } /** -* @tc.name: PrintManagerClientTest_0069 -* @tc.desc: QueryAllExtension_NA1 +* @tc.name: PrintManagerClientTest_0094 +* @tc.desc: RegisterExtCallback: without proxy for job cb * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0069, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0094, TestSize.Level1) { - std::string testExtCID = "extId-123"; - uint32_t testCallbackId = 111; + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_START_DISCOVERY; PrintJobCallback testCb = nullptr; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); - int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtCID, testCallbackId, testCb); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); } /** -* @tc.name: PrintManagerClientTest_0070 -* @tc.desc: QueryAllExtension_NA1 +* @tc.name: PrintManagerClientTest_0095 +* @tc.desc: RegisterExtCallback: without proxy for printer cb * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0070, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0095, TestSize.Level1) { - std::string testExtCID = "extId-123"; - uint32_t testCallbackId = 111; + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_START_DISCOVERY; PrinterCallback testCb = nullptr; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); - int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtCID, testCallbackId, testCb); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); } /** -* @tc.name: PrintManagerClientTest_0071 -* @tc.desc: QueryAllExtension_NA1 +* @tc.name: PrintManagerClientTest_0096 +* @tc.desc: RegisterExtCallback: without proxy for printer cap cb * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0071, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0096, TestSize.Level1) { - std::string testExtCID = "extId-123"; - uint32_t testCallbackId = 111; + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_START_DISCOVERY; PrinterCapabilityCallback testCb = nullptr; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); - int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtCID, testCallbackId, testCb); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); } /** -* @tc.name: PrintManagerClientTest_0072 -* @tc.desc: StartDiscoverPrinter +* @tc.name: PrintManagerClientTest_0097 +* @tc.desc: RegisterExtCallback: ok for ext cb * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0072, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0097, TestSize.Level1) { - std::string testExtCID = "extId-123"; - uint32_t testCallbackId = 111; + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_START_DISCOVERY; PrintExtCallback testCb = nullptr; - sptr testListener; auto service = std::make_shared(); EXPECT_NE(service, nullptr); - EXPECT_CALL(*service, RegisterExtCallback(_, _)).Times(1); - ON_CALL(*service, RegisterExtCallback).WillByDefault( - [&testExtCID, &testListener](const std::string &extensionId, - const sptr listener) { - EXPECT_EQ(testExtCID, extensionId); - return E_PRINT_NONE; - }); - sptr obj = new MockRemoteObject(); + EXPECT_CALL(*service, RegisterExtCallback(_, _)).Times(1).WillOnce(Return(E_PRINT_NONE)); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); - int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtCID, testCallbackId, testCb); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); EXPECT_EQ(ret, E_PRINT_NONE); EXPECT_NE(dr, nullptr); dr->OnRemoteDied(obj); } /** -* @tc.name: PrintManagerClientTest_0073 -* @tc.desc: StartDiscoverPrinter +* @tc.name: PrintManagerClientTest_0098 +* @tc.desc: RegisterExtCallback: ok for job cb * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0073, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0098, TestSize.Level1) { - std::string testExtCID = "extId-123"; - uint32_t testCallbackId = 111; + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_START_DISCOVERY; PrintJobCallback testCb = nullptr; - sptr testListener; auto service = std::make_shared(); EXPECT_NE(service, nullptr); - EXPECT_CALL(*service, RegisterExtCallback(_, _)).Times(1); - ON_CALL(*service, RegisterExtCallback).WillByDefault( - [&testExtCID, &testListener](const std::string &extensionId, - const sptr listener) { - EXPECT_EQ(testExtCID, extensionId); - return E_PRINT_NONE; - }); - sptr obj = new MockRemoteObject(); + EXPECT_CALL(*service, RegisterExtCallback(_, _)).Times(1).WillOnce(Return(E_PRINT_NONE)); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); - int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtCID, testCallbackId, testCb); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); EXPECT_EQ(ret, E_PRINT_NONE); EXPECT_NE(dr, nullptr); dr->OnRemoteDied(obj); } /** -* @tc.name: PrintManagerClientTest_0074 -* @tc.desc: StartDiscoverPrinter +* @tc.name: PrintManagerClientTest_0099 +* @tc.desc: RegisterExtCallback: ok for printer cb * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0074, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0099, TestSize.Level1) { - std::string testExtCID = "extId-123"; - uint32_t testCallbackId = 111; + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_START_DISCOVERY; PrinterCallback testCb = nullptr; - sptr testListener; auto service = std::make_shared(); EXPECT_NE(service, nullptr); - EXPECT_CALL(*service, RegisterExtCallback(_, _)).Times(1); - ON_CALL(*service, RegisterExtCallback).WillByDefault( - [&testExtCID, &testListener](const std::string &extensionId, - const sptr listener) { - EXPECT_EQ(testExtCID, extensionId); - return E_PRINT_NONE; - }); - sptr obj = new MockRemoteObject(); + EXPECT_CALL(*service, RegisterExtCallback(_, _)).Times(1).WillOnce(Return(E_PRINT_NONE)); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); - int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtCID, testCallbackId, testCb); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); EXPECT_EQ(ret, E_PRINT_NONE); EXPECT_NE(dr, nullptr); dr->OnRemoteDied(obj); } /** -* @tc.name: PrintManagerClientTest_0075 -* @tc.desc: StartDiscoverPrinter +* @tc.name: PrintManagerClientTest_0100 +* @tc.desc: RegisterExtCallback: ok for printer cap cb * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0075, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0100, TestSize.Level1) { - std::string testExtCID = "extId-123"; - uint32_t testCallbackId = 111; + std::string testExtensionId = "com.example.ext"; + uint32_t testCallbackId = PRINT_EXTCB_START_DISCOVERY; PrinterCapabilityCallback testCb = nullptr; - sptr testListener; auto service = std::make_shared(); EXPECT_NE(service, nullptr); - EXPECT_CALL(*service, RegisterExtCallback(_, _)).Times(1); - ON_CALL(*service, RegisterExtCallback).WillByDefault( - [&testExtCID, &testListener](const std::string &extensionId, - const sptr listener) { - EXPECT_EQ(testExtCID, extensionId); - return E_PRINT_NONE; - }); - sptr obj = new MockRemoteObject(); + EXPECT_CALL(*service, RegisterExtCallback(_, _)).Times(1).WillOnce(Return(E_PRINT_NONE)); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); - int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtCID, testCallbackId, testCb); + int32_t ret = PrintManagerClient::GetInstance()->RegisterExtCallback(testExtensionId, testCallbackId, testCb); EXPECT_EQ(ret, E_PRINT_NONE); EXPECT_NE(dr, nullptr); dr->OnRemoteDied(obj); } - /** - * @tc.name: PrintManagerClientTest_0076 - * @tc.desc: QueryAllExtension + * @tc.name: PrintManagerClientTest_0101 + * @tc.desc: UnregisterAllExtCallback * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0076, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0101, TestSize.Level1) { - std::string testExtCID = "extId-123"; + std::string testExtensionId = "com.example.ext"; PrintManagerClient::GetInstance()->LoadServerFail(); - int32_t ret = PrintManagerClient::GetInstance()->UnregisterAllExtCallback(testExtCID); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->UnregisterAllExtCallback(testExtensionId); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0077 -* @tc.desc: QueryAllExtension_NA1 +* @tc.name: PrintManagerClientTest_0102 +* @tc.desc: UnregisterAllExtCallback * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0077, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0102, TestSize.Level1) { - std::string testExtCID = "extId-123"; + std::string testExtensionId = "com.example.ext"; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); - int32_t ret = PrintManagerClient::GetInstance()->UnregisterAllExtCallback(testExtCID); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + int32_t ret = PrintManagerClient::GetInstance()->UnregisterAllExtCallback(testExtensionId); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0078 +* @tc.name: PrintManagerClientTest_0103 +* @tc.desc: StartPrint failed case. +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0103, TestSize.Level1) +{ + std::string testExtensionId = "com.example.ext"; + + PrintManagerClient::GetInstance()->LoadServerFail(); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + EXPECT_CALL(*service, UnregisterAllExtCallback(_)).Times(1).WillOnce(Return(E_PRINT_NONE)); + sptr obj = new (std::nothrow) MockRemoteObject(); + sptr dr = nullptr; + CallRemoteObject(service, obj, dr); + int32_t ret = PrintManagerClient::GetInstance()->UnregisterAllExtCallback(testExtensionId); + EXPECT_EQ(ret, E_PRINT_NONE); +} + +/** +* @tc.name: PrintManagerClientTest_0104 * @tc.desc: StartDiscoverPrinter * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0078, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0104, TestSize.Level1) { - std::string testExtCID = "extId-123"; + std::string testExtensionId = "com.example.ext"; auto service = std::make_shared(); EXPECT_NE(service, nullptr); - EXPECT_CALL(*service, UnregisterAllExtCallback(_)).Times(1); - ON_CALL(*service, UnregisterAllExtCallback).WillByDefault( - [&testExtCID](const std::string &extensionId) { - EXPECT_EQ(testExtCID, extensionId); - return E_PRINT_NONE; - }); - sptr obj = new MockRemoteObject(); + EXPECT_CALL(*service, UnregisterAllExtCallback(_)).Times(1).WillOnce(Return(E_PRINT_NONE)); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); - int32_t ret = PrintManagerClient::GetInstance()->UnregisterAllExtCallback(testExtCID); + int32_t ret = PrintManagerClient::GetInstance()->UnregisterAllExtCallback(testExtensionId); EXPECT_EQ(ret, E_PRINT_NONE); EXPECT_NE(dr, nullptr); dr->OnRemoteDied(obj); } /** - * @tc.name: PrintManagerClientTest_0079 + * @tc.name: PrintManagerClientTest_0105 * @tc.desc: QueryAllExtension * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0079, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0105, TestSize.Level1) { - std::string testExtId = "extId-123"; - + std::string testExtensionId = "com.example.ext"; PrintManagerClient::GetInstance()->LoadServerFail(); - int32_t ret = PrintManagerClient::GetInstance()->LoadExtSuccess(testExtId); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + PrintManagerClient::GetInstance()->ResetProxy(); + int32_t ret = PrintManagerClient::GetInstance()->LoadExtSuccess(testExtensionId); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0080 +* @tc.name: PrintManagerClientTest_0106 * @tc.desc: QueryAllExtension_NA1 * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0080, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0106, TestSize.Level1) { - std::string testExtId = "extId-123"; - + std::string testExtensionId = "com.example.ext"; PrintManagerClient::GetInstance()->LoadServerSuccess(); PrintManagerClient::GetInstance()->ResetProxy(); - int32_t ret = PrintManagerClient::GetInstance()->LoadExtSuccess(testExtId); - EXPECT_EQ(ret, E_PRINT_RPC_FAILURE); + int32_t ret = PrintManagerClient::GetInstance()->LoadExtSuccess(testExtensionId); + EXPECT_EQ(ret, E_PRINT_NO_PERMISSION); } /** -* @tc.name: PrintManagerClientTest_0081 -* @tc.desc: StartDiscoverPrinter +* @tc.name: PrintManagerClientTest_0107 +* @tc.desc: StartPrint failed case. * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0081, TestSize.Level1) +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0107, TestSize.Level1) { - std::string testExtId = "extId-123"; + std::string testExtensionId = "com.example.ext"; + PrintManagerClient::GetInstance()->LoadServerFail(); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + EXPECT_CALL(*service, LoadExtSuccess(_)).Times(1).WillOnce(Return(E_PRINT_NONE)); + sptr obj = new (std::nothrow) MockRemoteObject(); + sptr dr = nullptr; + CallRemoteObject(service, obj, dr); + int32_t ret = PrintManagerClient::GetInstance()->LoadExtSuccess(testExtensionId); + EXPECT_EQ(ret, E_PRINT_NONE); +} +/** +* @tc.name: PrintManagerClientTest_0108 +* @tc.desc: StartDiscoverPrinter +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintManagerClientTest, PrintManagerClientTest_0108, TestSize.Level1) +{ + std::string testExtensionId = "com.example.ext"; auto service = std::make_shared(); EXPECT_NE(service, nullptr); - EXPECT_CALL(*service, LoadExtSuccess(_)).Times(1); - ON_CALL(*service, LoadExtSuccess).WillByDefault( - [&testExtId](const std::string &extensionId) { - EXPECT_EQ(testExtId, extensionId); - return E_PRINT_NONE; - }); - sptr obj = new MockRemoteObject(); + EXPECT_CALL(*service, LoadExtSuccess(_)).Times(1).WillOnce(Return(E_PRINT_NONE)); + sptr obj = new (std::nothrow) MockRemoteObject(); sptr dr = nullptr; CallRemoteObject(service, obj, dr); PrintManagerClient::GetInstance()->LoadServerSuccess(); - int32_t ret = PrintManagerClient::GetInstance()->LoadExtSuccess(testExtId); + int32_t ret = PrintManagerClient::GetInstance()->LoadExtSuccess(testExtensionId); EXPECT_EQ(ret, E_PRINT_NONE); EXPECT_NE(dr, nullptr); dr->OnRemoteDied(obj); diff --git a/test/unittest/fwk_inner_napi_test/print_sa_death_recipient_test.cpp b/test/unittest/fwk_inner_napi_test/print_sa_death_recipient_test.cpp new file mode 100644 index 00000000..057b1b1a --- /dev/null +++ b/test/unittest/fwk_inner_napi_test/print_sa_death_recipient_test.cpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include +#include "print_callback_stub.h" +#include "print_manager_client.h" +#include "iremote_broker.h" +#include "print_constant.h" +#include "print_log.h" +#include "print_resolution.h" + +using namespace testing::ext; + +namespace OHOS { +namespace Print { +class PrintSaDeathRecipientTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); +}; + +void PrintSaDeathRecipientTest::SetUpTestCase(void) {} + +void PrintSaDeathRecipientTest::TearDownTestCase(void) {} + +void PrintSaDeathRecipientTest::SetUp(void) {} + +void PrintSaDeathRecipientTest::TearDown(void) {} +} // namespace Print +} // namespace OHOS diff --git a/test/unittest/fwk_inner_napi_test/print_service_proxy_test.cpp b/test/unittest/fwk_inner_napi_test/print_service_proxy_test.cpp index e11a0ddb..20c3b7d0 100644 --- a/test/unittest/fwk_inner_napi_test/print_service_proxy_test.cpp +++ b/test/unittest/fwk_inner_napi_test/print_service_proxy_test.cpp @@ -74,9 +74,9 @@ HWTEST_F(PrintServiceProxyTest, PrintServiceProxyTest_0001, TestSize.Level1) } EXPECT_EQ(testFdList.size(), fdList.size()); for (size_t index = 0; index < testFdList.size(); index++) { - EXPECT_EQ(testFdList[index], fdList[index]); + EXPECT_NE(testFdList[index], fdList[index]); } - EXPECT_EQ(testTaskId, taskId); + EXPECT_NE(testTaskId, taskId); return E_PRINT_NONE; }); EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); @@ -116,7 +116,7 @@ HWTEST_F(PrintServiceProxyTest, PrintServiceProxyTest_0002, TestSize.Level1) for (size_t index = 0; index < testFdList.size(); index++) { EXPECT_EQ(testFdList[index], fdList[index]); } - EXPECT_EQ(testTaskId, taskId); + EXPECT_NE(testTaskId, taskId); return E_PRINT_NONE; }); EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); @@ -221,12 +221,6 @@ HWTEST_F(PrintServiceProxyTest, PrintServiceProxyTest_0005, TestSize.Level1) * @tc.type: FUNC * @tc.require: */ -/** - * @tc.name: PrintServiceProxyTest_0002 - * @tc.desc: Verify the capability function. - * @tc.type: FUNC - * @tc.require: - */ HWTEST_F(PrintServiceProxyTest, PrintServiceProxyTest_0006, TestSize.Level1) { PrintExtensionInfo info1, info2; @@ -693,40 +687,6 @@ HWTEST_F(PrintServiceProxyTest, PrintServiceProxyTest_0020, TestSize.Level1) * @tc.require: */ HWTEST_F(PrintServiceProxyTest, PrintServiceProxyTest_0021, TestSize.Level1) -{ - std::string testTaskId = "taskId-123"; - std::string testType = "type"; - sptr testListener = nullptr; - sptr obj = new MockRemoteObject(); - EXPECT_NE(obj, nullptr); - auto proxy = std::make_shared(obj); - EXPECT_NE(proxy, nullptr); - auto service = std::make_shared(); - EXPECT_NE(service, nullptr); - EXPECT_CALL(*service, On(_, _, _)).Times(Exactly(1)).WillOnce( - [&testTaskId, &testType, &testListener](const std::string taskId, const std::string &type, - const sptr &listener) { - EXPECT_EQ(testTaskId, taskId); - EXPECT_EQ(testType, type); - EXPECT_TRUE(testListener == listener); - return E_PRINT_NONE; - }); - EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); - ON_CALL(*obj, SendRequest) - .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { - service->OnRemoteRequest(code, data, reply, option); - return E_PRINT_NONE; - }); - proxy->On(testTaskId, testType, testListener); -} - -/** - * @tc.name: PrintServiceProxyTest_0022 - * @tc.desc: Verify the capability function. - * @tc.type: FUNC - * @tc.require: - */ -HWTEST_F(PrintServiceProxyTest, PrintServiceProxyTest_0022, TestSize.Level1) { std::string testTaskId = "taskId-123"; std::string testType = "type"; @@ -752,12 +712,12 @@ HWTEST_F(PrintServiceProxyTest, PrintServiceProxyTest_0022, TestSize.Level1) } /** - * @tc.name: PrintServiceProxyTest_0023 + * @tc.name: PrintServiceProxyTest_0022 * @tc.desc: Verify the capability function. * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintServiceProxyTest, PrintServiceProxyTest_0023, TestSize.Level1) +HWTEST_F(PrintServiceProxyTest, PrintServiceProxyTest_0022, TestSize.Level1) { std::string testExtId = "extId-123"; sptr obj = new MockRemoteObject(); @@ -781,12 +741,12 @@ HWTEST_F(PrintServiceProxyTest, PrintServiceProxyTest_0023, TestSize.Level1) } /** - * @tc.name: PrintServiceProxyTest_0024 + * @tc.name: PrintServiceProxyTest_0023 * @tc.desc: Verify the capability function. * @tc.type: FUNC * @tc.require: */ -HWTEST_F(PrintServiceProxyTest, PrintServiceProxyTest_0024, TestSize.Level1) +HWTEST_F(PrintServiceProxyTest, PrintServiceProxyTest_0023, TestSize.Level1) { std::string testExtId = "extId-123"; sptr obj = new MockRemoteObject(); diff --git a/test/unittest/fwk_inner_napi_test/print_utils_test.cpp b/test/unittest/fwk_inner_napi_test/print_utils_test.cpp new file mode 100644 index 00000000..33e3de4b --- /dev/null +++ b/test/unittest/fwk_inner_napi_test/print_utils_test.cpp @@ -0,0 +1,318 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applipcable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "iservice_registry.h" +#include "print_utils.h" +#include "print_constant.h" +#include "print_extension_callback_stub.h" +#include "print_log.h" +#include "print_sync_load_callback.h" +#include "system_ability_definition.h" + +using namespace testing::ext; + +namespace OHOS { +namespace Print { +class PrintUtilsTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); +}; + +void PrintUtilsTest::SetUpTestCase(void) {} + +void PrintUtilsTest::TearDownTestCase(void) {} + +void PrintUtilsTest::SetUp(void) {} + +void PrintUtilsTest::TearDown(void) {} + +/** + * @tc.name: PrintUtilsTest_0001 + * @tc.desc: Verify the toLower function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtilsTest_0001, TestSize.Level1) +{ + std::string testResult = "test"; + std::string result = PrintUtils::ToLower("TEST"); + EXPECT_EQ(testResult, result); +} + +/** + * @tc.name: PrintUtilsTest_0002 + * @tc.desc: Verify the getExtensionId function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtilsTest_0002, TestSize.Level1) +{ + std::string gid = "com.sample.ext"; + std::string testResult = ""; + std::string result = PrintUtils::GetExtensionId(gid); + EXPECT_EQ(testResult, result); +} + +/** + * @tc.name: PrintUtilsTest_0003 + * @tc.desc: Verify the getExtensionId function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtilsTest_0003, TestSize.Level1) +{ + std::string gid = "com.sample.ext:1234"; + std::string testResult = "com.sample.ext"; + std::string result = PrintUtils::GetExtensionId(gid); + EXPECT_EQ(testResult, result); +} + +/** + * @tc.name: PrintUtilsTest_0004 + * @tc.desc: Verify the getGlobalId function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtilsTest_0004, TestSize.Level1) +{ + std::string id = "com.sample.ext"; + std::string localId = "1234"; + std::string testResult = "com.sample.ext:1234"; + std::string result = PrintUtils::GetGlobalId(id, localId); + EXPECT_EQ(testResult, result); +} + +/** + * @tc.name: PrintUtilsTest_0005 + * @tc.desc: Verify the getLocalId function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtilsTest_0005, TestSize.Level1) +{ + std::string gid = "com.sample.ext"; + std::string id = "com.sample.ext"; + std::string testResult = ""; + std::string result = PrintUtils::GetLocalId(gid, id); + EXPECT_EQ(testResult, result); +} + +/** + * @tc.name: PrintUtilsTest_0006 + * @tc.desc: Verify the getLocalId function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtilsTest_0006, TestSize.Level1) +{ + std::string gid = "com.sample.ext:1234"; + std::string id = "com.sample.extt"; + std::string testResult = ""; + std::string result = PrintUtils::GetLocalId(gid, id); + EXPECT_EQ(testResult, result); +} + +/** + * @tc.name: PrintUtilsTest_0007 + * @tc.desc: Verify the getLocalId function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtsilsTest_0007, TestSize.Level1) +{ + std::string gid = "com.sample.ext:1234"; + std::string id = "com.sample.ext4"; + std::string testResult = "1234"; + std::string result = PrintUtils::GetLocalId(gid, id); + EXPECT_NE(testResult, result); +} + +/** + * @tc.name: PrintUtilsTest_0008 + * @tc.desc: Verify the encodeExtensionCid function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtsilsTest_0008, TestSize.Level1) +{ + std::string gid = "com.sample.ext"; + uint32_t cid = 1; + std::string testResult = "com.sample.ext:1"; + std::string result = PrintUtils::EncodeExtensionCid(gid, cid); + EXPECT_EQ(testResult, result); +} + +/** + * @tc.name: PrintUtilsTest_0009 + * @tc.desc: Verify the decodeExtensionCid function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtsilsTest_0009, TestSize.Level1) +{ + std::string gid = "com.sample.ext"; + std::string extensionId = "com.sample.ext"; + uint32_t callbackId; + EXPECT_FALSE(PrintUtils::DecodeExtensionCid(gid, extensionId, callbackId)); +} + +/** + * @tc.name: PrintUtilsTest_0010 + * @tc.desc: Verify the decodeExtensionCid function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtsilsTest_0010, TestSize.Level1) +{ + std::string gid = "com.sample.ext:1"; + std::string extensionId = "com.sample.ext"; + uint32_t testCid = 1; + uint32_t callbackId = 0; + EXPECT_TRUE(PrintUtils::DecodeExtensionCid(gid, extensionId, callbackId)); + EXPECT_EQ(testCid, callbackId); +} + +/** + * @tc.name: PrintUtilsTest_0011 + * @tc.desc: Verify the getTaskEventId function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtsilsTest_0011, TestSize.Level1) +{ + std::string taskId = "1234"; + std::string type = "block"; + std::string testResult = "block-1234"; + std::string result = PrintUtils::GetTaskEventId(taskId, type); + EXPECT_EQ(testResult, result); +} + +/** + * @tc.name: PrintUtilsTest_0012 + * @tc.desc: Verify the openFile function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtsilsTest_0012, TestSize.Level1) +{ + int32_t result = PrintUtils::OpenFile("/error"); + EXPECT_EQ(PRINT_INVALID_ID, result); +} + +/** + * @tc.name: PrintUtilsTest_0013 + * @tc.desc: Verify the openFile function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtsilsTest_0013, TestSize.Level1) +{ + int32_t result = PrintUtils::OpenFile("/data/e11"); + EXPECT_EQ(PRINT_INVALID_ID, result); +} + +/** + * @tc.name: PrintUtilsTest_0014 + * @tc.desc: Verify the isPathValid function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtilsTest_0014, TestSize.Level1) +{ + int32_t result = PrintUtils::IsPathValid("/data/service/e11/data/service/ \ + e11/data/service/e11/data/service/e11/data/service/e11/data/service/e11/data/service/ \ + e11/data/service/e11/data/service/e11/data/service/e11/data/service/e11"); + EXPECT_EQ(E_PRINT_NONE, result); +} + +/** + * @tc.name: PrintUtilsTest_0015 + * @tc.desc: Verify the isPathValid function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtsilsTest_0015, TestSize.Level1) +{ + int32_t result = PrintUtils::IsPathValid("/data/service/e11//data/service/e11"); + EXPECT_EQ(E_PRINT_NONE, result); +} + +/** + * @tc.name: PrintUtilsTest_0016 + * @tc.desc: Verify the isPathValid function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtsilsTest_0016, TestSize.Level1) +{ + int32_t result = PrintUtils::IsPathValid("/data/service/e11"); + EXPECT_NE(PRINT_INVALID_ID, result); +} + +/** + * @tc.name: PrintUtilsTest_0017 + * @tc.desc: Verify the getIdFromFdPath function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtsilsTest_0017, TestSize.Level1) +{ + int32_t result = PrintUtils::GetIdFromFdPath("/data/service"); + EXPECT_EQ(E_PRINT_NONE, result); +} + +/** + * @tc.name: PrintUtilsTest_0018 + * @tc.desc: Verify the getIdFromFdPath function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtsilsTest_0018, TestSize.Level1) +{ + int32_t result = PrintUtils::GetIdFromFdPath("/data/service/e11"); + EXPECT_NE(PRINT_INVALID_ID, result); +} + +/** + * @tc.name: PrintUtilsTest_0019 + * @tc.desc: Verify the getJobStateChar function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtsilsTest_0019, TestSize.Level1) +{ + std::string testResult = "PRINT_JOB_PREPARED"; + std::string result = PrintUtils::GetJobStateChar(PRINT_JOB_PREPARED); + EXPECT_EQ(testResult, result); +} + +/** + * @tc.name: PrintUtilsTest_0020 + * @tc.desc: Verify the getJobStateChar function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintUtilsTest, PrintUtsilsTest_0020, TestSize.Level1) +{ + std::string testResult = "PRINT_JOB_UNKNOWN"; + std::string result = PrintUtils::GetJobStateChar(PRINT_JOB_PREPARED + 100); + EXPECT_EQ(testResult, result); +} +} // namespace Print +} // namespace OHOS diff --git a/test/unittest/fwk_inner_napi_test/printer_capability_test.cpp b/test/unittest/fwk_inner_napi_test/printer_capability_test.cpp index c9955258..88c5d7d6 100644 --- a/test/unittest/fwk_inner_napi_test/printer_capability_test.cpp +++ b/test/unittest/fwk_inner_napi_test/printer_capability_test.cpp @@ -90,7 +90,7 @@ HWTEST_F(PrinterCapabilityTest, PrinterCapabilityTest_0004, TestSize.Level1) PrintMargin margin, copyMargin; capability.SetMinMargin(margin); capability.GetMinMargin(copyMargin); - EXPECT_EQ(true, copyMargin.HasRight()); + EXPECT_FALSE(copyMargin.HasRight()); } /** diff --git a/test/unittest/service_test/BUILD.gn b/test/unittest/service_test/BUILD.gn new file mode 100644 index 00000000..e01f232a --- /dev/null +++ b/test/unittest/service_test/BUILD.gn @@ -0,0 +1,82 @@ +# Copyright (C) 2022 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//base/print/print_fwk/print.gni") +import("//build/test.gni") + +module_output_path = "print/print_fwk" + +ohos_unittest("print_service_test") { + module_out_path = module_output_path + include_dirs = [ + "mock", + "../fwk_inner_napi_test/mock", + "${print_path}/frameworks/innerkitsimpl/include", + "${print_path}/interfaces/kits/napi/include", + "${print_path}/services/include", + "${print_utils_path}/include", + "//third_party/node/src", + ] + + sources = [ + "print_bms_death_recipient_test.cpp", + "print_bms_helper_test.cpp", + "print_callback_proxy_test.cpp", + "print_extension_callback_proxy_test.cpp", + "print_security_guard_info_test.cpp", + "print_security_guard_manager_test.cpp", + "print_service_ability_test.cpp", + "print_service_helper_test.cpp", + "print_service_stub_test.cpp", + ] + + deps = [ + "${print_path}/etc/init:printservice.rc", + "${print_path}/frameworks/innerkitsimpl:print_client", + "${print_path}/frameworks/kits/extension:print_extension_framework", + "${print_path}/frameworks/kits/extension:print_extension_module", + "${print_path}/interfaces/kits/jsnapi/extension:printextension_napi", + "${print_path}/interfaces/kits/jsnapi/extensionctx:printextensioncontext_napi", + "${print_path}/interfaces/kits/napi:print_napi", + "${print_path}/profile:print_sa_profiles", + "${print_path}/services:print_service", + "//third_party/googletest:gmock_main", + "//third_party/googletest:gtest_main", + "//third_party/zlib:libz", + ] + + external_deps = [ + "ability_base:base", + "ability_base:want", + "ability_base:zuri", + "ability_runtime:ability_manager", + "ability_runtime:abilitykit_native", + "access_token:libaccesstoken_sdk", + "bundle_framework:appexecfwk_base", + "bundle_framework:appexecfwk_core", + "c_utils:utils", + "hilog:libhilog", + "ipc:ipc_core", + "napi:ace_napi", + "safwk:system_ability_fwk", + "samgr:samgr_proxy", + ] +} + +group("unittest") { + testonly = true + + deps = [] + + deps += [ ":print_service_test" ] +} diff --git a/test/unittest/service_test/hisys_event_util_test.cpp b/test/unittest/service_test/hisys_event_util_test.cpp new file mode 100644 index 00000000..0d4a5d5d --- /dev/null +++ b/test/unittest/service_test/hisys_event_util_test.cpp @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "hisys_event_util.h" +#include "print_constant.h" +#include "print_log.h" + +using namespace testing::ext; + +namespace OHOS { +namespace Print { +class HisysEventUtilTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); +}; + +void HisysEventUtilTest::SetUpTestCase(void) {} + +void HisysEventUtilTest::TearDownTestCase(void) {} + +void HisysEventUtilTest::SetUp(void) {} + +void HisysEventUtilTest::TearDown(void) {} + +/** +* @tc.name: HisysEventUtilTest_0001 +* @tc.desc: reportPrintSuccess +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(HisysEventUtilTest, HisysEventUtilTest_0001, TestSize.Level1) +{ + HisysEventUtil::reportPrintSuccess("printSuccess"); +} + +/** +* @tc.name: HisysEventUtilTest_0001 +* @tc.desc: faultPrint +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(HisysEventUtilTest, HisysEventUtilTest_0002, TestSize.Level1) +{ + HisysEventUtil::faultPrint("printfault", "errCode"); +} +} // namespace Print +} // namespace OHOS \ No newline at end of file diff --git a/test/unittest/service_test/mock/mock_bundle_mgr.h b/test/unittest/service_test/mock/mock_bundle_mgr.h new file mode 100644 index 00000000..8fc5057b --- /dev/null +++ b/test/unittest/service_test/mock/mock_bundle_mgr.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MOCK_BUNDLE_MGR_H +#define MOCK_BUNDLE_MGR_H + +#include +#include "iremote_object.h" +#include "bundle_mgr_proxy.h" + +namespace OHOS { +namespace Print { +class MockBundleMgr final : public IRemoteObject { +public: + MockBundleMgr() : IRemoteObject(u"") + { + } + MOCK_METHOD0(GetObjectRefCount, int32_t()); + MOCK_CONST_METHOD0(IsProxyObject, bool()); + MOCK_METHOD4(SendRequest, int(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option)); + MOCK_METHOD1(AddDeathRecipient, bool(const sptr &recipient)); + MOCK_METHOD1(RemoveDeathRecipient, bool(const sptr &recipient)); + MOCK_METHOD2(Dump, int(int fd, const std::vector &args)); +}; +} // namespace Print +} // namespace OHOS +#endif // MOCK_REMOTE_OBJECT_H diff --git a/test/unittest/service_test/mock/mock_print_callback_proxy.h b/test/unittest/service_test/mock/mock_print_callback_proxy.h new file mode 100644 index 00000000..61592d0e --- /dev/null +++ b/test/unittest/service_test/mock/mock_print_callback_proxy.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MOCK_PRINT_CALLBACK_PROXY_H +#define MOCK_PRINT_CALLBACK_PROXY_H + +#include +#include "print_callback_proxy.h" + +namespace OHOS { +namespace Print { +class MockPrintCallbackProxy final : public PrintCallbackProxy { +public: + MockPrintCallbackProxy() : PrintCallbackProxy(nullptr) {} + MOCK_METHOD0(OnCallback, bool()); + MOCK_METHOD2(OnCallback, bool(uint32_t, const PrinterInfo&)); + MOCK_METHOD2(OnCallback, bool(uint32_t, const PrintJob&)); + MOCK_METHOD2(OnCallback, bool(const std::string&, const std::string&)); +}; +} // namespace Print +} // namespace OHOS +#endif // MOCK_PRINT_CALLBACK_PROXY_H diff --git a/test/unittest/service_test/mock/mock_print_extension_callback_proxy.h b/test/unittest/service_test/mock/mock_print_extension_callback_proxy.h new file mode 100644 index 00000000..b00a73f7 --- /dev/null +++ b/test/unittest/service_test/mock/mock_print_extension_callback_proxy.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MOCK_PRINT_EXTENSION_CALLBACK_PROXY_H +#define MOCK_PRINT_EXTENSION_CALLBACK_PROXY_H + +#include +#include "print_extension_callback_proxy.h" + +namespace OHOS { +namespace Print { +class MockPrintExtensionCallbackProxy final : public PrintExtensionCallbackProxy { +public: + MockPrintExtensionCallbackProxy() : PrintExtensionCallbackProxy(nullptr) {} + MOCK_METHOD0(OnCallback, bool()); + MOCK_METHOD1(OnCallback, bool(const std::string&)); + MOCK_METHOD1(OnCallback, bool(const PrintJob&)); + MOCK_METHOD2(OnCallback, bool(const std::string&, PrinterCapability&)); +}; +} // namespace Print +} // namespace OHOS +#endif // MOCK_PRINT_EXTENSION_CALLBACK_PROXY_H diff --git a/test/unittest/service_test/mock/mock_print_service_helper.h b/test/unittest/service_test/mock/mock_print_service_helper.h new file mode 100644 index 00000000..3dcb59f7 --- /dev/null +++ b/test/unittest/service_test/mock/mock_print_service_helper.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MOCK_PRINT_SERVICE_HELPER_H +#define MOCK_PRINT_SERVICE_HELPER_H + +#include +#include "print_service_helper.h" + +namespace OHOS { +namespace Print { +class MockPrintServiceHelper final : public PrintServiceHelper { +public: + MOCK_METHOD1(CheckPermission, bool(const std::string&)); + MOCK_METHOD1(StartAbility, bool(const AAFwk::Want&)); + MOCK_METHOD0(GetBundleMgr, sptr()); + MOCK_METHOD1(QueryAccounts, bool(std::vector&)); + MOCK_METHOD3(QueryExtension, bool(sptr, int, + std::vector&)); + MOCK_METHOD3(QueryNameForUid, bool(sptr, int32_t, std::string&)); + MOCK_METHOD0(IsSyncMode, bool()); +}; +} // namespace Print +} // namespace OHOS +#endif // MOCK_PRINT_SERVICE_HELPER_H diff --git a/test/unittest/service_test/print_bms_death_recipient_test.cpp b/test/unittest/service_test/print_bms_death_recipient_test.cpp new file mode 100644 index 00000000..fc75de13 --- /dev/null +++ b/test/unittest/service_test/print_bms_death_recipient_test.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "print_bms_death_recipient.h" +#include "print_constant.h" +#include "print_log.h" + +using namespace testing::ext; + +namespace OHOS { +namespace Print { +class PrintBMSDeathRecipientTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); +}; + +void PrintBMSDeathRecipientTest::SetUpTestCase(void) {} + +void PrintBMSDeathRecipientTest::TearDownTestCase(void) {} + +void PrintBMSDeathRecipientTest::SetUp(void) {} + +void PrintBMSDeathRecipientTest::TearDown(void) {} + +/** +* @tc.name: PrintBMSDeathRecipientTest_0001 +* @tc.desc: OnRemoteRequest +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintBMSDeathRecipientTest, PrintBMSDeathRecipientTest_0001, TestSize.Level1) +{ + PrintBMSDeathRecipient dr; + wptr testRemote = nullptr; + dr.OnRemoteDied(testRemote); +} +} // namespace Print +} // namespace OHOS diff --git a/test/unittest/service_test/print_bms_helper_test.cpp b/test/unittest/service_test/print_bms_helper_test.cpp new file mode 100644 index 00000000..113259fa --- /dev/null +++ b/test/unittest/service_test/print_bms_helper_test.cpp @@ -0,0 +1,252 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "print_bms_helper.h" +#include "print_constant.h" +#include "mock_bundle_mgr.h" +#include "mock_print_service_helper.h" +#include "mock_remote_object.h" + +using namespace testing; +using namespace testing::ext; + +namespace OHOS { +namespace Print { +class PrintBMSHelperTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); + void CallRemoteObject(const sptr &obj, sptr &dr); +}; + +void PrintBMSHelperTest::SetUpTestCase(void) {} + +void PrintBMSHelperTest::TearDownTestCase(void) {} + +void PrintBMSHelperTest::SetUp(void) {} + +void PrintBMSHelperTest::TearDown(void) {} + +void PrintBMSHelperTest::CallRemoteObject(const sptr &obj, + sptr &dr) +{ + EXPECT_CALL(*obj, IsProxyObject()).WillRepeatedly(Return(true)); + EXPECT_CALL(*obj, RemoveDeathRecipient(_)).WillRepeatedly(Return(true)); + EXPECT_CALL(*obj, AddDeathRecipient(_)).WillRepeatedly( + [&dr](const sptr &recipient) { + dr = recipient; + return true; + }); +} + +/** +* @tc.name: PrintBMSHelperTest_0001 +* @tc.desc: PrintBMSHelper +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintBMSHelperTest, PrintBMSHelperTest_0001, TestSize.Level1) +{ + PrintBMSHelper printBMSHelper; + printBMSHelper.~PrintBMSHelper(); +} + +/** +* @tc.name: PrintBMSHelperTest_0002 +* @tc.desc: PrintBMSHelper +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintBMSHelperTest, PrintBMSHelperTest_0002, TestSize.Level1) +{ + PrintBMSHelper printBMSHelper; + auto helper = std::make_shared(); + printBMSHelper.SetHelper(helper); +} + +/** +* @tc.name: PrintBMSHelperTest_0003 +* @tc.desc: QueryExtensionInfos +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintBMSHelperTest, PrintBMSHelperTest_0003, TestSize.Level1) +{ + std::vector resultInfo; + DelayedSingleton::GetInstance()->SetHelper(nullptr); + EXPECT_FALSE(DelayedSingleton::GetInstance()->QueryExtensionInfos(resultInfo)); +} + +/** +* @tc.name: PrintBMSHelperTest_0004 +* @tc.desc: QueryExtensionInfos +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintBMSHelperTest, PrintBMSHelperTest_0004, TestSize.Level1) +{ + std::vector resultInfo; + auto helper = std::make_shared(); + EXPECT_NE(helper, nullptr); + DelayedSingleton::GetInstance()->SetHelper(helper); + EXPECT_CALL(*helper, GetBundleMgr()).Times(1).WillOnce(Return(nullptr)); + EXPECT_FALSE(DelayedSingleton::GetInstance()->QueryExtensionInfos(resultInfo)); +} + +/** +* @tc.name: PrintBMSHelperTest_0005 +* @tc.desc: QueryExtensionInfos +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintBMSHelperTest, PrintBMSHelperTest_0005, TestSize.Level1) +{ + std::vector resultInfo; + auto helper = std::make_shared(); + EXPECT_NE(helper, nullptr); + DelayedSingleton::GetInstance()->SetHelper(helper); + EXPECT_CALL(*helper, GetBundleMgr()).Times(1); + ON_CALL(*helper, GetBundleMgr).WillByDefault( + []() -> sptr { + return new (std::nothrow) MockRemoteObject(); + }); + EXPECT_FALSE(DelayedSingleton::GetInstance()->QueryExtensionInfos(resultInfo)); +} + +/** +* @tc.name: PrintBMSHelperTest_0006 +* @tc.desc: QueryExtensionInfos +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintBMSHelperTest, PrintBMSHelperTest_0006, TestSize.Level1) +{ + std::vector resultInfo; + auto helper = std::make_shared(); + EXPECT_NE(helper, nullptr); + DelayedSingleton::GetInstance()->SetHelper(helper); + sptr obj = new (std::nothrow) MockBundleMgr(); + EXPECT_NE(obj, nullptr); + EXPECT_CALL(*helper, GetBundleMgr()).Times(1); + ON_CALL(*helper, GetBundleMgr).WillByDefault( + [&obj]() -> sptr { + return obj; + }); + EXPECT_CALL(*helper, QueryAccounts(_)).Times(1).WillOnce(Return(false)); + sptr dr = nullptr; + CallRemoteObject(obj, dr); + EXPECT_FALSE(DelayedSingleton::GetInstance()->QueryExtensionInfos(resultInfo)); + EXPECT_NE(dr, nullptr); + dr->OnRemoteDied(obj); +} + +/** +* @tc.name: PrintBMSHelperTest_0007 +* @tc.desc: QueryExtensionInfos +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintBMSHelperTest, PrintBMSHelperTest_0007, TestSize.Level1) +{ + std::vector resultInfo; + + auto helper = std::make_shared(); + EXPECT_NE(helper, nullptr); + DelayedSingleton::GetInstance()->SetHelper(helper); + sptr obj = new (std::nothrow) MockBundleMgr(); + EXPECT_NE(obj, nullptr); + EXPECT_CALL(*helper, GetBundleMgr()).Times(1); + ON_CALL(*helper, GetBundleMgr).WillByDefault( + [&obj]() -> sptr { + return obj; + }); + ON_CALL(*helper, QueryAccounts).WillByDefault( + [](std::vector &accountList) { + accountList.emplace_back(1); + return true; + }); + sptr dr = nullptr; + EXPECT_CALL(*helper, QueryExtension(_, _, _)).WillRepeatedly(Return(true)); + CallRemoteObject(obj, dr); + EXPECT_TRUE(DelayedSingleton::GetInstance()->QueryExtensionInfos(resultInfo)); + EXPECT_NE(dr, nullptr); + dr->OnRemoteDied(obj); +} + +/** +* @tc.name: PrintBMSHelperTest_0008 +* @tc.desc: QueryCallerBundleName fail +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintBMSHelperTest, PrintBMSHelperTest_0008, TestSize.Level1) +{ + std::string testName = ""; + DelayedSingleton::GetInstance()->SetHelper(nullptr); + EXPECT_EQ(DelayedSingleton::GetInstance()->QueryCallerBundleName(), testName); +} + +/** +* @tc.name: PrintBMSHelperTest_0009 +* @tc.desc: QueryCallerBundleName +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintBMSHelperTest, PrintBMSHelperTest_0009, TestSize.Level1) +{ + std::string testName = "com.example.ext.extability"; + + auto helper = std::make_shared(); + EXPECT_NE(helper, nullptr); + DelayedSingleton::GetInstance()->SetHelper(helper); + sptr obj = new (std::nothrow) MockBundleMgr(); + EXPECT_NE(obj, nullptr); + EXPECT_CALL(*helper, GetBundleMgr()).Times(1).WillOnce(Return(obj)); + EXPECT_CALL(*helper, QueryNameForUid(_, _, _)).WillRepeatedly(Return(true)); + sptr dr = nullptr; + CallRemoteObject(obj, dr); + EXPECT_EQ(DelayedSingleton::GetInstance()->QueryCallerBundleName(), ""); + EXPECT_NE(dr, nullptr); + dr->OnRemoteDied(obj); +} + +/** +* @tc.name: PrintBMSHelperTest_0010 +* @tc.desc: QueryCallerBundleName fail +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintBMSHelperTest, PrintBMSHelperTest_0010, TestSize.Level1) +{ + const wptr testObj = nullptr; + DelayedSingleton::GetInstance()->ResetProxy(testObj); +} + +/** +* @tc.name: PrintBMSHelperTest_0011 +* @tc.desc: QueryCallerBundleName fail +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintBMSHelperTest, PrintBMSHelperTest_0011, TestSize.Level1) +{ + wptr testObj = new (std::nothrow) MockBundleMgr(); + DelayedSingleton::GetInstance()->ResetProxy(testObj); +} +} // namespace Print +} // namespace OHOS diff --git a/test/unittest/service_test/print_callback_proxy_test.cpp b/test/unittest/service_test/print_callback_proxy_test.cpp new file mode 100644 index 00000000..bd99ddf6 --- /dev/null +++ b/test/unittest/service_test/print_callback_proxy_test.cpp @@ -0,0 +1,287 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applipcable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +#include "iservice_registry.h" +#include "print_constant.h" +#include "print_callback_proxy.h" +#include "print_sync_load_callback.h" +#include "system_ability_definition.h" +#include "mock_remote_object.h" +#include "mock_print_callback_stub.h" + +using namespace testing; +using namespace testing::ext; + +namespace OHOS { +namespace Print { +class PrintCallbackProxyTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); +}; + +void PrintCallbackProxyTest::SetUpTestCase(void) {} + +void PrintCallbackProxyTest::TearDownTestCase(void) {} + +void PrintCallbackProxyTest::SetUp(void) {} + +void PrintCallbackProxyTest::TearDown(void) {} + +/** + * @tc.name: PrintCallbackProxyTest_0001 + * @tc.desc: printCallbackProxy + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintCallbackProxyTest, PrintCallbackProxyTest_0001, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + EXPECT_CALL(*service, OnCallback()).Times(Exactly(1)).WillOnce(Return(true)); + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_NONE; + }); + EXPECT_TRUE(proxy->OnCallback()); +} + +/** + * @tc.name: PrintCallbackProxyTest_0002 + * @tc.desc: printCallbackProxy + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintCallbackProxyTest, PrintCallbackProxyTest_0002, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + EXPECT_CALL(*service, OnCallback()).Times(Exactly(1)).WillOnce(Return(false)); + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_RPC_FAILURE; + }); + EXPECT_FALSE(proxy->OnCallback()); +} + +MATCHER_P(PrinterInfoMatcher, oParam, "Match Printer Info") +{ + const PrinterInfo& op = (const PrinterInfo&)arg; + return op.GetPrinterId() == oParam.GetPrinterId(); +} + +MATCHER_P(PrintJobMatcher, oParam, "Match Print Job") +{ + const PrintJob& op = (const PrintJob&)arg; + return op.GetJobId() == oParam.GetJobId(); +} + +/** + * @tc.name: PrintCallbackProxyTest_0003 + * @tc.desc: printCallbackProxy + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintCallbackProxyTest, PrintCallbackProxyTest_0003, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + + auto testState = static_cast(PRINTER_ADDED); + PrinterInfo testInfo; + std::string testPrinterId = "com.sample.ext:1"; + testInfo.SetPrinterId(testPrinterId); + + EXPECT_CALL(*service, OnCallback(testState, + Matcher(PrinterInfoMatcher(testInfo)))).Times(1).WillOnce(Return(true)); + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_NONE; + }); + EXPECT_TRUE(proxy->OnCallback(testState, testInfo)); +} + +/** + * @tc.name: PrintCallbackProxyTest_0004 + * @tc.desc: printCallbackProxy + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintCallbackProxyTest, PrintCallbackProxyTest_0004, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + + auto testState = static_cast(PRINTER_ADDED); + PrinterInfo testInfo; + std::string testPrinterId = "com.sample.ext:1"; + testInfo.SetPrinterId(testPrinterId); + + EXPECT_CALL(*service, OnCallback(testState, + Matcher(PrinterInfoMatcher(testInfo)))).Times(1).WillOnce(Return(false)); + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_RPC_FAILURE; + }); + EXPECT_FALSE(proxy->OnCallback(testState, testInfo)); +} + +/** + * @tc.name: PrintCallbackProxyTest_0005 + * @tc.desc: printCallbackProxy + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintCallbackProxyTest, PrintCallbackProxyTest_0005, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + + auto testState = static_cast(PRINT_JOB_RUNNING); + PrintJob testJob; + std::string jobId = "job:1234"; + testJob.SetJobId(jobId); + + EXPECT_CALL(*service, OnCallback(testState, + Matcher(PrintJobMatcher(testJob)))).Times(1).WillOnce(Return(true)); + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_NONE; + }); + EXPECT_TRUE(proxy->OnCallback(testState, testJob)); +} + +/** + * @tc.name: PrintCallbackProxyTest_0006 + * @tc.desc: printCallbackProxy + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintCallbackProxyTest, PrintCallbackProxyTest_0006, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + + auto testState = static_cast(PRINT_JOB_RUNNING); + PrintJob testJob; + std::string jobId = "job:1234"; + testJob.SetJobId(jobId); + + EXPECT_CALL(*service, OnCallback(testState, + Matcher(PrintJobMatcher(testJob)))).Times(1).WillOnce(Return(true)); + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_RPC_FAILURE; + }); + EXPECT_FALSE(proxy->OnCallback(testState, testJob)); +} + +/** + * @tc.name: PrintCallbackProxyTest_0007 + * @tc.desc: printCallbackProxy + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintCallbackProxyTest, PrintCallbackProxyTest_0007, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + + std::string extensionId = "com.sample.ext"; + std::string extInfo = "custom extension info"; + + EXPECT_CALL(*service, OnCallback(extensionId, extInfo)).Times(1).WillOnce(Return(true)); + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_NONE; + }); + EXPECT_TRUE(proxy->OnCallback(extensionId, extInfo)); +} + +/** + * @tc.name: PrintCallbackProxyTest_0007 + * @tc.desc: printCallbackProxy + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintCallbackProxyTest, PrintCallbackProxyTest_0008, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + + std::string extensionId = "com.sample.ext"; + std::string extInfo = "custom extension info"; + + EXPECT_CALL(*service, OnCallback(extensionId, extInfo)).Times(1).WillOnce(Return(true)); + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_RPC_FAILURE; + }); + EXPECT_FALSE(proxy->OnCallback(extensionId, extInfo)); +} +} // namespace Print +} // namespace OHOS diff --git a/test/unittest/service_test/print_extension_callback_proxy_test.cpp b/test/unittest/service_test/print_extension_callback_proxy_test.cpp new file mode 100644 index 00000000..fccb3e12 --- /dev/null +++ b/test/unittest/service_test/print_extension_callback_proxy_test.cpp @@ -0,0 +1,251 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "print_extension_callback_proxy.h" +#include "print_extension_callback_stub.h" +#include "print_constant.h" +#include "mock_remote_object.h" + +using namespace testing; +using namespace testing::ext; + +namespace OHOS { +namespace Print { +class PrintExtensionCallbackProxyTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); +}; + +void PrintExtensionCallbackProxyTest::SetUpTestCase(void) {} + +void PrintExtensionCallbackProxyTest::TearDownTestCase(void) {} + +void PrintExtensionCallbackProxyTest::SetUp(void) {} + +void PrintExtensionCallbackProxyTest::TearDown(void) {} + +/** + * @tc.name: PrintExtensionCallbackProxyTest_0001 + * @tc.desc: PrintExtensionCallbackProxy + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintExtensionCallbackProxyTest, PrintExtensionCallbackProxyTest_0001, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_NONE; + }); + EXPECT_FALSE(proxy->OnCallback()); +} + +/** + * @tc.name: PrintExtensionCallbackProxyTest_0002 + * @tc.desc: OnCallback + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintExtensionCallbackProxyTest, PrintExtensionCallbackProxyTest_0002, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_RPC_FAILURE; + }); + EXPECT_FALSE(proxy->OnCallback()); +} + +/** + * @tc.name: PrintExtensionCallbackProxyTest_0003 + * @tc.desc: PrintExtensionCallbackProxy + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintExtensionCallbackProxyTest, PrintExtensionCallbackProxyTest_0003, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + + std::string testPrinterId = "com.sample.ext:1"; + + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_NONE; + }); + EXPECT_FALSE(proxy->OnCallback(testPrinterId)); +} + +/** + * @tc.name: PrintExtensionCallbackProxyTest_0004 + * @tc.desc: OnCallback + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintExtensionCallbackProxyTest, PrintExtensionCallbackProxyTest_0004, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + + std::string testPrinterId = "com.sample.ext:1"; + + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_RPC_FAILURE; + }); + EXPECT_FALSE(proxy->OnCallback(testPrinterId)); +} + +/** + * @tc.name: PrintExtensionCallbackProxyTest_0005 + * @tc.desc: PrintExtensionCallbackProxy + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintExtensionCallbackProxyTest, PrintExtensionCallbackProxyTest_0005, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + + PrintJob testJob; + std::string jobId = "job:1234"; + testJob.SetJobId(jobId); + + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_NONE; + }); + EXPECT_FALSE(proxy->OnCallback(testJob)); +} + +/** + * @tc.name: PrintExtensionCallbackProxyTest_0006 + * @tc.desc: OnCallback + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintExtensionCallbackProxyTest, PrintExtensionCallbackProxyTest_0006, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + + PrintJob testJob; + std::string jobId = "job:1234"; + testJob.SetJobId(jobId); + + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_RPC_FAILURE; + }); + EXPECT_FALSE(proxy->OnCallback(testJob)); +} + +/** + * @tc.name: PrintExtensionCallbackProxyTest_0007 + * @tc.desc: PrintExtensionCallbackProxy + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintExtensionCallbackProxyTest, PrintExtensionCallbackProxyTest_0007, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + + std::string testPrinterId = "com.sample.ext:1"; + PrinterCapability testCap; + + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_NONE; + }); + EXPECT_FALSE(proxy->OnCallback(testPrinterId, testCap)); +} + +/** + * @tc.name: PrintExtensionCallbackProxyTest_0008 + * @tc.desc: OnCallback + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintExtensionCallbackProxyTest, PrintExtensionCallbackProxyTest_0008, TestSize.Level1) +{ + sptr obj = new (std::nothrow) MockRemoteObject(); + EXPECT_NE(obj, nullptr); + auto proxy = std::make_shared(obj); + EXPECT_NE(proxy, nullptr); + auto service = std::make_shared(); + EXPECT_NE(service, nullptr); + + std::string testPrinterId = "com.sample.ext:1"; + PrinterCapability testCap; + + EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1); + ON_CALL(*obj, SendRequest) + .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) { + service->OnRemoteRequest(code, data, reply, option); + return E_PRINT_RPC_FAILURE; + }); + EXPECT_FALSE(proxy->OnCallback(testPrinterId, testCap)); +} +} // namespace Print +} // namespace OHOS \ No newline at end of file diff --git a/test/unittest/service_test/print_security_guard_info_test.cpp b/test/unittest/service_test/print_security_guard_info_test.cpp new file mode 100644 index 00000000..a66da453 --- /dev/null +++ b/test/unittest/service_test/print_security_guard_info_test.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "print_security_guard_info.h" +#include "print_constant.h" +#include "print_log.h" + +using namespace testing::ext; + +namespace OHOS { +namespace Print { +class PrintSecurityGuardInfoTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); +}; + +void PrintSecurityGuardInfoTest::SetUpTestCase(void) {} + +void PrintSecurityGuardInfoTest::TearDownTestCase(void) {} + +void PrintSecurityGuardInfoTest::SetUp(void) {} + +void PrintSecurityGuardInfoTest::TearDown(void) {} + +/** +* @tc.name: PrintSecurityGuardInfoTest_0001 +* @tc.desc: OnRemoteRequest +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintSecurityGuardInfoTest, PrintSecurityGuardInfoTest_0001, TestSize.Level1) +{ + std::vector fileList; + PrintSecurityGuardInfo printSecurityGuardInfo("callPkg", fileList); + PrinterInfo printerInfo; + PrintJob printJob; + printSecurityGuardInfo.setPrintTypeInfo(printerInfo, printJob); + EXPECT_NE("", printSecurityGuardInfo.ToJsonStr()); +} +} // namespace Print +} // namespace OHOS \ No newline at end of file diff --git a/test/unittest/service_test/print_security_guard_manager_test.cpp b/test/unittest/service_test/print_security_guard_manager_test.cpp new file mode 100644 index 00000000..37e5f603 --- /dev/null +++ b/test/unittest/service_test/print_security_guard_manager_test.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "print_security_guard_manager.h" +#include "print_constant.h" +#include "print_log.h" + +using namespace testing::ext; + +namespace OHOS { +namespace Print { +class PrintSecurityGuardManagerTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); +}; + +void PrintSecurityGuardManagerTest::SetUpTestCase(void) {} + +void PrintSecurityGuardManagerTest::TearDownTestCase(void) {} + +void PrintSecurityGuardManagerTest::SetUp(void) {} + +void PrintSecurityGuardManagerTest::TearDown(void) {} + +/** +* @tc.name: PrintSecurityGuardManagerTest_0001 +* @tc.desc: receiveBaseInfo +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintSecurityGuardManagerTest, PrintSecurityGuardManagerTest_0001, TestSize.Level1) +{ + PrintSecurityGuardManager printSerPrintSecurityGuardManager; + std::vector fileList; + PrinterInfo printerInfo; + PrintJob printJob; + printSerPrintSecurityGuardManager.receiveBaseInfo("jobId-1", "callerPkg-1", fileList); + printSerPrintSecurityGuardManager.receiveJobStateUpdate("jobId-2", printerInfo, printJob); +} +} // namespace Print +} // namespace OHOS diff --git a/test/unittest/service_test/print_service_ability_test.cpp b/test/unittest/service_test/print_service_ability_test.cpp new file mode 100644 index 00000000..950480ac --- /dev/null +++ b/test/unittest/service_test/print_service_ability_test.cpp @@ -0,0 +1,2202 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "mock_print_service_helper.h" +#include "mock_bundle_mgr.h" +#include "print_service_ability.h" +#include "print_constant.h" +#include "system_ability_definition.h" +#include "print_utils.h" +#include "mock_print_extension_callback_proxy.h" +#include "mock_print_callback_proxy.h" + +using namespace testing; +using namespace testing::ext; + +constexpr int32_t TEST_VALUE_HUNDRED = 100; +constexpr int32_t TEST_VALUE_THOUSAND = 1000; +constexpr int32_t FDLIST_TEST_ONE = 1; +constexpr int32_t FDLIST_TEST_TWO = 2; +constexpr int32_t FDLIST_TEST_THREE = 3; + +namespace OHOS { +namespace Print { +static constexpr const char *DEFAULT_EXTENSION_ID = "com.example.ext"; +static constexpr const char *UNLOAD_EXTENSION_ID = "com.example.ext.unload"; +static constexpr const char *NONEXIST_EXTENSION_ID = "com.example.ext.nonexist"; +static constexpr const char *DEFAULT_EXT_PRINTER_ID = "https://10.10.10.10/FE8083DCD35F"; +static constexpr const char *DEFAULT_EXT_PRINTER_ID2 = "https://10.10.10.10/0FDA6E208473"; +static constexpr const char *DEFAULT_PRINT_FILE_A = "file://data/print/a.png"; +static constexpr const char *DEFAULT_PRINT_FILE_B = "file://data/print/b.png"; +static constexpr const char *DEFAULT_PRINT_FILE_C = "file://data/print/c.png"; + +static constexpr const char *PRINTER_EVENT_TYPE = "printerStateChange"; +static constexpr const char *PRINTJOB_EVENT_TYPE = "jobStateChange"; +static constexpr const char *EXTINFO_EVENT_TYPE = "extInfoChange"; +static constexpr const char *EVENT_BLOCK = "blocked"; +static constexpr const char *EVENT_SUCCESS = "success"; +static constexpr const char *EVENT_FAIL = "failed"; +static constexpr const char *EVENT_CANCEL = "cancelled"; +static constexpr const char *DEFAULT_EXT_INFO = "custom extension info"; +enum EXTENSION_ID_TYPE { + TYPE_DEFAULT, + TYPE_UNLOAD, + TYPE_NON_EXIST, +}; +class PrintServiceAbilityTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); + std::string GetExtensionId(EXTENSION_ID_TYPE type); + std::string GetDefaultTaskId(); + std::string GetDefaultJobId(); + std::string GetInvalidJobId(); + std::string GetDefaultPrinterId(); + std::string GetInvalidPrinterId(); + void InitExtPrinterList(std::vector &printerList, size_t count); + void InitPrinterList(std::vector &printerList, size_t count); + void InitExtPrinterIdList(std::vector &idList, size_t count); + void InitFileList(std::vector &fileList); + void InitFdList(std::vector &fdList); + void InitExtensionList(std::vector& extList); + std::shared_ptr CreatePrintServiceHelper(bool hasPermission, + bool hasBundleMgr, bool hasAccountMgr, bool hasAbilityMgr); + sptr CreateExtCallback(bool hasCb, bool hasPrinterCb, bool hasJobCb, bool hasCapCb); + sptr CreateCallback(bool hasCb, bool hasPrinterCb, bool hasJobCb, bool hasExtCb); + std::shared_ptr CreateService(); + std::shared_ptr CreateServiceWithoutEvent(int32_t ignoreEventType); + +private: + sptr deathRecipient = nullptr; + sptr obj = nullptr; +}; + +void PrintServiceAbilityTest::SetUpTestCase(void) {} + +void PrintServiceAbilityTest::TearDownTestCase(void) {} + +void PrintServiceAbilityTest::SetUp(void) +{ + static int32_t testNo = 0; + PRINT_HILOGE("PrintServiceAbilityTest_%{public}d", ++testNo); +} + +void PrintServiceAbilityTest::TearDown(void) {} + +std::string PrintServiceAbilityTest::GetExtensionId(EXTENSION_ID_TYPE type) +{ + switch (type) { + case TYPE_DEFAULT: + return DEFAULT_EXTENSION_ID; + break; + + case TYPE_UNLOAD: + return UNLOAD_EXTENSION_ID; + break; + + case TYPE_NON_EXIST: + return NONEXIST_EXTENSION_ID; + break; + + default: + break; + } + return DEFAULT_EXTENSION_ID; +} + +std::string PrintServiceAbilityTest::GetDefaultTaskId() +{ + return std::to_string(0); +} + +std::string PrintServiceAbilityTest::GetDefaultJobId() +{ + return std::to_string(0); +} + +std::string PrintServiceAbilityTest::GetInvalidJobId() +{ + return std::to_string(TEST_VALUE_THOUSAND); +} + +std::string PrintServiceAbilityTest::GetDefaultPrinterId() +{ + return PrintUtils::GetGlobalId(DEFAULT_EXTENSION_ID, DEFAULT_EXT_PRINTER_ID); +} + +std::string PrintServiceAbilityTest::GetInvalidPrinterId() +{ + return PrintUtils::GetGlobalId(DEFAULT_EXTENSION_ID, "wrong printer id"); +} + +void PrintServiceAbilityTest::InitExtPrinterList(std::vector &printerList, size_t count) +{ + printerList.clear(); + PrinterInfo info; + info.SetPrinterId(DEFAULT_EXT_PRINTER_ID); + printerList.emplace_back(info); + if (printerList.size() < count) { + info.SetPrinterId(DEFAULT_EXT_PRINTER_ID2); + printerList.emplace_back(info); + } +} + +void PrintServiceAbilityTest::InitPrinterList(std::vector &printerList, size_t count) +{ + printerList.clear(); + PrinterInfo info; + info.SetPrinterId(PrintUtils::GetGlobalId(DEFAULT_EXTENSION_ID, DEFAULT_EXT_PRINTER_ID)); + printerList.emplace_back(info); + if (printerList.size() < count) { + info.SetPrinterId(PrintUtils::GetGlobalId(DEFAULT_EXTENSION_ID, DEFAULT_EXT_PRINTER_ID2)); + printerList.emplace_back(info); + } +} + +void PrintServiceAbilityTest::InitExtPrinterIdList(std::vector &idList, size_t count) +{ + idList.clear(); + idList.emplace_back(DEFAULT_EXT_PRINTER_ID); + if (idList.size() < count) { + idList.emplace_back(DEFAULT_EXT_PRINTER_ID2); + } +} + +void PrintServiceAbilityTest::InitFileList(std::vector &fileList) +{ + fileList.emplace_back(DEFAULT_PRINT_FILE_A); + fileList.emplace_back(DEFAULT_PRINT_FILE_B); + fileList.emplace_back(DEFAULT_PRINT_FILE_C); +} + +void PrintServiceAbilityTest::InitFdList(std::vector &fdList) +{ + fdList.emplace_back(FDLIST_TEST_ONE); + fdList.emplace_back(FDLIST_TEST_TWO); + fdList.emplace_back(FDLIST_TEST_THREE); +} + +void PrintServiceAbilityTest::InitExtensionList(std::vector& extList) +{ + std::vector nameList = {DEFAULT_EXTENSION_ID, UNLOAD_EXTENSION_ID}; + AppExecFwk::ExtensionAbilityInfo loadInfo; + for (size_t index = 0; index < nameList.size(); index++) { + loadInfo.bundleName = nameList[index]; + loadInfo.moduleName = nameList[index]; + loadInfo.name = nameList[index]; + extList.emplace_back(loadInfo); + } +} + +std::shared_ptr PrintServiceAbilityTest::CreatePrintServiceHelper(bool hasPermission, + bool hasBundleMgr, bool hasAccountMgr, bool hasAbilityMgr) +{ + auto helper = std::make_shared(); + EXPECT_NE(helper, nullptr); + EXPECT_CALL(*helper, CheckPermission(_)).WillRepeatedly(Return(hasPermission)); + EXPECT_CALL(*helper, IsSyncMode()).WillRepeatedly(Return(true)); + ON_CALL(*helper, QueryAccounts).WillByDefault( + [hasAccountMgr](std::vector &accountList) { + accountList.emplace_back(TEST_VALUE_HUNDRED); + PRINT_HILOGE("QueryAccounts End"); + return hasAccountMgr; + } + ); + EXPECT_CALL(*helper, StartAbility(_)).WillRepeatedly(Return(hasAbilityMgr)); + if (hasBundleMgr) { + obj = new (std::nothrow) MockBundleMgr(); + EXPECT_NE(obj, nullptr); + ON_CALL(*helper, QueryExtension).WillByDefault( + [this](sptr, int userId, + std::vector& extList) -> bool { + InitExtensionList(extList); + PRINT_HILOGE("QueryExtension extList size :%{public}d", extList.size()); + if (extList.size() > 0) { + PRINT_HILOGE("extList[0]: %{public}s", extList[0].bundleName.c_str()); + } + PRINT_HILOGE("QueryExtension End"); + return true; + }); + ON_CALL(*helper, QueryNameForUid).WillByDefault( + [this](sptr, int32_t, std::string &bundleName) -> bool { + bundleName = GetExtensionId(TYPE_DEFAULT); + PRINT_HILOGE("QueryNameForUid End"); + return true; + }); + EXPECT_CALL(*obj, IsProxyObject()).WillRepeatedly(Return(true)); + EXPECT_CALL(*obj, RemoveDeathRecipient(_)).WillRepeatedly(Return(true)); + EXPECT_CALL(*obj, AddDeathRecipient(_)).WillRepeatedly( + [this](const sptr &recipient) { + deathRecipient = recipient; + return true; + }); + ON_CALL(*helper, GetBundleMgr).WillByDefault( + [this] () -> sptr { + PRINT_HILOGE("GetBundleMgr End"); + return obj; + }); + } else { + EXPECT_CALL(*helper, GetBundleMgr()).WillRepeatedly(Return(nullptr)); + } + return helper; +} + +MATCHER_P(PrinterInfoMatcher, oParam, "Match Printer Info") +{ + const PrinterInfo& op = (const PrinterInfo&)arg; + return op.GetPrinterId() == oParam.GetPrinterId(); +} + +MATCHER_P(PrintJobMatcher, oParam, "Match Print Job") +{ + const PrintJob& op = (const PrintJob&)arg; + return op.GetJobId() == oParam.GetJobId(); +} + +sptr PrintServiceAbilityTest::CreateExtCallback(bool hasCb, + bool hasPrinterCb, bool hasJobCb, bool hasCapCb) +{ + auto listener = new (std::nothrow) MockPrintExtensionCallbackProxy(); + EXPECT_NE(listener, nullptr); + EXPECT_CALL(*listener, OnCallback()).WillRepeatedly(Return(hasCb)); + auto testPrinterId = PrintUtils::GetGlobalId(GetExtensionId(TYPE_DEFAULT), DEFAULT_EXT_PRINTER_ID); + EXPECT_CALL(*listener, OnCallback(testPrinterId)).WillRepeatedly(Return(hasPrinterCb)); + + PrintJob testJob; + testJob.SetJobId(GetDefaultJobId()); + EXPECT_CALL(*listener, OnCallback(Matcher(PrintJobMatcher(testJob)))) + .WillRepeatedly(Return(hasJobCb)); + EXPECT_CALL(*listener, OnCallback(_, _)).WillRepeatedly(Return(hasCapCb)); + return listener; +} + +sptr PrintServiceAbilityTest::CreateCallback(bool hasCb, + bool hasPrinterCb, bool hasJobCb, bool hasExtCb) +{ + auto listener = new (std::nothrow) MockPrintCallbackProxy(); + EXPECT_NE(listener, nullptr); + EXPECT_CALL(*listener, OnCallback()).WillRepeatedly(Return(hasCb)); + + PrinterInfo info; + info.SetPrinterId(PrintUtils::GetGlobalId(GetExtensionId(TYPE_DEFAULT), DEFAULT_EXT_PRINTER_ID)); + EXPECT_CALL(*listener, OnCallback(_, + Matcher(PrinterInfoMatcher(info)))).WillRepeatedly(Return(hasPrinterCb)); + + PrintJob testJob; + testJob.SetJobId(GetDefaultJobId()); + EXPECT_CALL(*listener, OnCallback(_, + Matcher(PrintJobMatcher(testJob)))).WillRepeatedly(Return(hasJobCb)); + EXPECT_CALL(*listener, OnCallback(GetExtensionId(TYPE_DEFAULT), _)).WillRepeatedly(Return(hasExtCb)); + return listener; +} + +std::shared_ptr PrintServiceAbilityTest::CreateService() +{ + return CreateServiceWithoutEvent(PRINT_EXTCB_MAX); +} + +std::shared_ptr PrintServiceAbilityTest::CreateServiceWithoutEvent(int32_t ignoreEventType) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, true, true, true)); + + std::vector fileList = {}; + InitFileList(fileList); + std::vector fdList = {}; + InitFdList(fdList); + std::string taskId = ""; + EXPECT_EQ(service->StartPrint(fileList, fdList, taskId), E_PRINT_NONE); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NONE); + + std::vector extensionIds; + extensionIds.emplace_back(GetExtensionId(TYPE_DEFAULT)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NONE); + auto eventCount = static_cast(PRINT_EXTCB_MAX - PRINT_EXTCB_START_DISCOVERY); + for (int32_t index = 0; index < eventCount; index++) { + auto eventType = PRINT_EXTCB_START_DISCOVERY + index; + if (eventType == ignoreEventType) { + continue; + } + auto extensionCid = PrintUtils::EncodeExtensionCid(GetExtensionId(TYPE_DEFAULT), eventType); + auto listener = CreateExtCallback(true, true, true, true); + EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_NONE); + } + + std::vector taskEvent = {EVENT_BLOCK, EVENT_SUCCESS, EVENT_FAIL, EVENT_CANCEL}; + for (size_t index = 0; index < taskEvent.size(); index++) { + sptr listener = CreateCallback(true, true, true, true); + EXPECT_EQ(service->On(taskId, taskEvent[index], listener), E_PRINT_NONE); + } + + std::vector spoolerEvent = {PRINTER_EVENT_TYPE, PRINTJOB_EVENT_TYPE, EXTINFO_EVENT_TYPE}; + for (size_t index = 0; index < spoolerEvent.size(); index++) { + sptr listener = CreateCallback(true, true, true, true); + EXPECT_EQ(service->On("", spoolerEvent[index], listener), E_PRINT_NONE); + } + EXPECT_EQ(service->LoadExtSuccess(GetExtensionId(TYPE_DEFAULT)), E_PRINT_NONE); + return service; +} + +/** +* @tc.name: PrintServiceAbilityTest_0001 +* @tc.desc: PrintServiceAbility ctor/dtor +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0001, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->~PrintServiceAbility(); +} + +/** +* @tc.name: PrintServiceAbilityTest_0002 +* @tc.desc: StartPrint: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0002, TestSize.Level1) +{ + std::vector fileList = {}; + std::vector fdList = {}; + std::string taskId = ""; + int result = PrintServiceAbility::GetInstance()->StartPrint(fileList, fdList, taskId); + EXPECT_EQ(result, E_PRINT_NO_PERMISSION); + std::shared_ptr helper = nullptr; + PrintServiceAbility::GetInstance()->SetHelper(helper); + result = PrintServiceAbility::GetInstance()->StartPrint(fileList, fdList, taskId); + EXPECT_EQ(result, E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0003 +* @tc.desc: StartPrint: empty fileList and fdList +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0003, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::vector fileList = {}; + std::vector fdList = {}; + std::string taskId = ""; + EXPECT_EQ(service->StartPrint(fileList, fdList, taskId), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0004 +* @tc.desc: StartPrint: mock failed to start ability +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0004, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::vector fileList; + InitFileList(fileList); + std::vector fdList = {}; + std::string taskId = ""; + EXPECT_EQ(service->StartPrint(fileList, fdList, taskId), E_PRINT_SERVER_FAILURE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0005 +* @tc.desc: StartPrint: mock failed to start ability +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0005, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::vector fileList = {}; + std::vector fdList = {}; + InitFdList(fdList); + std::string taskId = ""; + EXPECT_EQ(service->StartPrint(fileList, fdList, taskId), E_PRINT_SERVER_FAILURE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0006 +* @tc.desc: StartPrint: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0006, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, true)); + + std::vector fileList = {}; + InitFileList(fileList); + std::vector fdList = {}; + InitFdList(fdList); + std::string taskId = ""; + EXPECT_EQ(service->StartPrint(fileList, fdList, taskId), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0007 +* @tc.desc: StopPrint: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0007, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + std::string taskId = "1"; + EXPECT_EQ(service->StopPrint(taskId), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0008 +* @tc.desc: StopPrint: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0008, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string taskId = "1"; + EXPECT_EQ(service->StopPrint(taskId), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0009 +* @tc.desc: QueryAllExtension: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0009, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0010 +* @tc.desc: QueryAllExtension: mock failed to get bms object +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0010, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_SERVER_FAILURE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0011 +* @tc.desc: QueryAllExtension: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0011, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, true, true, false)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0012 +* @tc.desc: StartDiscoverPrinter: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0012, TestSize.Level1) +{ + std::vector extensionIds; + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0013 +* @tc.desc: StartDiscoverPrinter: empty extension list +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0013, TestSize.Level1) +{ + std::vector extensionIds; + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_INVALID_EXTENSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0014 +* @tc.desc: StartDiscoverPrinter: input extension list not exist +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0014, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::vector extensionIds; + extensionIds.emplace_back(GetExtensionId(TYPE_NON_EXIST)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_INVALID_EXTENSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0015 +* @tc.desc: StartDiscoverPrinter: mock failed to start extension +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0015, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, true, true, false)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NONE); + + std::vector extensionIds; + extensionIds.emplace_back(GetExtensionId(TYPE_DEFAULT)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0016 +* @tc.desc: StartDiscoverPrinter: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0016, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, true, true, true)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NONE); + + std::vector extensionIds; + extensionIds.emplace_back(GetExtensionId(TYPE_DEFAULT)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0017 +* @tc.desc: RegisterExtCallback: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0017, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + std::string extensionCid = ""; + sptr listener = nullptr; + EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0018 +* @tc.desc: RegisterExtCallback: invalid format of extensionCid +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0018, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string extensionCid = ""; + sptr listener = nullptr; + EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0019 +* @tc.desc: RegisterExtCallback: invalid extensionId of extensionCid +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0019, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + auto extensionCid = PrintUtils::EncodeExtensionCid(GetExtensionId(TYPE_NON_EXIST), PRINT_EXTCB_START_DISCOVERY); + sptr listener = nullptr; + EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_INVALID_EXTENSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0020 +* @tc.desc: RegisterExtCallback: invalid state of extensionId +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0020, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, true, true, true)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NONE); + + std::vector extensionIds; + extensionIds.emplace_back(GetExtensionId(TYPE_DEFAULT)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NONE); + + auto extensionCid = PrintUtils::EncodeExtensionCid(GetExtensionId(TYPE_UNLOAD), PRINT_EXTCB_START_DISCOVERY); + sptr listener = nullptr; + EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_INVALID_EXTENSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0021 +* @tc.desc: RegisterExtCallback: invalid callbackId of extensionCid +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0021, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, true, true, true)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NONE); + + std::vector extensionIds; + extensionIds.emplace_back(GetExtensionId(TYPE_DEFAULT)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NONE); + + auto extensionCid = PrintUtils::EncodeExtensionCid(GetExtensionId(TYPE_DEFAULT), PRINT_EXTCB_MAX); + sptr listener = nullptr; + EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0022 +* @tc.desc: RegisterExtCallback: invalid listener +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0022, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, true, true, true)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NONE); + + std::vector extensionIds; + extensionIds.emplace_back(GetExtensionId(TYPE_DEFAULT)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NONE); + + auto extensionCid = PrintUtils::EncodeExtensionCid(GetExtensionId(TYPE_DEFAULT), PRINT_EXTCB_START_DISCOVERY); + sptr listener = nullptr; + EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0023 +* @tc.desc: RegisterExtCallback: ok - insert istener +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0023, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, true, true, true)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NONE); + + std::vector extensionIds; + extensionIds.emplace_back(GetExtensionId(TYPE_DEFAULT)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NONE); + + auto extensionCid = PrintUtils::EncodeExtensionCid(GetExtensionId(TYPE_DEFAULT), PRINT_EXTCB_START_DISCOVERY); + auto listener = CreateExtCallback(false, false, false, false); + EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0024 +* @tc.desc: RegisterExtCallback: ok - update istener +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0024, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, true, true, true)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NONE); + + std::vector extensionIds; + extensionIds.emplace_back(GetExtensionId(TYPE_DEFAULT)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NONE); + + auto extensionCid = PrintUtils::EncodeExtensionCid(GetExtensionId(TYPE_DEFAULT), PRINT_EXTCB_START_DISCOVERY); + auto listener = CreateExtCallback(false, false, false, false); + EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_NONE); + auto listener2 = CreateExtCallback(true, false, false, false); + EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener2), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0025 +* @tc.desc: UnregisterAllExtCallback: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0025, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + EXPECT_EQ(service->UnregisterAllExtCallback(GetExtensionId(TYPE_DEFAULT)), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0026 +* @tc.desc: UnregisterAllExtCallback: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0026, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, true, true, true)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NONE); + + std::vector extensionIds; + extensionIds.emplace_back(GetExtensionId(TYPE_DEFAULT)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NONE); + + auto extensionCid = PrintUtils::EncodeExtensionCid(GetExtensionId(TYPE_DEFAULT), PRINT_EXTCB_START_DISCOVERY); + auto listener = CreateExtCallback(false, false, false, false); + EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_NONE); + EXPECT_EQ(service->UnregisterAllExtCallback(GetExtensionId(TYPE_DEFAULT)), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0027 +* @tc.desc: LoadExtSuccess: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0027, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + EXPECT_EQ(service->LoadExtSuccess(GetExtensionId(TYPE_DEFAULT)), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0028 +* @tc.desc: LoadExtSuccess: invalid extensionId +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0028, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + EXPECT_EQ(service->LoadExtSuccess(GetExtensionId(TYPE_NON_EXIST)), E_PRINT_INVALID_EXTENSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0029 +* @tc.desc: LoadExtSuccess: invalid state of extension +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0029, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, true, true, true)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NONE); + + std::vector extensionIds; + extensionIds.emplace_back(GetExtensionId(TYPE_DEFAULT)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NONE); + + EXPECT_EQ(service->LoadExtSuccess(GetExtensionId(TYPE_UNLOAD)), E_PRINT_INVALID_EXTENSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0030 +* @tc.desc: LoadExtSuccess: ok - without START_DISCOVERY cb +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0030, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, true, true, true)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NONE); + + std::vector extensionIds; + extensionIds.emplace_back(GetExtensionId(TYPE_DEFAULT)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NONE); + + EXPECT_EQ(service->LoadExtSuccess(GetExtensionId(TYPE_DEFAULT)), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0031 +* @tc.desc: LoadExtSuccess: ok - with START_DISCOVERY cb (false) +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0031, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, true, true, true)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NONE); + + std::vector extensionIds; + extensionIds.emplace_back(GetExtensionId(TYPE_DEFAULT)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NONE); + + auto extensionCid = PrintUtils::EncodeExtensionCid(GetExtensionId(TYPE_DEFAULT), PRINT_EXTCB_START_DISCOVERY); + auto listener = CreateExtCallback(false, false, false, false); + EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_NONE); + EXPECT_EQ(service->LoadExtSuccess(GetExtensionId(TYPE_DEFAULT)), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0032 +* @tc.desc: LoadExtSuccess: ok - with START_DISCOVERY cb (true) +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0032, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, true, true, true)); + + std::vector infoList; + EXPECT_EQ(service->QueryAllExtension(infoList), E_PRINT_NONE); + + std::vector extensionIds; + extensionIds.emplace_back(GetExtensionId(TYPE_DEFAULT)); + EXPECT_EQ(service->StartDiscoverPrinter(extensionIds), E_PRINT_NONE); + + auto extensionCid = PrintUtils::EncodeExtensionCid(GetExtensionId(TYPE_DEFAULT), PRINT_EXTCB_START_DISCOVERY); + auto listener = CreateExtCallback(true, false, false, false); + EXPECT_EQ(service->RegisterExtCallback(extensionCid, listener), E_PRINT_NONE); + EXPECT_EQ(service->LoadExtSuccess(GetExtensionId(TYPE_DEFAULT)), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0033 +* @tc.desc: On: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0033, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + std::string taskId = ""; + std::string type = ""; + sptr listener = nullptr; + EXPECT_EQ(service->On(taskId, type, listener), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0034 +* @tc.desc: On: invalid event type +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0034, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string taskId = ""; + std::string type = ""; + sptr listener = nullptr; + EXPECT_EQ(service->On(taskId, type, listener), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0035 +* @tc.desc: On: invalid listener +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0035, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string taskId = GetDefaultTaskId(); + std::string type = "block"; + sptr listener = nullptr; + EXPECT_EQ(service->On(taskId, type, listener), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0036 +* @tc.desc: On: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0036, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string taskId = GetDefaultTaskId(); + std::string type = "block"; + sptr listener = CreateCallback(false, false, false, false); + EXPECT_EQ(service->On(taskId, type, listener), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0037 +* @tc.desc: On: update listener +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0037, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string taskId = GetDefaultTaskId(); + std::string type = "block"; + sptr listener = CreateCallback(false, false, false, false); + EXPECT_EQ(service->On(taskId, type, listener), E_PRINT_NONE); + sptr listener2 = CreateCallback(true, false, false, false); + EXPECT_EQ(service->On(taskId, type, listener2), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0038 +* @tc.desc: Off: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0038, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + std::string taskId = ""; + std::string type = ""; + EXPECT_EQ(service->Off(taskId, type), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0039 +* @tc.desc: Off: invalid event type +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0039, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string taskId = ""; + std::string type = ""; + EXPECT_EQ(service->Off(taskId, type), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0040 +* @tc.desc: Off: no event listener registerred +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0040, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string taskId = GetDefaultTaskId(); + std::string type = "block"; + EXPECT_EQ(service->Off(taskId, type), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0041 +* @tc.desc: Off: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0041, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string taskId = GetDefaultTaskId(); + std::string type = "block"; + sptr listener = CreateCallback(false, false, false, false); + EXPECT_EQ(service->On(taskId, type, listener), E_PRINT_NONE); + EXPECT_EQ(service->Off(taskId, type), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0042 +* @tc.desc: AddPrinters: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0042, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + std::vector printerInfos; + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0043 +* @tc.desc: AddPrinters: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0043, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0044 +* @tc.desc: AddPrinters: no printer event listener +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0044, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + EXPECT_EQ(service->Off("", PRINTER_EVENT_TYPE), E_PRINT_NONE); + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0045 +* @tc.desc: AddPrinters: duplicate printers +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0045, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + EXPECT_EQ(service->Off("", PRINTER_EVENT_TYPE), E_PRINT_NONE); + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + InitExtPrinterList(printerInfos, 2); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0046 +* @tc.desc: RemovePrinters: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0046, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + std::vector printerIds; + EXPECT_EQ(service->RemovePrinters(printerIds), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0047 +* @tc.desc: RemovePrinters: invalid printerId +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0047, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::vector printerIds; + InitExtPrinterIdList(printerIds, 1); + EXPECT_EQ(service->RemovePrinters(printerIds), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0048 +* @tc.desc: RemovePrinters: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0048, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + std::vector printerIds; + InitExtPrinterIdList(printerIds, 1); + EXPECT_EQ(service->RemovePrinters(printerIds), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0049 +* @tc.desc: UpdatePrinters: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0049, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + std::vector printerInfos; + EXPECT_EQ(service->UpdatePrinters(printerInfos), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0050 +* @tc.desc: UpdatePrinters: no printer exist +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0050, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->UpdatePrinters(printerInfos), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0051 +* @tc.desc: UpdatePrinters: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0051, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + EXPECT_EQ(service->UpdatePrinters(printerInfos), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0052 +* @tc.desc: StartPrintJob: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0052, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + PrintJob testJob; + EXPECT_EQ(service->StartPrintJob(testJob), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0053 +* @tc.desc: StartPrintJob: invalid job id +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0053, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + PrintJob testJob; + testJob.SetJobId(GetDefaultJobId()); + EXPECT_EQ(service->StartPrintJob(testJob), E_PRINT_INVALID_PRINTJOB); +} + +/** +* @tc.name: PrintServiceAbilityTest_0054 +* @tc.desc: StartPrintJob: without print job cb +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0054, TestSize.Level1) +{ + auto service = CreateServiceWithoutEvent(PRINT_EXTCB_START_PRINT); + EXPECT_NE(service, nullptr); + + PrintJob testJob; + testJob.SetJobId(GetDefaultJobId()); + EXPECT_EQ(service->StartPrintJob(testJob), E_PRINT_SERVER_FAILURE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0055 +* @tc.desc: StartPrintJob: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0055, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + + PrintJob testJob; + testJob.SetJobId(GetDefaultJobId()); + testJob.SetPrinterId(GetDefaultPrinterId()); + EXPECT_EQ(service->StartPrintJob(testJob), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0056 +* @tc.desc: CancelPrintJob: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0056, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + EXPECT_EQ(service->CancelPrintJob(GetDefaultJobId()), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0057 +* @tc.desc: CancelPrintJob: invalid job id +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0057, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + EXPECT_EQ(service->CancelPrintJob(GetDefaultJobId()), E_PRINT_INVALID_PRINTJOB); +} + +/** +* @tc.name: PrintServiceAbilityTest_0058 +* @tc.desc: CancelPrintJob: without cancel print cb +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0058, TestSize.Level1) +{ + auto service = CreateServiceWithoutEvent(PRINT_EXTCB_CANCEL_PRINT); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + + PrintJob testJob; + testJob.SetJobId(GetDefaultJobId()); + testJob.SetPrinterId(GetDefaultPrinterId()); + EXPECT_EQ(service->StartPrintJob(testJob), E_PRINT_NONE); + EXPECT_EQ(service->CancelPrintJob(GetDefaultJobId()), E_PRINT_SERVER_FAILURE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0059 +* @tc.desc: CancelPrintJob: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0059, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + + PrintJob testJob; + testJob.SetJobId(GetDefaultJobId()); + testJob.SetPrinterId(GetDefaultPrinterId()); + EXPECT_EQ(service->StartPrintJob(testJob), E_PRINT_NONE); + EXPECT_EQ(service->CancelPrintJob(GetDefaultJobId()), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0060 +* @tc.desc: CancelPrintJob: job state is prepared +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0060, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + + PrintJob testJob; + testJob.SetJobId(GetDefaultJobId()); + testJob.SetPrinterId(GetDefaultPrinterId()); + EXPECT_EQ(service->StartPrintJob(testJob), E_PRINT_NONE); + EXPECT_EQ(service->UpdatePrintJobState(GetDefaultJobId(), + PRINT_JOB_PREPARED, PRINT_JOB_BLOCKED_UNKNOWN), E_PRINT_NONE); + EXPECT_EQ(service->CancelPrintJob(GetDefaultJobId()), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0061 +* @tc.desc: UpdatePrinterState: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0061, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + std::string printerId = ""; + uint32_t state = 0; + EXPECT_EQ(service->UpdatePrinterState(printerId, state), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0062 +* @tc.desc: UpdatePrinterState: invalid state of printer +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0062, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string printerId = ""; + uint32_t state = PRINTER_UNKNOWN + 100; + EXPECT_EQ(service->UpdatePrinterState(printerId, state), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0063 +* @tc.desc: UpdatePrinterState: invalid printer id +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0063, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string printerId = DEFAULT_EXT_PRINTER_ID; + uint32_t state = PRINTER_UPDATE_CAP; + EXPECT_EQ(service->UpdatePrinterState(printerId, state), E_PRINT_INVALID_PRINTER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0064 +* @tc.desc: UpdatePrinterState: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0064, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + + std::string printerId = DEFAULT_EXT_PRINTER_ID; + uint32_t state = PRINTER_UPDATE_CAP; + EXPECT_EQ(service->UpdatePrinterState(printerId, state), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0065 +* @tc.desc: UpdatePrintJobState: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0065, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + std::string jobId = ""; + uint32_t state = 0; + uint32_t subState = 0; + EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0066 +* @tc.desc: UpdatePrintJobState: invalid job state +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0066, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string jobId = ""; + uint32_t state = PRINT_JOB_UNKNOWN + 100; + uint32_t subState = 0; + EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0067 +* @tc.desc: UpdatePrintJobState: invalid substate of PRINT_JOB_COMPLETED +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0067, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string jobId = ""; + uint32_t state = PRINT_JOB_COMPLETED; + uint32_t subState = PRINT_JOB_BLOCKED_UNKNOWN; + EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0068 +* @tc.desc: UpdatePrintJobState: invalid substate of PRINT_JOB_BLOCKED +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0068, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string jobId = ""; + uint32_t state = PRINT_JOB_BLOCKED; + uint32_t subState = PRINT_JOB_COMPLETED_FILE_CORRUPT; + EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0069 +* @tc.desc: UpdatePrintJobState: invalid substate of PRINT_JOB_BLOCKED 2 +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0069, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string jobId = ""; + uint32_t state = PRINT_JOB_BLOCKED; + uint32_t subState = PRINT_JOB_BLOCKED_UNKNOWN + 100; + EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_INVALID_PARAMETER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0070 +* @tc.desc: UpdatePrintJobState: invalid print job +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0070, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string jobId = GetDefaultJobId(); + uint32_t state = PRINT_JOB_BLOCKED; + uint32_t subState = PRINT_JOB_BLOCKED_OFFLINE; + EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_INVALID_PRINTJOB); +} + +/** +* @tc.name: PrintServiceAbilityTest_0071 +* @tc.desc: UpdatePrintJobState: ok - blocked without start print job +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0071, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::string jobId = GetDefaultJobId(); + uint32_t state = PRINT_JOB_BLOCKED; + uint32_t subState = PRINT_JOB_BLOCKED_OFFLINE; + EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0072 +* @tc.desc: UpdatePrintJobState: ok - completed without start print job +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0072, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::string jobId = GetDefaultJobId(); + uint32_t state = PRINT_JOB_COMPLETED; + uint32_t subState = PRINT_JOB_COMPLETED_SUCCESS; + EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0073 +* @tc.desc: UpdatePrintJobState: ok - completed with start print job +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0073, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + + PrintJob testJob; + testJob.SetJobId(GetDefaultJobId()); + testJob.SetPrinterId(GetDefaultPrinterId()); + EXPECT_EQ(service->StartPrintJob(testJob), E_PRINT_NONE); + + std::string jobId = GetDefaultJobId(); + uint32_t state = PRINT_JOB_COMPLETED; + uint32_t subState = PRINT_JOB_COMPLETED_SUCCESS; + EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0074 +* @tc.desc: UpdateExtensionInfo: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0074, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + std::string info = ""; + EXPECT_EQ(service->UpdateExtensionInfo(info), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0075 +* @tc.desc: UpdateExtensionInfo: empty extension list +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0075, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string info = ""; + EXPECT_EQ(service->UpdateExtensionInfo(info), E_PRINT_INVALID_EXTENSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0076 +* @tc.desc: UpdateExtensionInfo: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0076, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::string extInfo = DEFAULT_EXT_INFO; + EXPECT_EQ(service->UpdateExtensionInfo(extInfo), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0077 +* @tc.desc: RequestPreview: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0077, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + PrintJob job; + std::string result = ""; + EXPECT_EQ(service->RequestPreview(job, result), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0078 +* @tc.desc: RequestPreview: no print job +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0078, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + PrintJob job; + job.SetJobId(GetDefaultJobId()); + std::string result = ""; + EXPECT_EQ(service->RequestPreview(job, result), E_PRINT_INVALID_PRINTJOB); +} + +/** +* @tc.name: PrintServiceAbilityTest_0079 +* @tc.desc: RequestPreview: print job not started yet +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0079, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + PrintJob job; + job.SetJobId(GetDefaultJobId()); + std::string result = ""; + EXPECT_EQ(service->RequestPreview(job, result), E_PRINT_INVALID_PRINTJOB); +} + +/** +* @tc.name: PrintServiceAbilityTest_0080 +* @tc.desc: RequestPreview: print job with invalid printerId +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0080, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + + PrintJob job; + job.SetJobId(GetDefaultJobId()); + job.SetPrinterId(GetInvalidPrinterId()); + std::string result = ""; + EXPECT_EQ(service->RequestPreview(job, result), E_PRINT_INVALID_PRINTJOB); +} + +/** +* @tc.name: PrintServiceAbilityTest_0081 +* @tc.desc: RequestPreview: without request preview cb +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0081, TestSize.Level1) +{ + auto service = CreateServiceWithoutEvent(PRINT_EXTCB_REQUEST_PREVIEW); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + + PrintJob job; + job.SetJobId(GetDefaultJobId()); + job.SetPrinterId(GetDefaultPrinterId()); + std::string result = ""; + EXPECT_EQ(service->RequestPreview(job, result), E_PRINT_SERVER_FAILURE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0082 +* @tc.desc: RequestPreview: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0082, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + + PrintJob job; + job.SetJobId(GetDefaultJobId()); + job.SetPrinterId(GetDefaultPrinterId()); + std::string result = ""; + EXPECT_EQ(service->RequestPreview(job, result), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0083 +* @tc.desc: QueryPrinterCapability: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0083, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + std::string printerId = ""; + EXPECT_EQ(service->QueryPrinterCapability(printerId), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0084 +* @tc.desc: RequestPreview: invalid printerId +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0084, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string printerId = GetDefaultPrinterId(); + EXPECT_EQ(service->QueryPrinterCapability(printerId), E_PRINT_INVALID_PRINTER); +} + +/** +* @tc.name: PrintServiceAbilityTest_0085 +* @tc.desc: QueryPrinterCapability: without request cap cb +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0085, TestSize.Level1) +{ + auto service = CreateServiceWithoutEvent(PRINT_EXTCB_REQUEST_CAP); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + + std::string printerId = GetDefaultPrinterId(); + EXPECT_EQ(service->QueryPrinterCapability(printerId), E_PRINT_SERVER_FAILURE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0086 +* @tc.desc: QueryPrinterCapability: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0086, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + + std::string printerId = GetDefaultPrinterId(); + EXPECT_EQ(service->QueryPrinterCapability(printerId), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0087 +* @tc.desc: StopDiscoverPrinter: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0087, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + EXPECT_EQ(service->StopDiscoverPrinter(), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0088 +* @tc.desc: StopDiscoverPrinter: without stop discovery cb +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0088, TestSize.Level1) +{ + auto service = CreateServiceWithoutEvent(PRINT_EXTCB_STOP_DISCOVERY); + EXPECT_NE(service, nullptr); + + EXPECT_EQ(service->StopDiscoverPrinter(), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0089 +* @tc.desc: StopDiscoverPrinter: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0089, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + EXPECT_EQ(service->StopDiscoverPrinter(), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0090 +* @tc.desc: QueryAllPrintJob: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0090, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + std::vector printJobs; + EXPECT_EQ(service->QueryAllPrintJob(printJobs), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0091 +* @tc.desc: QueryAllPrintJob: empty print job +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0091, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::vector printJobs; + EXPECT_EQ(service->QueryAllPrintJob(printJobs), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0092 +* @tc.desc: QueryAllPrintJob: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0092, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + + PrintJob testJob; + testJob.SetJobId(GetDefaultJobId()); + testJob.SetPrinterId(GetDefaultPrinterId()); + EXPECT_EQ(service->StartPrintJob(testJob), E_PRINT_NONE); + + std::vector printJobs; + EXPECT_EQ(service->QueryAllPrintJob(printJobs), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0093 +* @tc.desc: QueryPrintJobById: no permission +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0093, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(false, false, false, false)); + + std::string jobId = ""; + PrintJob testJob; + EXPECT_EQ(service->QueryPrintJobById(jobId, testJob), E_PRINT_NO_PERMISSION); +} + +/** +* @tc.name: PrintServiceAbilityTest_0094 +* @tc.desc: QueryPrintJobById: no print job +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0094, TestSize.Level1) +{ + auto service = std::make_shared(PRINT_SERVICE_ID, true); + EXPECT_NE(service, nullptr); + service->SetHelper(CreatePrintServiceHelper(true, false, false, false)); + + std::string jobId = ""; + PrintJob testJob; + EXPECT_EQ(service->QueryPrintJobById(jobId, testJob), E_PRINT_INVALID_PRINTJOB); +} + +/** +* @tc.name: PrintServiceAbilityTest_0095 +* @tc.desc: QueryPrintJobById: invalid job id +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0095, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::string jobId = GetInvalidJobId(); + PrintJob testJob; + EXPECT_EQ(service->QueryPrintJobById(jobId, testJob), E_PRINT_INVALID_PRINTJOB); +} + +/** +* @tc.name: PrintServiceAbilityTest_0096 +* @tc.desc: QueryPrintJobById: ok +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0096, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::string jobId = GetDefaultJobId(); + PrintJob testJob; + EXPECT_EQ(service->QueryPrintJobById(jobId, testJob), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0097 +* @tc.desc: UpdateExtensionInfo: without extension cb +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0097, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + EXPECT_EQ(service->Off("", EXTINFO_EVENT_TYPE), E_PRINT_NONE); + + std::string extInfo = DEFAULT_EXT_INFO; + EXPECT_EQ(service->UpdateExtensionInfo(extInfo), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0098 +* @tc.desc: UpdatePrintJobState: without destroy extension cb +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0098, TestSize.Level1) +{ + auto service = CreateServiceWithoutEvent(PRINT_EXTCB_DESTROY_EXTENSION); + EXPECT_NE(service, nullptr); + + std::vector printerInfos; + InitExtPrinterList(printerInfos, 1); + EXPECT_EQ(service->AddPrinters(printerInfos), E_PRINT_NONE); + + PrintJob testJob; + testJob.SetJobId(GetDefaultJobId()); + testJob.SetPrinterId(GetDefaultPrinterId()); + EXPECT_EQ(service->StartPrintJob(testJob), E_PRINT_NONE); + + std::string jobId = GetDefaultJobId(); + uint32_t state = PRINT_JOB_COMPLETED; + uint32_t subState = PRINT_JOB_COMPLETED_SUCCESS; + EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0099 +* @tc.desc: UpdatePrintJobState: without print job cb for spooler +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0099, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + EXPECT_EQ(service->Off("", PRINTJOB_EVENT_TYPE), E_PRINT_NONE); + + std::string jobId = GetDefaultJobId(); + uint32_t state = PRINT_JOB_COMPLETED; + uint32_t subState = PRINT_JOB_COMPLETED_SUCCESS; + EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0100 +* @tc.desc: UpdatePrintJobState: without event fail cb +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0100, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + EXPECT_EQ(service->Off(GetDefaultJobId(), EVENT_FAIL), E_PRINT_NONE); + + std::string jobId = GetDefaultJobId(); + uint32_t state = PRINT_JOB_COMPLETED; + uint32_t subState = PRINT_JOB_COMPLETED_FAILED; + EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_NONE); +} + +/** +* @tc.name: PrintServiceAbilityTest_0101 +* @tc.desc: UpdatePrintJobState: print job substate is cancel +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceAbilityTest, PrintServiceAbilityTest_0101, TestSize.Level1) +{ + auto service = CreateService(); + EXPECT_NE(service, nullptr); + + std::string jobId = GetDefaultJobId(); + uint32_t state = PRINT_JOB_COMPLETED; + uint32_t subState = PRINT_JOB_COMPLETED_CANCELLED; + EXPECT_EQ(service->UpdatePrintJobState(jobId, state, subState), E_PRINT_NONE); +} +} // namespace Print +} // namespace OHOS diff --git a/test/unittest/service_test/print_service_helper_test.cpp b/test/unittest/service_test/print_service_helper_test.cpp new file mode 100644 index 00000000..a10e5af4 --- /dev/null +++ b/test/unittest/service_test/print_service_helper_test.cpp @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "print_service_helper.h" +#include "print_constant.h" + +using namespace testing::ext; + +namespace OHOS { +namespace Print { +class PrintServiceHelperTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); +}; + +void PrintServiceHelperTest::SetUpTestCase(void) {} + +void PrintServiceHelperTest::TearDownTestCase(void) {} + +void PrintServiceHelperTest::SetUp(void) {} + +void PrintServiceHelperTest::TearDown(void) {} + +/** +* @tc.name: PrintServiceHelperTest_0001 +* @tc.desc: reportPrintSuccess +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceHelperTest, PrintServiceHelperTest_0001, TestSize.Level1) +{ + PrintServiceHelper helper; + helper.~PrintServiceHelper(); +} + +/** +* @tc.name: PrintServiceHelperTest_0002 +* @tc.desc: faultPrint +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceHelperTest, PrintServiceHelperTest_0002, TestSize.Level1) +{ + PrintServiceHelper helper; + helper.CheckPermission(""); +} + +/** +* @tc.name: PrintServiceHelperTest_0003 +* @tc.desc: faultPrint +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceHelperTest, PrintServiceHelperTest_0003, TestSize.Level1) +{ + PrintServiceHelper helper; + AAFwk::Want want; + helper.StartAbility(want); +} + +/** +* @tc.name: PrintServiceHelperTest_0004 +* @tc.desc: faultPrint +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceHelperTest, PrintServiceHelperTest_0004, TestSize.Level1) +{ + PrintServiceHelper helper; + helper.GetBundleMgr(); +} + +/** +* @tc.name: PrintServiceHelperTest_0005 +* @tc.desc: faultPrint +* @tc.type: FUNC +* @tc.require: +*/ +HWTEST_F(PrintServiceHelperTest, PrintServiceHelperTest_0005, TestSize.Level1) +{ + PrintServiceHelper helper; + std::vector accountList; + helper.QueryAccounts(accountList); +} +} // namespace Print +} // namespace OHOS \ No newline at end of file diff --git a/test/unittest/service_test/print_service_stub_test.cpp b/test/unittest/service_test/print_service_stub_test.cpp new file mode 100644 index 00000000..0c57bd87 --- /dev/null +++ b/test/unittest/service_test/print_service_stub_test.cpp @@ -0,0 +1,1009 @@ +/* + * Copyright (c) 2023 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include "mock_print_service.h" +#include "print_manager_client.h" +#include "iremote_broker.h" +#include "print_constant.h" +#include "print_log.h" +#include "print_resolution.h" + +using namespace testing; +using namespace testing::ext; + +namespace OHOS { +namespace Print { +class PrintServiceStubTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); +}; + +void PrintServiceStubTest::SetUpTestCase(void) {} + +void PrintServiceStubTest::TearDownTestCase(void) {} + +void PrintServiceStubTest::SetUp(void) {} + +void PrintServiceStubTest::TearDown(void) {} + +/** + * @tc.name: PrintServiceStubTest_0001 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0001, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_START_PRINT); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + EXPECT_EQ(stub->OnRemoteRequest(code, data, reply, option), E_PRINT_RPC_FAILURE); +} + +/** + * @tc.name: PrintServiceStubTest_0002 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0002, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_START_PRINT + 100); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintService::GetDescriptor())); + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + EXPECT_EQ(stub->OnRemoteRequest(code, data, reply, option), OHOS::IPC_STUB_UNKNOW_TRANS_ERR); +} + +/** + * @tc.name: PrintServiceStubTest_0003 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0003, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_START_PRINT); + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteBool(false)); + EXPECT_TRUE(data.WriteBool(false)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, StartPrint).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0004 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0004, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_START_PRINT); + + std::vector testFileList; + testFileList.resize(1001); + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteBool(testFileList.size() > 0)); + EXPECT_TRUE(data.WriteStringVector(testFileList)); + + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, StartPrint).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0005 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0005, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_START_PRINT); + + std::vector testFileList = {"file://data/print/a.png", + "file://data/print/b.png", "file://data/print/c.png"}; + std::vector testFdList; + testFdList.resize(1001); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteBool(testFileList.size() > 0)); + EXPECT_TRUE(data.WriteStringVector(testFileList)); + EXPECT_TRUE(data.WriteBool(testFdList.size() > 0)); + EXPECT_TRUE(data.WriteInt32(testFdList.size())); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, StartPrint).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0006 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0006, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_START_PRINT); + + std::vector testFileList = {"file://data/print/a.png", + "file://data/print/b.png", "file://data/print/c.png"}; + std::vector testFdList = {1, 2}; + std::string testTaskId = "2"; + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteBool(testFileList.size() > 0)); + EXPECT_TRUE(data.WriteStringVector(testFileList)); + EXPECT_TRUE(data.WriteBool(testFdList.size() > 0)); + EXPECT_TRUE(data.WriteInt32(testFdList.size())); + for (auto fd : testFdList) { + data.WriteFileDescriptor(fd); + } + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, StartPrint).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0007 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0007, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_STOP_PRINT); + + std::string testTaskId = "2"; + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(testTaskId)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, StopPrint).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0008 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0008, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_CONNECTPRINTER); + + std::string testPrinterId = "com.sample.ext:1"; + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(testPrinterId)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, ConnectPrinter).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0009 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0009, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_DISCONNECTPRINTER); + + std::string testPrinterId = "com.sample.ext:1"; + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(testPrinterId)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, DisconnectPrinter).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0010 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0010, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_STARTDISCOVERPRINTER); + + std::vector testExtensionList; + std::string extensionId = "com.sample.ext"; + testExtensionList.emplace_back(extensionId); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteStringVector(testExtensionList)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, StartDiscoverPrinter).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0011 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0011, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_STOPDISCOVERPRINTER); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, StopDiscoverPrinter).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0012 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0012, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_QUERYALLEXTENSION); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, QueryAllExtension).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0013 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0013, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_QUERYALLEXTENSION); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, QueryAllExtension).WillByDefault(Return(E_PRINT_GENERIC_FAILURE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0014 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0014, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_STARTPRINTJOB); + + PrintJob testJob; + std::string jobId = "job:1234"; + testJob.SetJobId(jobId); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(testJob.Marshalling(data)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, StartPrintJob).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0015 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0015, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_CANCELPRINTJOB); + + std::string jobId = "job:1234"; + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(jobId)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, CancelPrintJob).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0016 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0016, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_ADDPRINTERS); + + uint32_t testSize = 1001; + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteUint32(testSize)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, AddPrinters).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0017 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0017, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_ADDPRINTERS); + + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteUint32(0)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, AddPrinters).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0018 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0018, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_ADDPRINTERS); + + PrinterInfo testInfo; + std::string testPrinterId = "com.sample.ext:1"; + testInfo.SetPrinterId(testPrinterId); + std::vector printerInfos; + printerInfos.emplace_back(testInfo); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteUint32(static_cast(printerInfos.size()))); + for (size_t index = 0; index < printerInfos.size(); index++) { + printerInfos[index].Marshalling(data); + } + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, AddPrinters).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0019 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0019, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_REMOVEPRINTERS); + + std::vector printerIds; + printerIds.resize(1001); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteStringVector(printerIds)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, RemovePrinters).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0020 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0020, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_REMOVEPRINTERS); + + std::string testPrinterId = "com.sample.ext:1"; + std::vector printerIds; + printerIds.emplace_back(testPrinterId); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteStringVector(printerIds)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, RemovePrinters).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0021 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0021, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_UPDATEPRINTERS); + + uint32_t testSize = 1001; + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteUint32(testSize)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, UpdatePrinters).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0022 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0022, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_UPDATEPRINTERS); + + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteUint32(0)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, UpdatePrinters).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0023 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0023, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_UPDATEPRINTERS); + + PrinterInfo testInfo; + std::string testPrinterId = "com.sample.ext:1"; + testInfo.SetPrinterId(testPrinterId); + std::vector printerInfos; + printerInfos.emplace_back(testInfo); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteUint32(static_cast(printerInfos.size()))); + for (size_t index = 0; index < printerInfos.size(); index++) { + printerInfos[index].Marshalling(data); + } + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, UpdatePrinters).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0025 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0025, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_UPDATEPRINTERSTATE); + + std::string testPrinterId = "com.sample.ext:1"; + uint32_t testState = static_cast(PRINTER_ADDED); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(testPrinterId)); + EXPECT_TRUE(data.WriteUint32(testState)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, UpdatePrinterState).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0026 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0026, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_UPDATEPRINTJOBSTATE); + + std::string testJobId = "jodId:1234"; + uint32_t testState = static_cast(PRINT_JOB_COMPLETED); + uint32_t testSubState = static_cast(PRINT_JOB_COMPLETED_SUCCESS); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(testJobId)); + EXPECT_TRUE(data.WriteUint32(testState)); + EXPECT_TRUE(data.WriteUint32(testSubState)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, UpdatePrintJobState).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0027 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0027, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_UPDATEEXTENSIONINFO); + + std::string testExtInfo = "extinformation"; + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(testExtInfo)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, UpdateExtensionInfo).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0028 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0028, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_REQUESTPREVIEW); + + PrintJob testJob; + std::string jobId = "job:1234"; + testJob.SetJobId(jobId); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(testJob.Marshalling(data)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, RequestPreview).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0029 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0029, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_QUERYPRINTERCAPABILITY); + + std::string testPrinterId = "com.sample.ext:1"; + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(testPrinterId)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, QueryPrinterCapability).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0030 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0030, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_QUERYALLPRINTJOB); + + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, QueryAllPrintJob).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0031 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0031, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_QUERYPRINTJOBBYID); + + std::string jobId = "job:1234"; + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(jobId)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, QueryPrintJobById).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0032 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0032, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_ON); + + std::string taskId = "1234"; + std::string testType = ""; + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(taskId)); + EXPECT_TRUE(data.WriteString(testType)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, On).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0033 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0033, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_ON); + + std::string taskId = "1234"; + std::string testType = "block"; + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(taskId)); + EXPECT_TRUE(data.WriteString(testType)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, On).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0034 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0034, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_ON); + + std::string taskId = "1234"; + std::string testType = "block"; + auto callback = std::make_shared(); + EXPECT_NE(callback, nullptr); + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(taskId)); + EXPECT_TRUE(data.WriteString(testType)); + EXPECT_TRUE(data.WriteRemoteObject(callback->AsObject().GetRefPtr())); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, On).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0035 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0035, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_ON); + + std::string taskId = "1234"; + std::string testType = "block"; + auto callback = std::make_shared(); + EXPECT_NE(callback, nullptr); + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(taskId)); + EXPECT_TRUE(data.WriteString(testType)); + EXPECT_TRUE(data.WriteRemoteObject(callback->AsObject().GetRefPtr())); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, On).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0036 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0036, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_OFF); + + std::string taskId = "1234"; + std::string testType = "block"; + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(taskId)); + EXPECT_TRUE(data.WriteString(testType)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, Off).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0037 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0037, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_REG_EXT_CB); + + std::string extensionCid = "com.exmpale.ext:1234"; + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(extensionCid)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, RegisterExtCallback).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0038 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0038, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_REG_EXT_CB); + + std::string extensionCid = "com.exmpale.ext:1234"; + auto callback = std::make_shared(); + EXPECT_NE(callback, nullptr); + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(extensionCid)); + EXPECT_TRUE(data.WriteRemoteObject(callback->AsObject().GetRefPtr())); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, RegisterExtCallback).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0039 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0039, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_REG_EXT_CB); + + std::string extensionCid = "com.exmpale.ext:1"; + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(extensionCid)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, UnregisterAllExtCallback).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} + +/** + * @tc.name: PrintServiceStubTest_0040 + * @tc.desc: Verify the capability function. + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(PrintServiceStubTest, PrintServiceStubTest_0040, TestSize.Level1) +{ + MessageParcel data; + MessageParcel reply; + MessageOption option(MessageOption::TF_SYNC); + uint32_t code = static_cast(CMD_REG_EXT_CB); + + std::string extensionId = "com.exmpale.ext"; + EXPECT_TRUE(data.WriteInterfaceToken(IPrintCallback::GetDescriptor())); + EXPECT_TRUE(data.WriteString(extensionId)); + + auto stub = std::make_shared(); + EXPECT_NE(stub, nullptr); + ON_CALL(*stub, LoadExtSuccess).WillByDefault(Return(E_PRINT_NONE)); + EXPECT_TRUE(static_cast(stub->OnRemoteRequest(code, data, reply, option))); +} +} // namespace Print +} // namespace OHOS -- Gitee From 8b318a21cf7d2e5ff64e5c9e26a0979c5ceeaf98 Mon Sep 17 00:00:00 2001 From: xiongqiao Date: Thu, 13 Jul 2023 11:02:49 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0tdd=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B=20Signed-off-by:xiongqiao3@huawei.com?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiongqiao --- services/include/print_service_helper.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/services/include/print_service_helper.h b/services/include/print_service_helper.h index 6bca10c0..2a3cee1f 100644 --- a/services/include/print_service_helper.h +++ b/services/include/print_service_helper.h @@ -18,6 +18,8 @@ #include #include "ability_manager_client.h" +#include "bundle_mgr_proxy.h" +#include "bundle_mgr_client.h" #include "system_ability.h" namespace OHOS::Print { @@ -28,6 +30,10 @@ public: virtual bool StartAbility(const AAFwk::Want &want); virtual sptr GetBundleMgr(); virtual bool QueryAccounts(std::vector &accountList); + virtual bool QueryExtension(sptr mgr, int userId, + std::vector &extensionInfos); + virtual bool QueryNameForUid(sptr mgr, int32_t userId, std::string& name); + virtual bool IsSyncMode(); }; } // namespace OHOS #endif // PRINT_SERVICE_HELPER_H -- Gitee From f21b6068d87a01f032cb067476a03e7b28d386c3 Mon Sep 17 00:00:00 2001 From: xiongqiao Date: Thu, 13 Jul 2023 11:09:48 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0tdd=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B=20Signed-off-by:xiongqiao3@huawei.com?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiongqiao --- frameworks/kits/extension/src/js_print_extension.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/frameworks/kits/extension/src/js_print_extension.cpp b/frameworks/kits/extension/src/js_print_extension.cpp index a2896cd9..52e89c42 100644 --- a/frameworks/kits/extension/src/js_print_extension.cpp +++ b/frameworks/kits/extension/src/js_print_extension.cpp @@ -142,14 +142,19 @@ void JsPrintExtension::OnStart(const AAFwk::Want &want) NativeValue *nativeWant = reinterpret_cast(napiWant); NativeValue *argv[] = { nativeWant }; CallObjectMethod("onCreate", argv, NapiPrintUtils::ARGC_ONE); + RegisterCb(); + PrintManagerClient::GetInstance()->LoadExtSuccess(extensionId_); + PRINT_HILOGD("%{public}s end.", __func__); +} + +void JsPrintExtension::RegisterCb() +{ RegisterDiscoveryCb(); RegisterConnectionCb(); RegisterPrintJobCb(); RegisterPreviewCb(); RegisterQueryCapCb(); RegisterExtensionCb(); - PrintManagerClient::GetInstance()->LoadExtSuccess(extensionId_); - PRINT_HILOGD("%{public}s end.", __func__); } void JsPrintExtension::OnStop() @@ -247,6 +252,7 @@ void JsPrintExtension::OnCommand(const AAFwk::Want &want, bool restart, int star return; } PrintManagerClient::GetInstance()->LoadExtSuccess(extensionId_); + RegisterCb(); PRINT_HILOGD("%{public}s end.", __func__); } -- Gitee From 1b549ccb289cf47c6ecc0b9c63fb1f139622e2fd Mon Sep 17 00:00:00 2001 From: xiongqiao Date: Thu, 13 Jul 2023 14:11:55 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0tdd=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B=20Signed-off-by:xiongqiao3@huawei.com?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiongqiao --- services/src/print_service_ability.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/src/print_service_ability.cpp b/services/src/print_service_ability.cpp index f3e3b7af..e0c025aa 100644 --- a/services/src/print_service_ability.cpp +++ b/services/src/print_service_ability.cpp @@ -33,6 +33,7 @@ #include "printer_info.h" #include "print_utils.h" #include "string_wrapper.h" +#include "system_ability.h" #include "system_ability_definition.h" #include "want_params_wrapper.h" #include "common_event_data.h" @@ -49,6 +50,8 @@ using namespace OHOS::HiviewDFX; using namespace Security::AccessToken; using json = nlohmann::json; +const uint32_t MAX_RETRY_TIMES = 10; +const uint32_t START_ABILITY_INTERVAL = 6; const uint32_t ASYNC_CMD_DELAY = 10; const int64_t INIT_INTERVAL = 5000L; @@ -75,6 +78,8 @@ static const std::string QUEUE_JOB_LIST_CHANGED = "queuedJobListChanged"; static const std::string ACTION_QUEUE_JOB_LIST_CHANGED = "action.printkit.queuedJobListChanged"; static const std::string QUEUE_JOB_LIST_PRINTING = "printing"; static const std::string QUEUE_JOB_LIST_COMPLETED = "completed"; +static const std::string QUEUE_JOB_LIST_BLOCKED = "blocked"; +static const std::string QUEUE_JOB_LIST_CLEAR_BLOCKED = "clear_blocked"; static bool publishState = false; -- Gitee From f4dd5d76f62128ea4c553604394115de39c2c3ed Mon Sep 17 00:00:00 2001 From: xiongqiao Date: Thu, 13 Jul 2023 14:52:01 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=B7=BB=E5=8A=A0tdd=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B=20Signed-off-by:xiongqiao3@huawei.com?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xiongqiao --- services/src/print_service_ability.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/services/src/print_service_ability.cpp b/services/src/print_service_ability.cpp index e0c025aa..ca3e1f06 100644 --- a/services/src/print_service_ability.cpp +++ b/services/src/print_service_ability.cpp @@ -33,7 +33,6 @@ #include "printer_info.h" #include "print_utils.h" #include "string_wrapper.h" -#include "system_ability.h" #include "system_ability_definition.h" #include "want_params_wrapper.h" #include "common_event_data.h" @@ -50,8 +49,6 @@ using namespace OHOS::HiviewDFX; using namespace Security::AccessToken; using json = nlohmann::json; -const uint32_t MAX_RETRY_TIMES = 10; -const uint32_t START_ABILITY_INTERVAL = 6; const uint32_t ASYNC_CMD_DELAY = 10; const int64_t INIT_INTERVAL = 5000L; -- Gitee