1 /*
2 * Copyright (c) 2021-2022 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 "ability_schedule_stub_mock.h"
18
19 using namespace testing::ext;
20
21 namespace OHOS {
22 namespace AAFwk {
23 class AbilitySchedulerStubTest : public testing::Test {
24 public:
25 static void SetUpTestCase(void);
26 static void TearDownTestCase(void);
27 void SetUp();
28 void TearDown();
29 void WriteInterfaceToken(MessageParcel& data);
30 sptr<AbilitySchedulerStubMock> stub_{ nullptr };
31 };
32
SetUpTestCase(void)33 void AbilitySchedulerStubTest::SetUpTestCase(void)
34 {}
TearDownTestCase(void)35 void AbilitySchedulerStubTest::TearDownTestCase(void)
36 {}
TearDown(void)37 void AbilitySchedulerStubTest::TearDown(void)
38 {}
39
SetUp(void)40 void AbilitySchedulerStubTest::SetUp(void)
41 {
42 stub_ = new AbilitySchedulerStubMock();
43 }
WriteInterfaceToken(MessageParcel & data)44 void AbilitySchedulerStubTest::WriteInterfaceToken(MessageParcel& data)
45 {
46 data.WriteInterfaceToken(AbilitySchedulerStub::GetDescriptor());
47 }
48
49 /*
50 * Feature: AbilitySchedulerStub
51 * Function: OnRemoteRequest
52 * SubFunction: NA
53 * FunctionPoints: AbilitySchedulerStub OnRemoteRequest
54 * EnvConditions: code is SCHEDULE_ABILITY_TRANSACTION
55 * CaseDescription: Verify the normal process of onremoterequest
56 */
57 HWTEST_F(AbilitySchedulerStubTest, AbilitySchedulerStub_001, TestSize.Level1)
58 {
59 MessageParcel data;
60 MessageParcel reply;
61 MessageOption option;
62
63 Want want;
64 LifeCycleStateInfo stateInfo;
65 WriteInterfaceToken(data);
66 data.WriteParcelable(&want);
67 data.WriteParcelable(&stateInfo);
68 auto res = stub_->OnRemoteRequest(IAbilityScheduler::SCHEDULE_ABILITY_TRANSACTION, data, reply, option);
69 EXPECT_EQ(res, NO_ERROR);
70 }
71
72 /*
73 * Feature: AbilitySchedulerStub
74 * Function: OnRemoteRequest
75 * SubFunction: NA
76 * FunctionPoints: AbilitySchedulerStub OnRemoteRequest
77 * EnvConditions: code is SCHEDULE_ABILITY_TRANSACTION
78 * CaseDescription: Verifying stateinfo is nullptr causes onremoterequest to fail
79 */
80 HWTEST_F(AbilitySchedulerStubTest, AbilitySchedulerStub_002, TestSize.Level1)
81 {
82 MessageParcel data;
83 MessageParcel reply;
84 MessageOption option;
85
86 Want want;
87 WriteInterfaceToken(data);
88 data.WriteParcelable(&want);
89 data.WriteParcelable(nullptr);
90 auto res = stub_->OnRemoteRequest(IAbilityScheduler::SCHEDULE_ABILITY_TRANSACTION, data, reply, option);
91 EXPECT_NE(res, NO_ERROR);
92 }
93
94 /*
95 * Feature: AbilitySchedulerStub
96 * Function: OnRemoteRequest
97 * SubFunction: NA
98 * FunctionPoints: AbilitySchedulerStub OnRemoteRequest
99 * EnvConditions: code is SEND_RESULT
100 * CaseDescription: Verify the normal process of onremoterequest
101 */
102 HWTEST_F(AbilitySchedulerStubTest, AbilitySchedulerStub_003, TestSize.Level1)
103 {
104 MessageParcel data;
105 MessageParcel reply;
106 MessageOption option;
107
108 Want want;
109 WriteInterfaceToken(data);
110 data.WriteInt32(1);
111 data.WriteInt32(1);
112 data.WriteParcelable(&want);
113
114 auto res = stub_->OnRemoteRequest(IAbilityScheduler::SEND_RESULT, data, reply, option);
115 EXPECT_EQ(res, NO_ERROR);
116 }
117
118 /*
119 * Feature: AbilitySchedulerStub
120 * Function: OnRemoteRequest
121 * SubFunction: NA
122 * FunctionPoints: AbilitySchedulerStub OnRemoteRequest
123 * EnvConditions: code is SEND_RESULT
124 * CaseDescription: Verifying want is nullptr causes onremoterequest to fail
125 */
126 HWTEST_F(AbilitySchedulerStubTest, AbilitySchedulerStub_004, TestSize.Level1)
127 {
128 MessageParcel data;
129 MessageParcel reply;
130 MessageOption option;
131 WriteInterfaceToken(data);
132 data.WriteInt32(1);
133 data.WriteParcelable(nullptr);
134
135 auto res = stub_->OnRemoteRequest(IAbilityScheduler::SEND_RESULT, data, reply, option);
136 EXPECT_NE(res, NO_ERROR);
137 }
138
139 /*
140 * Feature: AbilitySchedulerStub
141 * Function: OnRemoteRequest
142 * SubFunction: NA
143 * FunctionPoints: AbilitySchedulerStub OnRemoteRequest
144 * EnvConditions: code is SCHEDULE_ABILITY_CONNECT
145 * CaseDescription: Verify the normal and failed conditions of onremoterequest
146 */
147 HWTEST_F(AbilitySchedulerStubTest, AbilitySchedulerStub_005, TestSize.Level1)
148 {
149 MessageParcel data;
150 MessageParcel reply;
151 MessageOption option;
152
153 WriteInterfaceToken(data);
154 data.WriteParcelable(nullptr);
155
156 auto res = stub_->OnRemoteRequest(IAbilityScheduler::SCHEDULE_ABILITY_CONNECT, data, reply, option);
157 EXPECT_NE(res, NO_ERROR);
158
159 Want want;
160 WriteInterfaceToken(data);
161 data.WriteParcelable(&want);
162 auto res1 = stub_->OnRemoteRequest(IAbilityScheduler::SCHEDULE_ABILITY_CONNECT, data, reply, option);
163 EXPECT_EQ(res1, NO_ERROR);
164 }
165
166 /*
167 * Feature: AbilitySchedulerStub
168 * Function: OnRemoteRequest
169 * SubFunction: NA
170 * FunctionPoints: AbilitySchedulerStub OnRemoteRequest
171 * EnvConditions: code is SCHEDULE_ABILITY_DISCONNECT
172 * CaseDescription: Verify the normal conditions of onremoterequest
173 */
174 HWTEST_F(AbilitySchedulerStubTest, AbilitySchedulerStub_006, TestSize.Level1)
175 {
176 MessageParcel data;
177 MessageParcel reply;
178 MessageOption option;
179 WriteInterfaceToken(data);
180 auto res = stub_->OnRemoteRequest(IAbilityScheduler::SCHEDULE_ABILITY_DISCONNECT, data, reply, option);
181 EXPECT_EQ(res, ERR_INVALID_VALUE);
182 }
183
184 /*
185 * Feature: AbilitySchedulerStub
186 * Function: OnRemoteRequest
187 * SubFunction: NA
188 * FunctionPoints: AbilitySchedulerStub OnRemoteRequest
189 * EnvConditions: code is SCHEDULE_SAVE_ABILITY_STATE
190 * CaseDescription: Verify the failed conditions of onremoterequest
191 */
192 HWTEST_F(AbilitySchedulerStubTest, AbilitySchedulerStub_007, TestSize.Level1)
193 {
194 MessageParcel data;
195 MessageParcel reply;
196 MessageOption option;
197 WriteInterfaceToken(data);
198 auto res = stub_->OnRemoteRequest(IAbilityScheduler::SCHEDULE_SAVE_ABILITY_STATE, data, reply, option);
199 EXPECT_EQ(res, NO_ERROR);
200 }
201
202 /*
203 * Feature: AbilitySchedulerStub
204 * Function: OnRemoteRequest
205 * SubFunction: NA
206 * FunctionPoints: AbilitySchedulerStub OnRemoteRequest
207 * EnvConditions: code is default
208 * CaseDescription: Verify the normal conditions of onremoterequest
209 */
210 HWTEST_F(AbilitySchedulerStubTest, AbilitySchedulerStub_008, TestSize.Level1)
211 {
212 MessageParcel data;
213 MessageParcel reply;
214 MessageOption option;
215 WriteInterfaceToken(data);
216 auto res = stub_->OnRemoteRequest(INT_MAX, data, reply, option);
217 EXPECT_NE(res, NO_ERROR);
218 }
219
220 /**
221 * @tc.name: AbilitySchedulerStub_009
222 * @tc.desc: test NotifyContinuationResult
223 * @tc.type: FUNC
224 * @tc.require: AR000GI8IJ
225 */
226 HWTEST_F(AbilitySchedulerStubTest, AbilitySchedulerStub_009, TestSize.Level0)
227 {
228 MessageParcel data;
229 MessageParcel reply;
230 MessageOption option;
231 WriteInterfaceToken(data);
232 int32_t result = 0;
233 data.WriteInt32(result);
234 auto res = stub_->OnRemoteRequest(IAbilityScheduler::NOTIFY_CONTINUATION_RESULT, data, reply, option);
235 EXPECT_EQ(res, NO_ERROR);
236 }
237
238 /**
239 * @tc.name: AbilitySchedulerStub_0010
240 * @tc.desc: test NotifyContinuationResult
241 * @tc.type: FUNC
242 * @tc.require:
243 */
244 HWTEST_F(AbilitySchedulerStubTest, AbilitySchedulerStub_0010, TestSize.Level0)
245 {
246 MessageParcel data;
247 MessageParcel reply;
248 MessageOption option;
249 WriteInterfaceToken(data);
250 int32_t result = 0;
251 data.WriteInt32(result);
252 auto res = stub_->OnRemoteRequest(IAbilityScheduler::REQUEST_CALL_REMOTE, data, reply, option);
253 EXPECT_EQ(res, NO_ERROR);
254 }
255 /**
256 * @tc.name: AbilitySchedulerStub_011
257 * @tc.desc: test DumpAbilityInfo
258 * @tc.type: FUNC
259 * @tc.require: SR000GH1GO
260 */
261 HWTEST_F(AbilitySchedulerStubTest, AbilitySchedulerStub_011, TestSize.Level1)
262 {
263 MessageParcel data;
264 MessageParcel reply;
265 MessageOption option;
266 WriteInterfaceToken(data);
267 int32_t result = 0;
268 data.WriteInt32(result);
269 auto res = stub_->OnRemoteRequest(IAbilityScheduler::DUMP_ABILITY_RUNNER_INNER, data, reply, option);
270 EXPECT_EQ(res, NO_ERROR);
271 }
272 } // namespace AAFwk
273 } // namespace OHOS
274