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 #define private public
17 #define protected public
18 
19 #include "request_manager.h"
20 
21 #include <gtest/gtest.h>
22 
23 #include <cstdint>
24 #include <memory>
25 #include <vector>
26 
27 #include "gmock/gmock.h"
28 #include "js_common.h"
29 #include "log.h"
30 #include "request_manager_impl.h"
31 
32 using namespace testing::ext;
33 using namespace OHOS::Request;
34 
35 #undef private
36 #undef protected
37 
38 class RequestManagerTest : public testing::Test {
39 public:
40     static void SetUpTestCase(void);
41     static void TearDownTestCase(void);
42     void SetUp();
43     void TearDown();
44 };
45 
SetUpTestCase(void)46 void RequestManagerTest::SetUpTestCase(void)
47 {
48     // input testSuit setup step,setup invoked before all testCases
49 }
50 
TearDownTestCase(void)51 void RequestManagerTest::TearDownTestCase(void)
52 {
53     // input testSuit teardown step,teardown invoked after all testCases
54 }
55 
SetUp(void)56 void RequestManagerTest::SetUp(void)
57 {
58     // input testCase setup step,setup invoked before each testCase
59     testing::UnitTest *test = testing::UnitTest::GetInstance();
60     ASSERT_NE(test, nullptr);
61     const testing::TestInfo *testInfo = test->current_test_info();
62     ASSERT_NE(testInfo, nullptr);
63     string testCaseName = string(testInfo->name());
64     REQUEST_HILOGI("[SetUp] %{public}s start", testCaseName.c_str());
65     GTEST_LOG_(INFO) << testCaseName.append(" start");
66 }
67 
TearDown(void)68 void RequestManagerTest::TearDown(void)
69 {
70     // input testCase teardown step,teardown invoked after each testCase
71 }
72 
73 /**
74  * @tc.name: CreateTest001
75  * @tc.desc: Test CreateTest001 interface base function - Create
76  * @tc.type: FUNC
77  * @tc.require: Issue Number
78  */
79 HWTEST_F(RequestManagerTest, CreateTest001, TestSize.Level1)
80 {
81     EXPECT_NE(RequestManager::GetInstance(), nullptr);
82     Config config;
83     int32_t seq = 1;
84     std::string tid = "1";
85     RequestManager::GetInstance()->Create(config, seq, tid);
86 }
87 
88 /**
89  * @tc.name: GetTaskTest001
90  * @tc.desc: Test GetTaskTest001 interface base function - GetTask
91  * @tc.type: FUNC
92  * @tc.require: Issue Number
93  */
94 HWTEST_F(RequestManagerTest, GetTaskTest001, TestSize.Level1)
95 {
96     EXPECT_NE(RequestManager::GetInstance(), nullptr);
97     std::string tidStr = "tid";
98     std::string token = "token";
99     Config config;
100     int32_t seq = 1;
101     std::string tid = "1";
102     RequestManager::GetInstance()->Create(config, seq, tid);
103     RequestManager::GetInstance()->RequestManager::GetInstance()->GetTask(tidStr, token, config);
104 }
105 
106 /**
107  * @tc.name: StartTest001
108  * @tc.desc: Test StartTest001 interface base function - Start
109  * @tc.type: FUNC
110  * @tc.require: Issue Number
111  */
112 HWTEST_F(RequestManagerTest, StartTest001, TestSize.Level1)
113 {
114     EXPECT_NE(RequestManager::GetInstance(), nullptr);
115     std::string tidStr = "tid";
116     RequestManager::GetInstance()->Start(tidStr);
117 }
118 
119 /**
120  * @tc.name: StopTest001
121  * @tc.desc: Test StopTest001 interface base function - Stop
122  * @tc.type: FUNC
123  * @tc.require: Issue Number
124  */
125 HWTEST_F(RequestManagerTest, StopTest001, TestSize.Level1)
126 {
127     EXPECT_NE(RequestManager::GetInstance(), nullptr);
128     std::string tid = "tid";
129     RequestManager::GetInstance()->Stop(tid);
130 }
131 
132 /**
133  * @tc.name: QueryTest001
134  * @tc.desc: Test QueryTest001 interface base function - Query
135  * @tc.type: FUNC
136  * @tc.require: Issue Number
137  */
138 HWTEST_F(RequestManagerTest, QueryTest001, TestSize.Level1)
139 {
140     EXPECT_NE(RequestManager::GetInstance(), nullptr);
141     std::string tid = "tid";
142     TaskInfo info;
143     RequestManager::GetInstance()->Query(tid, info);
144 }
145 
146 /**
147  * @tc.name: TouchTest001
148  * @tc.desc: Test TouchTest001 interface base function - Touch
149  * @tc.type: FUNC
150  * @tc.require: Issue Number
151  */
152 HWTEST_F(RequestManagerTest, Touch001, TestSize.Level1)
153 {
154     EXPECT_NE(RequestManager::GetInstance(), nullptr);
155     std::string tid = "tid";
156     std::string token = "token";
157     TaskInfo info;
158     RequestManager::GetInstance()->Touch(tid, token, info);
159 }
160 
161 /**
162  * @tc.name: SearchTest001
163  * @tc.desc: Test SearchTest001 interface base function - Search
164  * @tc.type: FUNC
165  * @tc.require: Issue Number
166  */
167 HWTEST_F(RequestManagerTest, SearchTest001, TestSize.Level1)
168 {
169     EXPECT_NE(RequestManager::GetInstance(), nullptr);
170     Filter filter;
171     std::vector<std::string> tids;
172     RequestManager::GetInstance()->Search(filter, tids);
173 }
174 
175 /**
176  * @tc.name: ShowTest001
177  * @tc.desc: Test ShowTest001 interface base function - Show
178  * @tc.type: FUNC
179  * @tc.require: Issue Number
180  */
181 HWTEST_F(RequestManagerTest, ShowTest001, TestSize.Level1)
182 {
183     EXPECT_NE(RequestManager::GetInstance(), nullptr);
184     std::string tid = "tid";
185     TaskInfo info;
186     RequestManager::GetInstance()->Show(tid, info);
187 }
188 
189 /**
190  * @tc.name: PauseTest001
191  * @tc.desc: Test PauseTest001 interface base function - Pause
192  * @tc.type: FUNC
193  * @tc.require: Issue Number
194  */
195 HWTEST_F(RequestManagerTest, PauseTest001, TestSize.Level1)
196 {
197     EXPECT_NE(RequestManager::GetInstance(), nullptr);
198     std::string tid = "tid";
199     RequestManager::GetInstance()->Pause(tid, Version::API9);
200     RequestManager::GetInstance()->Pause(tid, Version::API10);
201 }
202 
203 /**
204  * @tc.name: QueryMimeTypeTest001
205  * @tc.desc: Test QueryMimeTypeTest001 interface base function - QueryMimeType
206  * @tc.type: FUNC
207  * @tc.require: Issue Number
208  */
209 HWTEST_F(RequestManagerTest, QueryMimeTypeTest001, TestSize.Level1)
210 {
211     EXPECT_NE(RequestManager::GetInstance(), nullptr);
212     std::string tid = "tid";
213     std::string mimeType = "mimeType";
214     RequestManager::GetInstance()->QueryMimeType(tid, mimeType);
215 }
216 
217 /**
218  * @tc.name: RemoveTest001
219  * @tc.desc: Test RemoveTest001 interface base function - Remove
220  * @tc.type: FUNC
221  * @tc.require: Issue Number
222  */
223 HWTEST_F(RequestManagerTest, RemoveTest001, TestSize.Level1)
224 {
225     EXPECT_NE(RequestManager::GetInstance(), nullptr);
226     std::string tid = "tid";
227     RequestManager::GetInstance()->Remove(tid, Version::API9);
228     RequestManager::GetInstance()->Remove(tid, Version::API10);
229 }
230 
231 /**
232  * @tc.name: ResumeTest001
233  * @tc.desc: Test ResumeTest001 interface base function - Resume
234  * @tc.type: FUNC
235  * @tc.require: Issue Number
236  */
237 HWTEST_F(RequestManagerTest, ResumeTest001, TestSize.Level1)
238 {
239     EXPECT_NE(RequestManager::GetInstance(), nullptr);
240     std::string tid = "tid";
241     RequestManager::GetInstance()->Resume(tid);
242 }
243 
244 /**
245  * @tc.name: SubscribeTest001
246  * @tc.desc: Test SubscribeTest001 interface base function - Subscribe
247  * @tc.type: FUNC
248  * @tc.require: Issue Number
249  */
250 HWTEST_F(RequestManagerTest, SubscribeTest001, TestSize.Level1)
251 {
252     EXPECT_NE(RequestManager::GetInstance(), nullptr);
253     std::string taskId = "taskId";
254     RequestManager::GetInstance()->Subscribe(taskId);
255 }
256 
257 /**
258  * @tc.name: UnsubscribeTest001
259  * @tc.desc: Test UnsubscribeTest001 interface base function - Unsubscribe
260  * @tc.type: FUNC
261  * @tc.require: Issue Number
262  */
263 HWTEST_F(RequestManagerTest, Unsubscribe001, TestSize.Level1)
264 {
265     EXPECT_NE(RequestManager::GetInstance(), nullptr);
266     std::string taskId = "taskId";
267     RequestManager::GetInstance()->Unsubscribe(taskId);
268 }
269 
270 class RMTResponseListenerImpl : public IResponseListener {
271 public:
~RMTResponseListenerImpl()272     ~RMTResponseListenerImpl(){};
OnResponseReceive(const std::shared_ptr<Response> & response)273     void OnResponseReceive(const std::shared_ptr<Response> &response) override
274     {
275         (void)response;
276         return;
277     }
278 };
279 
280 class RMTNotifyDataListenerImpl : public INotifyDataListener {
281 public:
~RMTNotifyDataListenerImpl()282     ~RMTNotifyDataListenerImpl(){};
OnNotifyDataReceive(const std::shared_ptr<NotifyData> & notifyData)283     void OnNotifyDataReceive(const std::shared_ptr<NotifyData> &notifyData) override
284     {
285         (void)notifyData;
286         return;
287     }
288 };
289 
290 /**
291  * @tc.name: AddAndRemoveListenerTest001
292  * @tc.desc: Test AddAndRemoveListenerTest001 interface base function - AddListener/RemoveListener
293  * @tc.type: FUNC
294  * @tc.require: Issue Number
295  */
296 HWTEST_F(RequestManagerTest, AddAndRemoveListenerTest001, TestSize.Level1)
297 {
298     EXPECT_NE(RequestManager::GetInstance(), nullptr);
299     string taskId = "taskId";
300     SubscribeType type = SubscribeType::RESPONSE;
301     std::shared_ptr<RMTResponseListenerImpl> listener = std::make_shared<RMTResponseListenerImpl>();
302     RequestManager::GetInstance()->AddListener(taskId, type, listener);
303     RequestManager::GetInstance()->RemoveListener(taskId, type, listener);
304     type = SubscribeType::COMPLETED;
305     std::shared_ptr<RMTNotifyDataListenerImpl> listener2 = std::make_shared<RMTNotifyDataListenerImpl>();
306     RequestManager::GetInstance()->AddListener(taskId, type, listener2);
307     RequestManager::GetInstance()->RemoveListener(taskId, type, listener2);
308 }
309 
TestRestoreCallback()310 void TestRestoreCallback()
311 {
312 }
313 
314 /**
315  * @tc.name: RemoveAllListenersTest001
316  * @tc.desc: Test RemoveAllListenersTest001 interface base function - RemoveAllListeners
317  * @tc.type: FUNC
318  * @tc.require: Issue Number
319  */
320 HWTEST_F(RequestManagerTest, RemoveAllListenersTest001, TestSize.Level1)
321 {
322     string taskId = "taskId";
323     SubscribeType type = SubscribeType::RESPONSE;
324     std::shared_ptr<RMTResponseListenerImpl> listener = std::make_shared<RMTResponseListenerImpl>();
325     RequestManager::GetInstance()->AddListener(taskId, type, listener);
326     type = SubscribeType::COMPLETED;
327     std::shared_ptr<RMTNotifyDataListenerImpl> listener2 = std::make_shared<RMTNotifyDataListenerImpl>();
328     RequestManager::GetInstance()->AddListener(taskId, type, listener2);
329     RequestManager::GetInstance()->RemoveAllListeners(taskId);
330     RequestManager::GetInstance()->RestoreListener(TestRestoreCallback);
331     EXPECT_EQ(RequestManagerImpl::GetInstance()->callback_, TestRestoreCallback);
332     RequestManager::GetInstance()->RestoreListener(nullptr);
333 }
334 
335 /**
336  * @tc.name: LoadRequestServerTest001
337  * @tc.desc: Test LoadRequestServerTest001 interface base function - LoadRequestServer
338  * @tc.type: FUNC
339  * @tc.require: Issue Number
340  */
341 HWTEST_F(RequestManagerTest, LoadRequestServerTest001, TestSize.Level1)
342 {
343     EXPECT_NE(RequestManager::GetInstance(), nullptr);
344     RequestManager::GetInstance()->LoadRequestServer();
345 }
346 
347 /**
348  * @tc.name: IsSaReadyTest001
349  * @tc.desc: Test IsSaReadyTest001 interface base function - IsSaReady
350  * @tc.type: FUNC
351  * @tc.require: Issue Number
352  */
353 HWTEST_F(RequestManagerTest, IsSaReadyTest001, TestSize.Level1)
354 {
355     EXPECT_NE(RequestManager::GetInstance(), nullptr);
356     RequestManager::GetInstance()->IsSaReady();
357 }
358 
359 /**
360  * @tc.name: ReopenChannelTest001
361  * @tc.desc: Test ReopenChannelTest001 interface base function - ReopenChannel
362  * @tc.type: FUNC
363  * @tc.require: Issue Number
364  */
365 HWTEST_F(RequestManagerTest, ReopenChannelTest001, TestSize.Level1)
366 {
367     EXPECT_NE(RequestManager::GetInstance(), nullptr);
368     RequestManager::GetInstance()->ReopenChannel();
369 }
370 
371 /**
372  * @tc.name: SubscribeSATest001
373  * @tc.desc: Test SubscribeSATest001 interface base function - SubscribeSA
374  * @tc.type: FUNC
375  * @tc.require: Issue Number
376  */
377 HWTEST_F(RequestManagerTest, SubscribeSATest001, TestSize.Level1)
378 {
379     EXPECT_NE(RequestManager::GetInstance(), nullptr);
380     RequestManager::GetInstance()->SubscribeSA();
381 }
382 
383 /**
384  * @tc.name: UnsubscribeSATest001
385  * @tc.desc: Test UnsubscribeSATest001 interface base function - UnsubscribeSA
386  * @tc.type: FUNC
387  * @tc.require: Issue Number
388  */
389 HWTEST_F(RequestManagerTest, UnsubscribeSATest001, TestSize.Level1)
390 {
391     EXPECT_NE(RequestManager::GetInstance(), nullptr);
392     RequestManager::GetInstance()->UnsubscribeSA();
393 }
394 
395 /**
396  * @tc.name: GetNextSeqTest001
397  * @tc.desc: Test GetNextSeqTest001 interface base function - GetNextSeq
398  * @tc.type: FUNC
399  * @tc.require: Issue Number
400  */
401 HWTEST_F(RequestManagerTest, GetNextSeqTest001, TestSize.Level1)
402 {
403     int32_t ret = RequestManager::GetInstance()->GetNextSeq();
404     EXPECT_EQ(RequestManager::GetInstance()->GetNextSeq(), ret + 1);
405 }