1 /*
2 * Copyright (c) 2023-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 #define private public
19 #include "auto_fill_manager.h"
20 #include "auto_fill_error.h"
21 #include "auto_fill_extension_callback.h"
22 #include "extension_ability_info.h"
23 #include "mock_ui_content.h"
24 #undef private
25
26 using namespace testing;
27 using namespace testing::ext;
28
29 namespace OHOS {
30 namespace AAFwk {
31 namespace {
32 const int32_t EVENT_ID = 1;
33 } // namespace
34 class AutoFillManagerTest : public testing::Test {
35 public:
36 static void SetUpTestCase();
37 static void TearDownTestCase();
38 void SetUp() override;
39 void TearDown() override;
GetUIContent()40 virtual Ace::UIContent* GetUIContent()
41 {
42 return nullptr;
43 }
44 };
45
46 class MockModalUIExtensionProxy : public Ace::ModalUIExtensionProxy {
47 public:
48 MOCK_METHOD1(SendData, void(const AAFwk::WantParams ¶ms));
49 };
50
SetUpTestCase(void)51 void AutoFillManagerTest::SetUpTestCase(void)
52 {}
53
TearDownTestCase(void)54 void AutoFillManagerTest::TearDownTestCase(void)
55 {}
56
SetUp()57 void AutoFillManagerTest::SetUp()
58 {}
59
TearDown()60 void AutoFillManagerTest::TearDown()
61 {}
62
63 /*
64 * Feature: AutoFillManager
65 * Function: RequestAutoFill
66 * SubFunction: NA
67 * FunctionPoints:Calling to the RequestAutoFill function parameter is invalid.
68 * EnvConditions: NA
69 * CaseDescription: Verify the parameter UIContent or fillCallback is nullptr.
70 */
71 HWTEST_F(AutoFillManagerTest, RequestAutoFill_0100, TestSize.Level1)
72 {
73 GTEST_LOG_(INFO) << "AutoFillManagerTest, RequestAutoFill_0100, TestSize.Level1";
74 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
75 const AbilityRuntime::AutoFill::AutoFillRequest autoFillRequest;
76 const std::shared_ptr<AbilityRuntime::IFillRequestCallback> fillCallback = nullptr;
77 AbilityRuntime::AutoFill::AutoFillResult result;
78 int32_t ret = manager.RequestAutoFill(GetUIContent(), autoFillRequest, fillCallback, result);
79 EXPECT_EQ(ret, AbilityRuntime::AutoFill::AUTO_FILL_OBJECT_IS_NULL);
80 }
81
82 /*
83 * Feature: AutoFillManager
84 * Function: RequestAutoSave
85 * SubFunction: NA
86 * FunctionPoints:Calling to the RequestAutoSave function parameter is invalid.
87 * EnvConditions: NA
88 * CaseDescription: Verify the parameter UIContent or saveCallback is nullptr.
89 */
90 HWTEST_F(AutoFillManagerTest, RequestAutoSave_0100, TestSize.Level1)
91 {
92 GTEST_LOG_(INFO) << "AutoFillManagerTest, RequestAutoSave_0100, TestSize.Level1";
93 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
94 const AbilityRuntime::AutoFill::AutoFillRequest autoFillRequest;
95 const std::shared_ptr<AbilityRuntime::ISaveRequestCallback> saveCallback = nullptr;
96 AbilityRuntime::AutoFill::AutoFillResult result;
97 int32_t ret = manager.RequestAutoSave(GetUIContent(), autoFillRequest, saveCallback, result);
98 EXPECT_EQ(ret, AbilityRuntime::AutoFill::AUTO_FILL_OBJECT_IS_NULL);
99 }
100
101 /*
102 * Feature: AutoFillManager
103 * Function: HandleRequestExecuteInner
104 * SubFunction: NA
105 * FunctionPoints:Calling to the HandleRequestExecuteInner function parameter is invalid.
106 * EnvConditions: NA
107 * CaseDescription: Verify the parameter UIContent or fillCallback or saveCallback is nullptr.
108 */
109 HWTEST_F(AutoFillManagerTest, HandleRequestExecuteInner_0100, TestSize.Level1)
110 {
111 GTEST_LOG_(INFO) << "AutoFillManagerTest, HandleRequestExecuteInner_0100, TestSize.Level1";
112 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
113 const AbilityBase::AutoFillType autoFillType = AbilityBase::AutoFillType::UNSPECIFIED;
114 const AbilityRuntime::AutoFill::AutoFillRequest autoFillRequest;
115 const std::shared_ptr<AbilityRuntime::IFillRequestCallback> fillCallback = nullptr;
116 const std::shared_ptr<AbilityRuntime::ISaveRequestCallback> saveCallback = nullptr;
117 AbilityRuntime::AutoFill::AutoFillResult result;
118 int32_t ret =
119 manager.HandleRequestExecuteInner(GetUIContent(), autoFillRequest, fillCallback, saveCallback, result);
120 EXPECT_EQ(ret, AbilityRuntime::AutoFill::AUTO_FILL_OBJECT_IS_NULL);
121 }
122
123 /*
124 * Feature: AutoFillManager
125 * Function: SetTimeOutEvent
126 * SubFunction: NA
127 * FunctionPoints:Calling SetTimeOutEvent can create an eventHandler_ object.
128 * EnvConditions: NA
129 * CaseDescription: Verify create eventHandler_ after calling SetTimeOutEvent, which is not empty.
130 */
131 HWTEST_F(AutoFillManagerTest, SetTimeOutEvent_0100, TestSize.Level1)
132 {
133 GTEST_LOG_(INFO) << "AutoFillManagerTest, SetTimeOutEvent_0100, TestSize.Level1";
134 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
135 manager.SetTimeOutEvent(EVENT_ID);
136 EXPECT_NE(manager.eventHandler_, nullptr);
137 }
138
139 /*
140 * Feature: AutoFillManager
141 * Function: RemoveEvent
142 * SubFunction: NA
143 * FunctionPoints: NA
144 * EnvConditions: NA
145 * CaseDescription: Verify only after calling SetTimeOutEvent can effectively call RemoveEvent.
146 */
147 HWTEST_F(AutoFillManagerTest, RemoveEvent_0100, TestSize.Level1)
148 {
149 GTEST_LOG_(INFO) << "AutoFillManagerTest, SetTimeOutEvent_0100, TestSize.Level1";
150 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
151 manager.SetTimeOutEvent(EVENT_ID);
152 EXPECT_NE(manager.eventHandler_, nullptr);
153 manager.RemoveEvent(EVENT_ID);
154 EXPECT_NE(manager.eventHandler_, nullptr);
155 }
156
157 /*
158 * Feature: AutoFillManager
159 * Function: RemoveEvent
160 * SubFunction: NA
161 * FunctionPoints: NA
162 * EnvConditions: NA
163 * CaseDescription: Verify directly calling remove is invalid.
164 */
165 HWTEST_F(AutoFillManagerTest, RemoveEvent_0200, TestSize.Level1)
166 {
167 GTEST_LOG_(INFO) << "AutoFillManagerTest, RemoveEvent_0200, TestSize.Level1";
168 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
169 manager.RemoveEvent(EVENT_ID);
170 EXPECT_NE(manager.eventHandler_, nullptr);
171 }
172
173 /*
174 * Feature: AutoFillManager
175 * Function: UpdateCustomPopupUIExtension
176 * SubFunction: NA
177 * FunctionPoints: NA
178 * EnvConditions: NA
179 * CaseDescription: Verify if the UpdateCustomPopupUIExtension is valid.
180 */
181 HWTEST_F(AutoFillManagerTest, UpdateCustomPopupUIExtension_0100, TestSize.Level1)
182 {
183 GTEST_LOG_(INFO) << "AutoFillManagerTest, UpdateCustomPopupUIExtension_0100, TestSize.Level1";
184 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
185 EXPECT_EQ(manager.extensionCallbacks_.size(), 0);
186 const AbilityBase::ViewData viewdata;
187 manager.UpdateCustomPopupUIExtension(1, viewdata);
188 }
189
190 /*
191 * Feature: AutoFillManager
192 * Function: HandleTimeOut
193 * SubFunction: NA
194 * FunctionPoints: NA
195 * EnvConditions: NA
196 * CaseDescription: Verify if the processing timeout is valid.
197 */
198 HWTEST_F(AutoFillManagerTest, HandleTimeOut_0100, TestSize.Level1)
199 {
200 GTEST_LOG_(INFO) << "AutoFillManagerTest, HandleTimeOut_0100, TestSize.Level1";
201 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
202 EXPECT_EQ(manager.extensionCallbacks_.size(), 0);
203 auto extensionCallback = std::make_shared<AbilityRuntime::AutoFillExtensionCallback>();
204 manager.extensionCallbacks_.emplace(extensionCallback->GetCallbackId(), extensionCallback);
205 manager.HandleTimeOut(extensionCallback->GetCallbackId());
206 EXPECT_EQ(manager.extensionCallbacks_.size(), 0);
207 manager.extensionCallbacks_.clear();
208 }
209
210 /*
211 * Feature: AutoFillManager
212 * Function: ConvertAutoFillWindowType
213 * SubFunction: NA
214 * FunctionPoints: NA
215 * EnvConditions: NA
216 * CaseDescription: Verify Based on whether the requestType value can correctly convert
217 * the windowType and extension types.
218 */
219 HWTEST_F(AutoFillManagerTest, ConvertAutoFillWindowType_0100, TestSize.Level1)
220 {
221 GTEST_LOG_(INFO) << "AutoFillManagerTest, ConvertAutoFillWindowType_0100, TestSize.Level1";
222 AbilityRuntime::AutoFill::AutoFillRequest autoFillRequest;
223 autoFillRequest.autoFillCommand = AbilityRuntime::AutoFill::AutoFillCommand::FILL;
224 autoFillRequest.autoFillType = AbilityBase::AutoFillType::PASSWORD;
225 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
226 bool isSmartAutoFill = false;
227 AbilityRuntime::AutoFill::AutoFillWindowType autoFillWindowType
228 = AbilityRuntime::AutoFill::AutoFillWindowType::MODAL_WINDOW;
229 manager.ConvertAutoFillWindowType(autoFillRequest, isSmartAutoFill, autoFillWindowType);
230 EXPECT_EQ(isSmartAutoFill, false);
231
232 autoFillRequest.autoFillCommand = AbilityRuntime::AutoFill::AutoFillCommand::SAVE;
233 autoFillRequest.autoFillType = AbilityBase::AutoFillType::PERSON_FULL_NAME;
234 manager.ConvertAutoFillWindowType(autoFillRequest, isSmartAutoFill, autoFillWindowType);
235 EXPECT_EQ(isSmartAutoFill, true);
236 EXPECT_EQ(autoFillWindowType, AbilityRuntime::AutoFill::AutoFillWindowType::MODAL_WINDOW);
237 }
238
239 /*
240 * Feature: AutoFillManager
241 * Function: IsNeedToCreatePopupWindow
242 * SubFunction: NA
243 * FunctionPoints: NA
244 * EnvConditions: NA
245 * CaseDescription: pull up the windowType and extension types.
246 */
247 HWTEST_F(AutoFillManagerTest, IsNeedToCreatePopupWindow_0100, TestSize.Level1)
248 {
249 GTEST_LOG_(INFO) << "AutoFillManagerTest, IsNeedToCreatePopupWindow_0100, TestSize.Level1";
250 auto &manager = AbilityRuntime::AutoFillManager::GetInstance();
251 bool isPopupAutoFill = false;
252
253 isPopupAutoFill = manager.IsNeedToCreatePopupWindow(AbilityBase::AutoFillType::PERSON_FULL_NAME);
254 EXPECT_EQ(isPopupAutoFill, true);
255 }
256 } // namespace AppExecFwk
257 } // namespace OHOS