1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <gtest/gtest.h>
17
18 #include "ui_service_stub.h"
19 #include "ui_service_proxy.h"
20 #include "hilog_tag_wrapper.h"
21 #include "mock_ability_token.h"
22
23 using namespace testing::ext;
24 using namespace OHOS::AAFwk;
25
26 namespace OHOS {
27 namespace AbilityRuntime {
28 class MockUIServiceStubTest : public AAFwk::UIServiceStub {
29 public:
30 MockUIServiceStubTest() = default;
31 ~MockUIServiceStubTest() override = default;
SendData(sptr<IRemoteObject> hostProxy,OHOS::AAFwk::WantParams & data)32 int32_t SendData(sptr<IRemoteObject> hostProxy, OHOS::AAFwk::WantParams &data) override
33 {
34 return 0;
35 }
36 };
37 class UIServiceStubTest : public testing::Test {
38 public:
39 static void SetUpTestCase();
40 static void TearDownTestCase();
41 void SetUp() override;
42 void TearDown() override;
43 void WriteInterfaceToken(MessageParcel &data);
44 };
45
SetUpTestCase(void)46 void UIServiceStubTest::SetUpTestCase(void)
47 {}
48
TearDownTestCase(void)49 void UIServiceStubTest::TearDownTestCase(void)
50 {}
51
SetUp()52 void UIServiceStubTest::SetUp()
53 {}
54
TearDown()55 void UIServiceStubTest::TearDown()
56 {}
57
WriteInterfaceToken(MessageParcel & data)58 void UIServiceStubTest::WriteInterfaceToken(MessageParcel& data)
59 {
60 data.WriteInterfaceToken(UIServiceStub::GetDescriptor());
61 }
62
63 /**
64 * @tc.number: OnRemoteRequest_0100
65 * @tc.name: OnRemoteRequest
66 * @tc.desc: UIServiceStub OnRemoteRequest
67 */
68 HWTEST_F(UIServiceStubTest, OnRemoteRequest_0100, TestSize.Level1)
69 {
70 TAG_LOGI(AAFwkTag::TEST, "OnRemoteRequest_0100 start");
71 std::shared_ptr<UIServiceStub> stub = std::make_shared<MockUIServiceStubTest>();
72 MessageParcel data;
73 MessageParcel reply;
74 MessageOption option;
75
76 auto result = stub->OnRemoteRequest(IUIService::SEND_DATA, data, reply, option);
77 EXPECT_EQ(result, ERR_INVALID_STATE);
78 TAG_LOGI(AAFwkTag::TEST, "OnRemoteRequest_0100 end");
79 }
80
81 /**
82 * @tc.number: OnRemoteRequest_0200
83 * @tc.name: OnRemoteRequest
84 * @tc.desc: UIServiceStub OnRemoteRequest
85 */
86 HWTEST_F(UIServiceStubTest, OnRemoteRequest_0200, TestSize.Level1)
87 {
88 TAG_LOGI(AAFwkTag::TEST, "OnRemoteRequest_0200 start");
89 std::shared_ptr<UIServiceStub> stub = std::make_shared<MockUIServiceStubTest>();
90
91 MessageParcel data;
92 MessageParcel reply;
93 MessageOption option;
94
95 data.WriteInterfaceToken(UIServiceStub::GetDescriptor());
96
97 AAFwk::Want want;
98 const std::string name = "name";
99 const std::string dataStr = "data";
100 sptr<AppExecFwk::MockAbilityToken> token = new (std::nothrow) AppExecFwk::MockAbilityToken();
101 data.WriteRemoteObject(token);
102 data.WriteParcelable(&want);
103 if (!data.WriteString(name)) {
104 return;
105 }
106 if (!data.WriteString(dataStr)) {
107 return;
108 }
109
110 int res = stub->OnRemoteRequest(IUIService::SEND_DATA, data, reply, option);
111 EXPECT_EQ(res, ERR_OK);
112 TAG_LOGI(AAFwkTag::TEST, "OnRemoteRequest_0200 end");
113 }
114
115 /**
116 * @tc.number: OnSendData_0100
117 * @tc.name: OnSendData
118 * @tc.desc: UIServiceStub OnSendData
119 */
120 HWTEST_F(UIServiceStubTest, OnSendData_0100, TestSize.Level1)
121 {
122 TAG_LOGI(AAFwkTag::TEST, "OnSendData_0100 start");
123 std::shared_ptr<UIServiceStub> stub = std::make_shared<MockUIServiceStubTest>();
124
125 MessageParcel data;
126 MessageParcel reply;
127
128 data.WriteInterfaceToken(UIServiceStub::GetDescriptor());
129
130 AAFwk::Want want;
131 const std::string name = "name";
132 const std::string dataStr = "data";
133 sptr<AppExecFwk::MockAbilityToken> token = new (std::nothrow) AppExecFwk::MockAbilityToken();
134 data.WriteRemoteObject(token);
135 data.WriteParcelable(&want);
136 if (!data.WriteString(name)) {
137 return;
138 }
139 if (!data.WriteString(dataStr)) {
140 return;
141 }
142
143 int res = stub->OnSendData(data, reply);
144 EXPECT_EQ(res, ERR_INVALID_VALUE);
145 TAG_LOGI(AAFwkTag::TEST, "OnSendData_0100 end");
146 }
147
148 /**
149 * @tc.number: OnSendData_0200
150 * @tc.name: OnSendData
151 * @tc.desc: UIServiceStub OnSendData
152 */
153 HWTEST_F(UIServiceStubTest, OnSendData_0200, TestSize.Level1)
154 {
155 TAG_LOGI(AAFwkTag::TEST, "OnSendData_0200 start");
156 std::shared_ptr<UIServiceStub> stub = std::make_shared<MockUIServiceStubTest>();
157
158 MessageParcel data;
159 MessageParcel reply;
160 sptr<AppExecFwk::MockAbilityToken> token = new (std::nothrow) AppExecFwk::MockAbilityToken();
161 data.WriteRemoteObject(token);
162
163 data.WriteInterfaceToken(UIServiceStub::GetDescriptor());
164
165 auto result = stub->OnSendData(data, reply);
166 EXPECT_EQ(result, NO_ERROR);
167 TAG_LOGI(AAFwkTag::TEST, "OnSendData_0200 end");
168 }
169 } // namespace AbilityRuntime
170 } // namespace OHOS
171