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