1 /*
2 * Copyright (c) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <gtest/gtest.h>
17 #include "iremote_proxy.h"
18 #include "want_receiver_stub_impl_mock.h"
19
20 using namespace testing::ext;
21 using namespace testing;
22
23 namespace OHOS {
24 namespace AAFwk {
25 class WantReceiverStubTest : public testing::Test {
26 public:
27 static void SetUpTestCase(void);
28 static void TearDownTestCase(void);
29 void SetUp();
30 void TearDown();
31 void WriteInterfaceToken(MessageParcel& data);
32 sptr<WantReceiverStubImplMock> stub_{ nullptr };
33 };
34
SetUpTestCase(void)35 void WantReceiverStubTest::SetUpTestCase(void)
36 {}
TearDownTestCase(void)37 void WantReceiverStubTest::TearDownTestCase(void)
38 {}
TearDown()39 void WantReceiverStubTest::TearDown()
40 {}
41
SetUp()42 void WantReceiverStubTest::SetUp()
43 {
44 stub_ = new WantReceiverStubImplMock();
45 }
46
WriteInterfaceToken(MessageParcel & data)47 void WantReceiverStubTest::WriteInterfaceToken(MessageParcel& data)
48 {
49 data.WriteInterfaceToken(WantReceiverStubImplMock::GetDescriptor());
50 }
51
52 /*
53 * Feature: WantReceiverStub
54 * Function: OnRemoteRequest
55 * SubFunction: NA
56 * FunctionPoints: WantReceiverStub OnRemoteRequest
57 * EnvConditions: The code which not exist
58 * CaseDescription: Verify that on remote request is abnormal
59 */
60 HWTEST_F(WantReceiverStubTest, WantReceiverStubTest_OnRemoteRequest_001, TestSize.Level1)
61 {
62 MessageParcel data;
63 MessageParcel reply;
64 MessageOption option;
65
66 WriteInterfaceToken(data);
67 int res = stub_->OnRemoteRequest(10000, data, reply, option);
68
69 EXPECT_EQ(res, IPC_STUB_UNKNOW_TRANS_ERR);
70 }
71
72 /*
73 * Feature: WantReceiverStub
74 * Function: OnRemoteRequest
75 * SubFunction: NA
76 * FunctionPoints: WantReceiverStub OnRemoteRequest
77 * EnvConditions: Description abnormal
78 * CaseDescription: Verify that on remote request is abnormal
79 */
80 HWTEST_F(WantReceiverStubTest, WantReceiverStubTest_OnRemoteRequest_002, TestSize.Level1)
81 {
82 MessageParcel data;
83 MessageParcel reply;
84 MessageOption option;
85
86 int res = stub_->OnRemoteRequest(IWantSender::WANT_SENDER_SEND, data, reply, option);
87
88 EXPECT_EQ(res, ERR_INVALID_STATE);
89 }
90
91 /*
92 * Feature: WantReceiverStub
93 * Function: OnRemoteRequest
94 * SubFunction: NA
95 * FunctionPoints: WantReceiverStub OnRemoteRequest
96 * EnvConditions: Code is WANT_SENDER_SEND
97 * CaseDescription: Verify that on remote request is normal
98 */
99 HWTEST_F(WantReceiverStubTest, WantReceiverStubTest_OnRemoteRequest_003, TestSize.Level1)
100 {
101 MessageParcel data;
102 MessageParcel reply;
103 MessageOption option;
104
105 SenderInfo info;
106 WriteInterfaceToken(data);
107 data.WriteParcelable(&info);
108
109 int res = stub_->OnRemoteRequest(IWantSender::WANT_SENDER_SEND, data, reply, option);
110
111 EXPECT_EQ(res, NO_ERROR);
112 }
113
114 /*
115 * Feature: WantReceiverStub
116 * Function: OnRemoteRequest
117 * SubFunction: NA
118 * FunctionPoints: WantReceiverStub SendInner
119 * EnvConditions: Valid parameter
120 * CaseDescription: Verify the function SendInner request is normal.
121 */
122 HWTEST_F(WantReceiverStubTest, WantReceiverStubTest_SendInner_001, TestSize.Level1)
123 {
124 MessageParcel data;
125 MessageParcel reply;
126 MessageOption option;
127
128 data.WriteInt32(1);
129
130 int res = stub_->SendInner(data, reply);
131
132 EXPECT_EQ(res, NO_ERROR);
133 }
134
135 /*
136 * Feature: WantReceiverStub
137 * Function: PerformReceiveInner
138 * SubFunction: NA
139 * FunctionPoints: WantReceiverStub PerformReceiveInner
140 * EnvConditions: Invalid parameter
141 * CaseDescription: Verify the function PerformReceiveInner request is abnormal.
142 */
143 HWTEST_F(WantReceiverStubTest, WantReceiverStubTest_PerformReceiveInner_001, TestSize.Level1)
144 {
145 MessageParcel data;
146 MessageParcel reply;
147
148 int res = stub_->PerformReceiveInner(data, reply);
149
150 EXPECT_EQ(res, ERR_INVALID_VALUE);
151 }
152
153 /*
154 * Feature: WantReceiverStub
155 * Function: PerformReceiveInner
156 * SubFunction: NA
157 * FunctionPoints: WantReceiverStub PerformReceiveInner
158 * EnvConditions: Invalid parameter
159 * CaseDescription: Verify the function PerformReceiveInner request is abnormal.
160 */
161 HWTEST_F(WantReceiverStubTest, WantReceiverStubTest_PerformReceiveInner_002, TestSize.Level1)
162 {
163 MessageParcel data;
164 MessageParcel reply;
165
166 Want want;
167 data.WriteParcelable(&want);
168
169 int res = stub_->PerformReceiveInner(data, reply);
170
171 EXPECT_EQ(res, ERR_INVALID_VALUE);
172 }
173
174 /*
175 * Feature: WantReceiverStub
176 * Function: PerformReceiveInner
177 * SubFunction: NA
178 * FunctionPoints: WantReceiverStub PerformReceiveInner
179 * EnvConditions: Valid parameter
180 * CaseDescription: Verify the function PerformReceiveInner request is normal.
181 */
182 HWTEST_F(WantReceiverStubTest, WantReceiverStubTest_PerformReceiveInner_003, TestSize.Level1)
183 {
184 MessageParcel data;
185 MessageParcel reply;
186
187 Want want;
188 WantParams wantParams;
189 int senddingUser = 1000;
190 bool sticky = true;
191 bool serialized = true;
192 std::string bundleName = "com.ix.helloworld";
193 int resultCode = 1;
194
195 EXPECT_EQ(data.WriteParcelable(&want), true);
196 data.WriteInt32(resultCode);
197 data.WriteString16(Str8ToStr16(bundleName));
198 EXPECT_EQ(data.WriteParcelable(&wantParams), true);
199 data.WriteBool(serialized);
200 data.WriteBool(sticky);
201 data.WriteInt32(senddingUser);
202
203 int res = stub_->PerformReceiveInner(data, reply);
204
205 EXPECT_EQ(res, NO_ERROR);
206 }
207 } // namespace AAFwk
208 } // namespace OHOS
209