179a732c7Sopenharmony_ci/* 279a732c7Sopenharmony_ci * Copyright (c) 2022-2023 Huawei Device Co., Ltd. 379a732c7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 479a732c7Sopenharmony_ci * you may not use this file except in compliance with the License. 579a732c7Sopenharmony_ci * You may obtain a copy of the License at 679a732c7Sopenharmony_ci * 779a732c7Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 879a732c7Sopenharmony_ci * 979a732c7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1079a732c7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1179a732c7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1279a732c7Sopenharmony_ci * See the License for the specific language governing permissions and 1379a732c7Sopenharmony_ci * limitations under the License. 1479a732c7Sopenharmony_ci */ 1579a732c7Sopenharmony_ci 1679a732c7Sopenharmony_ci#include "UTTest_ipc_client_stub.h" 1779a732c7Sopenharmony_ci 1879a732c7Sopenharmony_ci#include <unistd.h> 1979a732c7Sopenharmony_ci 2079a732c7Sopenharmony_ci#include "device_manager.h" 2179a732c7Sopenharmony_ci#include "device_manager_impl.h" 2279a732c7Sopenharmony_ci#include "device_manager_ipc_interface_code.h" 2379a732c7Sopenharmony_ci#include "dm_constants.h" 2479a732c7Sopenharmony_ci#include "dm_device_info.h" 2579a732c7Sopenharmony_ci#include "mock/mock_ipc_client_stub.h" 2679a732c7Sopenharmony_ci#include "ipc_remote_broker.h" 2779a732c7Sopenharmony_ci#include "iremote_object.h" 2879a732c7Sopenharmony_ci#include "iservice_registry.h" 2979a732c7Sopenharmony_ci#include "system_ability_definition.h" 3079a732c7Sopenharmony_ci#include "ipc_client_manager.h" 3179a732c7Sopenharmony_ci#include "ipc_set_useroperation_req.h" 3279a732c7Sopenharmony_ci#include "ipc_cmd_register.h" 3379a732c7Sopenharmony_ci#include "ipc_skeleton.h" 3479a732c7Sopenharmony_ci#include "ipc_types.h" 3579a732c7Sopenharmony_ci#include "ipc_rsp.h" 3679a732c7Sopenharmony_ci#include "ipc_def.h" 3779a732c7Sopenharmony_ci 3879a732c7Sopenharmony_cinamespace OHOS { 3979a732c7Sopenharmony_cinamespace DistributedHardware { 4079a732c7Sopenharmony_civoid IpcClientStubTest::SetUp() 4179a732c7Sopenharmony_ci{ 4279a732c7Sopenharmony_ci} 4379a732c7Sopenharmony_ci 4479a732c7Sopenharmony_civoid IpcClientStubTest::TearDown() 4579a732c7Sopenharmony_ci{ 4679a732c7Sopenharmony_ci} 4779a732c7Sopenharmony_ci 4879a732c7Sopenharmony_civoid IpcClientStubTest::SetUpTestCase() 4979a732c7Sopenharmony_ci{ 5079a732c7Sopenharmony_ci} 5179a732c7Sopenharmony_ci 5279a732c7Sopenharmony_civoid IpcClientStubTest::TearDownTestCase() 5379a732c7Sopenharmony_ci{ 5479a732c7Sopenharmony_ci} 5579a732c7Sopenharmony_ci 5679a732c7Sopenharmony_cinamespace { 5779a732c7Sopenharmony_ci/** 5879a732c7Sopenharmony_ci * @tc.name: OnRemoteRequest_001 5979a732c7Sopenharmony_ci * @tc.desc: 1. set MessageOption not null 6079a732c7Sopenharmony_ci * set MessageParcel not null 6179a732c7Sopenharmony_ci * set MessageParcel not null 6279a732c7Sopenharmony_ci * 2. set set code is 999 6379a732c7Sopenharmony_ci * 3. call IpcClientStub OnRemoteRequest with parameter 6479a732c7Sopenharmony_ci * 4. check result is ERR_DM_FAILED 6579a732c7Sopenharmony_ci * @tc.type: FUNC 6679a732c7Sopenharmony_ci * @tc.require: AR000GHSJK 6779a732c7Sopenharmony_ci */ 6879a732c7Sopenharmony_ciHWTEST_F(IpcClientStubTest, OnRemoteRequest_001, testing::ext::TestSize.Level0) 6979a732c7Sopenharmony_ci{ 7079a732c7Sopenharmony_ci // 1. set MessageOption not null 7179a732c7Sopenharmony_ci MessageOption option; 7279a732c7Sopenharmony_ci // set MessageParcel not null 7379a732c7Sopenharmony_ci MessageParcel data; 7479a732c7Sopenharmony_ci // set MessageParcel not null 7579a732c7Sopenharmony_ci MessageParcel reply; 7679a732c7Sopenharmony_ci // 2. set set code is 999 7779a732c7Sopenharmony_ci int code = 999; 7879a732c7Sopenharmony_ci sptr<IpcClientStub> instance(new IpcClientStub()); 7979a732c7Sopenharmony_ci // 3. call IpcClientStub OnRemoteRequest with parameter 8079a732c7Sopenharmony_ci int32_t result = instance->OnRemoteRequest(code, data, reply, option); 8179a732c7Sopenharmony_ci if (result != DM_OK) { 8279a732c7Sopenharmony_ci result = ERR_DM_FAILED; 8379a732c7Sopenharmony_ci } 8479a732c7Sopenharmony_ci // 4. check result is ERR_DM_FAILED 8579a732c7Sopenharmony_ci ASSERT_EQ(result, ERR_DM_FAILED); 8679a732c7Sopenharmony_ci} 8779a732c7Sopenharmony_ci 8879a732c7Sopenharmony_ci/** 8979a732c7Sopenharmony_ci * @tc.name: OnRemoteRequest_002 9079a732c7Sopenharmony_ci * @tc.desc: 1. set MessageOption not null 9179a732c7Sopenharmony_ci * set MessageParcel not null 9279a732c7Sopenharmony_ci * set MessageParcel not null 9379a732c7Sopenharmony_ci * 2. set set code is SERVER_DEVICE_FA_NOTIFY 9479a732c7Sopenharmony_ci * 3. call IpcClientStub OnRemoteRequest with parameter 9579a732c7Sopenharmony_ci * 4. check result is ERR_DM_IPC_READ_FAILED 9679a732c7Sopenharmony_ci * @tc.type: FUNC 9779a732c7Sopenharmony_ci * @tc.require: AR000GHSJK 9879a732c7Sopenharmony_ci */ 9979a732c7Sopenharmony_ciHWTEST_F(IpcClientStubTest, OnRemoteRequest_002, testing::ext::TestSize.Level0) 10079a732c7Sopenharmony_ci{ 10179a732c7Sopenharmony_ci // 1. set MessageOption not null 10279a732c7Sopenharmony_ci MessageOption option; 10379a732c7Sopenharmony_ci // set MessageParcel not null 10479a732c7Sopenharmony_ci MessageParcel data; 10579a732c7Sopenharmony_ci // set MessageParcel not null 10679a732c7Sopenharmony_ci MessageParcel reply; 10779a732c7Sopenharmony_ci // 2. set set code is SERVER_DEVICE_FA_NOTIFY 10879a732c7Sopenharmony_ci int code = SERVER_DEVICE_FA_NOTIFY; 10979a732c7Sopenharmony_ci sptr<IpcClientStub> instance(new IpcClientStub()); 11079a732c7Sopenharmony_ci // 3. call IpcClientStub OnRemoteRequest with parameter 11179a732c7Sopenharmony_ci int ret = instance->OnRemoteRequest(code, data, reply, option); 11279a732c7Sopenharmony_ci // 4. check result is ERR_DM_IPC_READ_FAILED 11379a732c7Sopenharmony_ci ASSERT_EQ(ret, ERR_DM_IPC_READ_FAILED); 11479a732c7Sopenharmony_ci} 11579a732c7Sopenharmony_ci 11679a732c7Sopenharmony_ci/** 11779a732c7Sopenharmony_ci * @tc.name: OnRemoteRequest_003 11879a732c7Sopenharmony_ci * @tc.type: FUNC 11979a732c7Sopenharmony_ci */ 12079a732c7Sopenharmony_ciHWTEST_F(IpcClientStubTest, OnRemoteRequest_003, testing::ext::TestSize.Level0) 12179a732c7Sopenharmony_ci{ 12279a732c7Sopenharmony_ci MessageOption option; 12379a732c7Sopenharmony_ci MessageParcel data; 12479a732c7Sopenharmony_ci MessageParcel reply; 12579a732c7Sopenharmony_ci int code = GET_TRUST_DEVICE_LIST; 12679a732c7Sopenharmony_ci std::shared_ptr<MockIpcClientStub> mockInstance = std::make_shared<MockIpcClientStub>(); 12779a732c7Sopenharmony_ci std::shared_ptr<IpcClientStub> ipcClientStub= mockInstance; 12879a732c7Sopenharmony_ci EXPECT_CALL(*mockInstance, OnRemoteRequest(testing::_, testing::_, testing::_, testing::_)) 12979a732c7Sopenharmony_ci .Times(1).WillOnce(testing::Return(DM_OK)); 13079a732c7Sopenharmony_ci std::shared_ptr<IpcClientStub> instance = std::shared_ptr<IpcClientStub>(ipcClientStub); 13179a732c7Sopenharmony_ci int ret = instance->OnRemoteRequest(code, data, reply, option); 13279a732c7Sopenharmony_ci ASSERT_EQ(ret, DM_OK); 13379a732c7Sopenharmony_ci} 13479a732c7Sopenharmony_ci 13579a732c7Sopenharmony_ci/** 13679a732c7Sopenharmony_ci * @tc.name: SendCmd_001 13779a732c7Sopenharmony_ci * @tc.desc: 1. set set code is SERVER_DEVICE_FA_NOTIFY 13879a732c7Sopenharmony_ci * set req is nullptr 13979a732c7Sopenharmony_ci * set rsp is nullptr 14079a732c7Sopenharmony_ci * 2. call IpcClientStub SendCmd with parameter 14179a732c7Sopenharmony_ci * 3. check result is ERR_DM_IPC_SEND_REQUEST_FAILED 14279a732c7Sopenharmony_ci * @tc.type: FUNC 14379a732c7Sopenharmony_ci * @tc.require: AR000GHSJK 14479a732c7Sopenharmony_ci */ 14579a732c7Sopenharmony_ciHWTEST_F(IpcClientStubTest, SendCmd_001, testing::ext::TestSize.Level0) 14679a732c7Sopenharmony_ci{ 14779a732c7Sopenharmony_ci // 1. set set code is SERVER_DEVICE_FA_NOTIFY 14879a732c7Sopenharmony_ci int cmdCode = SERVER_DEVICE_FA_NOTIFY; 14979a732c7Sopenharmony_ci // set req is nullptr 15079a732c7Sopenharmony_ci std::shared_ptr<IpcReq> req = nullptr; 15179a732c7Sopenharmony_ci // set rsp is nullptr 15279a732c7Sopenharmony_ci std::shared_ptr<IpcRsp> rsp = nullptr; 15379a732c7Sopenharmony_ci sptr<IpcClientStub> instance(new IpcClientStub()); 15479a732c7Sopenharmony_ci // 2. call IpcClientStub SendCmd with parameter 15579a732c7Sopenharmony_ci int ret = instance->SendCmd(cmdCode, req, rsp); 15679a732c7Sopenharmony_ci // 3. check result is ERR_DM_IPC_SEND_REQUEST_FAILED 15779a732c7Sopenharmony_ci ASSERT_EQ(ret, ERR_DM_IPC_SEND_REQUEST_FAILED); 15879a732c7Sopenharmony_ci} 15979a732c7Sopenharmony_ci 16079a732c7Sopenharmony_ci/** 16179a732c7Sopenharmony_ci * @tc.name: SendCmd_002 16279a732c7Sopenharmony_ci * @tc.type: FUNC 16379a732c7Sopenharmony_ci */ 16479a732c7Sopenharmony_ciHWTEST_F(IpcClientStubTest, SendCmd_002, testing::ext::TestSize.Level0) 16579a732c7Sopenharmony_ci{ 16679a732c7Sopenharmony_ci int result = 305; 16779a732c7Sopenharmony_ci int cmdCode = IPC_MSG_BUTT; 16879a732c7Sopenharmony_ci std::shared_ptr<IpcReq> req = nullptr; 16979a732c7Sopenharmony_ci std::shared_ptr<IpcRsp> rsp = nullptr; 17079a732c7Sopenharmony_ci sptr<IpcClientStub> instance(new IpcClientStub()); 17179a732c7Sopenharmony_ci int ret = instance->SendCmd(cmdCode, req, rsp); 17279a732c7Sopenharmony_ci ASSERT_EQ(ret, result); 17379a732c7Sopenharmony_ci} 17479a732c7Sopenharmony_ci 17579a732c7Sopenharmony_ci/** 17679a732c7Sopenharmony_ci * @tc.name: SendCmd_003 17779a732c7Sopenharmony_ci * @tc.type: FUNC 17879a732c7Sopenharmony_ci */ 17979a732c7Sopenharmony_ciHWTEST_F(IpcClientStubTest, SendCmd_003, testing::ext::TestSize.Level0) 18079a732c7Sopenharmony_ci{ 18179a732c7Sopenharmony_ci int cmdCode = GET_TRUST_DEVICE_LIST; 18279a732c7Sopenharmony_ci std::shared_ptr<IpcReq> req = std::make_shared<IpcReq>(); 18379a732c7Sopenharmony_ci std::shared_ptr<IpcRsp> rsp = std::make_shared<IpcRsp>(); 18479a732c7Sopenharmony_ci std::shared_ptr<MockIpcClientStub> mockInstance = std::make_shared<MockIpcClientStub>(); 18579a732c7Sopenharmony_ci std::shared_ptr<IpcClientStub> ipcClientStub= mockInstance; 18679a732c7Sopenharmony_ci EXPECT_CALL(*mockInstance, SendCmd(testing::_, testing::_, testing::_)) 18779a732c7Sopenharmony_ci .Times(1).WillOnce(testing::Return(DM_OK)); 18879a732c7Sopenharmony_ci std::shared_ptr<IpcClientStub> instance = std::shared_ptr<IpcClientStub>(ipcClientStub); 18979a732c7Sopenharmony_ci int ret = instance->SendCmd(cmdCode, req, rsp); 19079a732c7Sopenharmony_ci ASSERT_EQ(ret, DM_OK); 19179a732c7Sopenharmony_ci} 19279a732c7Sopenharmony_ci 19379a732c7Sopenharmony_ci/** 19479a732c7Sopenharmony_ci * @tc.name: SendCmd_004 19579a732c7Sopenharmony_ci * @tc.type: FUNC 19679a732c7Sopenharmony_ci */ 19779a732c7Sopenharmony_ciHWTEST_F(IpcClientStubTest, SendCmd_004, testing::ext::TestSize.Level0) 19879a732c7Sopenharmony_ci{ 19979a732c7Sopenharmony_ci int result = 305; 20079a732c7Sopenharmony_ci int cmdCode = -1; 20179a732c7Sopenharmony_ci std::shared_ptr<IpcReq> req = nullptr; 20279a732c7Sopenharmony_ci std::shared_ptr<IpcRsp> rsp = nullptr; 20379a732c7Sopenharmony_ci sptr<IpcClientStub> instance = sptr<IpcClientStub>(new IpcClientStub()); 20479a732c7Sopenharmony_ci int ret = instance->SendCmd(cmdCode, req, rsp); 20579a732c7Sopenharmony_ci ASSERT_EQ(ret, result); 20679a732c7Sopenharmony_ci} 20779a732c7Sopenharmony_ci} // namespace 20879a732c7Sopenharmony_ci} // namespace DistributedHardware 20979a732c7Sopenharmony_ci} // namespace OHOS 210