1 /*
2 * Copyright (c) 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 "test.h"
17 #include "napi/native_api.h"
18 #include "napi/native_node_api.h"
19 #include "utils/log.h"
20 #include "js_url.h"
21 #include <regex>
22 #include <sstream>
23 #include "securec.h"
24 #include "unicode/stringpiece.h"
25 #include "unicode/unistr.h"
26
27 #define ASSERT_CHECK_CALL(call) \
28 { \
29 ASSERT_EQ(call, napi_ok); \
30 }
31
32 #define ASSERT_CHECK_VALUE_TYPE(env, value, type) \
33 { \
34 napi_valuetype valueType = napi_undefined; \
35 ASSERT_TRUE(value != nullptr); \
36 ASSERT_CHECK_CALL(napi_typeof(env, value, &valueType)); \
37 ASSERT_EQ(valueType, type); \
38 }
39
DealNapiStrValue(napi_env env,const napi_value napiStr,std::string & result)40 napi_status DealNapiStrValue(napi_env env, const napi_value napiStr, std::string &result)
41 {
42 std::string buffer = "";
43 size_t bufferSize = 0;
44 napi_status status = napi_ok;
45 status = napi_get_value_string_utf8(env, napiStr, nullptr, -1, &bufferSize);
46 buffer.reserve(bufferSize + 1);
47 buffer.resize(bufferSize);
48 if (status != napi_ok) {
49 HILOG_ERROR("can not get buffer size");
50 return status;
51 }
52 if (bufferSize > 0) {
53 status = napi_get_value_string_utf8(env, napiStr, buffer.data(), bufferSize + 1, &bufferSize);
54 if (status != napi_ok) {
55 HILOG_ERROR("can not get buffer value");
56 return status;
57 }
58 }
59 if (buffer.data() != nullptr) {
60 result = buffer;
61 }
62 return status;
63 }
64
StrToNapiValue(napi_env env,const std::string & result)65 napi_value StrToNapiValue(napi_env env, const std::string &result)
66 {
67 napi_value output = nullptr;
68 napi_create_string_utf8(env, result.c_str(), result.size(), &output);
69 return output;
70 }
71
IsEscapeRange(const char ch)72 bool IsEscapeRange(const char ch)
73 {
74 if ((ch > 0 && ch < '*') || (ch > '*' && ch < '-') || (ch == '/') ||
75 (ch > '9' && ch < 'A') || (ch > 'Z' && ch < '_') || (ch == '`') || (ch > 'z')) {
76 return true;
77 }
78 return false;
79 }
80
ReviseStr(std::string & str,std::string * reviseChar)81 std::string ReviseStr(std::string &str, std::string *reviseChar)
82 {
83 icu::StringPiece sp(str.c_str());
84 icu::UnicodeString wstr = icu::UnicodeString::fromUTF8(sp);
85 const size_t lenStr = static_cast<size_t>(wstr.length());
86 if (lenStr == 0) {
87 return "";
88 }
89 std::string output = "";
90 size_t numOfAscii = 128; // 128:Number of ASCII characters
91 size_t i = 0;
92 for (; i < lenStr; i++) {
93 auto charaEncode = static_cast<size_t>(wstr[i]);
94 if (charaEncode < numOfAscii) {
95 // 2:Defines the escape range of ASCII characters
96 if (IsEscapeRange(charaEncode)) {
97 output += reviseChar[charaEncode];
98 } else {
99 output += str.substr(i, 1);
100 }
101 } else if (charaEncode <= 0x000007FF) { // Convert the Unicode code into two bytes
102 std::string output1 = reviseChar[0x000000C0 | (charaEncode / 64)]; // 64:the first byte
103 std::string output2 = reviseChar[numOfAscii | (charaEncode & 0x0000003F)];
104 output += output1 + output2;
105 } else if ((charaEncode >= 0x0000E000) || (charaEncode <= 0x0000D7FF)) {
106 std::string output1 = reviseChar[0x000000E0 | (charaEncode / 4096)]; // 4096:Acquisition method
107 std::string output2 = reviseChar[numOfAscii | ((charaEncode / 64) & 0x0000003F)]; // 64:second byte
108 std::string output3 = reviseChar[numOfAscii | (charaEncode & 0x0000003F)];
109 output += output1 + output2 + output3;
110 } else {
111 const size_t charaEncode1 = static_cast<size_t>(str[++i]) & 1023; // 1023:Convert codes
112 charaEncode = 65536 + (((charaEncode & 1023) << 10) | charaEncode1); // 65536:Specific transcoding
113 std::string output1 = reviseChar[0x000000F0 | (charaEncode / 262144)]; // 262144:the first byte
114 std::string output2 = reviseChar[numOfAscii | ((charaEncode / 4096) & 0x0000003F)]; // 4096:second byte
115 std::string output3 = reviseChar[numOfAscii | ((charaEncode / 64) & 0x0000003F)]; // 64:third byte
116 std::string output4 = reviseChar[numOfAscii | (charaEncode & 0x0000003F)];
117 output += output1 + output2 + output3 + output4;
118 }
119 }
120 return output;
121 }
122
ToString(napi_env env,std::vector<std::string> & searchParams)123 napi_value ToString(napi_env env, std::vector<std::string> &searchParams)
124 {
125 std::string output = "";
126 std::string reviseChar[256] = {""}; // 256:Array length
127 for (size_t i = 0; i < 256; ++i) { // 256:Array length
128 size_t j = i;
129 std::stringstream ioss;
130 std::string str1 = "";
131 ioss << std::hex << j;
132 ioss >> str1;
133 transform(str1.begin(), str1.end(), str1.begin(), ::toupper);
134 if (i < 16) { // 16:Total number of 0-F
135 reviseChar[i] = '%' + ("0" + str1);
136 } else {
137 reviseChar[i] = '%' + str1;
138 }
139 }
140 reviseChar[0x20] = "+"; // 0x20:ASCII value of spaces
141 const size_t lenStr = searchParams.size();
142 napi_value result = nullptr;
143 if (lenStr == 0) {
144 napi_create_string_utf8(env, output.c_str(), output.size(), &result);
145 return result;
146 }
147 std::string firstStrKey = ReviseStr(searchParams[0], reviseChar);
148 std::string firstStrValue = ReviseStr(searchParams[1], reviseChar);
149 output = firstStrKey + "=" + firstStrValue;
150 if (lenStr % 2 == 0) { // 2:Divisible by 2
151 size_t pos = 2; // 2:Initial Position
152 for (; pos < lenStr; pos += 2) { // 2:Searching for the number and number of keys and values
153 std::string strKey = ReviseStr(searchParams[pos], reviseChar);
154 std::string strValue = ReviseStr(searchParams[pos + 1], reviseChar);
155 output += +"&" + strKey + "=" + strValue;
156 }
157 }
158 napi_create_string_utf8(env, output.c_str(), output.size(), &result);
159 return result;
160 }
161
GetParamsStrig(napi_env env,const napi_value tempStr)162 std::vector<std::string> GetParamsStrig(napi_env env, const napi_value tempStr)
163 {
164 std::vector<std::string> vec;
165 size_t arraySize = 0;
166 uint32_t length = 0;
167 napi_get_array_length(env, tempStr, &length);
168 napi_value napiStr = nullptr;
169 for (size_t i = 0; i < length; i++) {
170 napi_get_element(env, tempStr, i, &napiStr);
171 if (napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize) != napi_ok) {
172 HILOG_ERROR("can not get napiStr size");
173 return vec;
174 }
175 if (arraySize > 0) {
176 std::string cstr = "";
177 cstr.resize(arraySize);
178 if (napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize) != napi_ok) {
179 HILOG_ERROR("can not get napiStr size");
180 return vec;
181 }
182 vec.push_back(cstr);
183 } else {
184 vec.push_back("");
185 }
186 }
187 return vec;
188 }
189
190 HWTEST_F(NativeEngineTest, testUrlConstructs001, testing::ext::TestSize.Level0)
191 {
192 OHOS::Url::URL url("https://example.org:81/a/b/c?query#fragment");
193 std::string output;
194 napi_env env = (napi_env)engine_;
195 DealNapiStrValue(env, url.GetPath(env), output);
196 ASSERT_STREQ(output.c_str(), "/a/b/c");
197 }
198
199 HWTEST_F(NativeEngineTest, testUrlConstructs002, testing::ext::TestSize.Level0)
200 {
201 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
202 std::string output;
203 napi_env env = (napi_env)engine_;
204 DealNapiStrValue(env, url.GetPath(env), output);
205 ASSERT_STREQ(output.c_str(), "/directory/file");
206 }
207
208 HWTEST_F(NativeEngineTest, testUrlConstructs003, testing::ext::TestSize.Level0)
209 {
210 OHOS::Url::URL url("../baz", "http://example.org/foo/bar");
211 std::string output;
212 napi_env env = (napi_env)engine_;
213 DealNapiStrValue(env, url.GetPath(env), output);
214 ASSERT_STREQ(output.c_str(), "/foo/baz");
215 }
216
217 HWTEST_F(NativeEngineTest, testUrlConstructs004, testing::ext::TestSize.Level0)
218 {
219 OHOS::Url::URL url("/../sca/./path/path/../scasa/jjjjj", "http://www.example.com");
220 std::string output;
221 napi_env env = (napi_env)engine_;
222 DealNapiStrValue(env, url.GetPath(env), output);
223 ASSERT_STREQ(output.c_str(), "/sca/path/scasa/jjjjj");
224 }
225
226 HWTEST_F(NativeEngineTest, testUrlConstructs005, testing::ext::TestSize.Level0)
227 {
228 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
229 std::string output;
230 napi_env env = (napi_env)engine_;
231 DealNapiStrValue(env, url.GetScheme(env), output);
232 ASSERT_STREQ(output.c_str(), "http:");
233 }
234
235 HWTEST_F(NativeEngineTest, testUrlConstructs006, testing::ext::TestSize.Level0)
236 {
237 OHOS::Url::URL base("http://www.example.com");
238 OHOS::Url::URL url("//sca/./path/./scasa#", base);
239 std::string output;
240 napi_env env = (napi_env)engine_;
241 DealNapiStrValue(env, url.GetPath(env), output);
242 ASSERT_STREQ(output.c_str(), "/path/scasa");
243 }
244
245 HWTEST_F(NativeEngineTest, testUrlConstructs007, testing::ext::TestSize.Level0)
246 {
247 OHOS::Url::URL base("http://www.example.com");
248 OHOS::Url::URL url("/dire/query", base);
249 std::string output;
250 napi_env env = (napi_env)engine_;
251 DealNapiStrValue(env, url.GetPath(env), output);
252 ASSERT_STREQ(output.c_str(), "/dire/query");
253 }
254
255 HWTEST_F(NativeEngineTest, testUrlConstructs008, testing::ext::TestSize.Level0)
256 {
257 OHOS::Url::URL base("http://www.example.com");
258 OHOS::Url::URL url("foo/bar//fragment", base);
259 std::string output;
260 napi_env env = (napi_env)engine_;
261 DealNapiStrValue(env, url.GetPath(env), output);
262 ASSERT_STREQ(output.c_str(), "/foo/bar//fragment");
263 }
264
265 HWTEST_F(NativeEngineTest, testUrlConstructs009, testing::ext::TestSize.Level0)
266 {
267 OHOS::Url::URL base("http://www.example.com");
268 OHOS::Url::URL url("/../sca/./path/./s#casa", base);
269 std::string output;
270 napi_env env = (napi_env)engine_;
271 DealNapiStrValue(env, url.GetPath(env), output);
272 ASSERT_STREQ(output.c_str(), "/sca/path/s");
273 }
274
275 HWTEST_F(NativeEngineTest, testUrlConstructs010, testing::ext::TestSize.Level0)
276 {
277 OHOS::Url::URL base("http://www.example.com");
278 OHOS::Url::URL url("/../sca/./path/./sca?sa", base);
279 std::string output;
280 napi_env env = (napi_env)engine_;
281 DealNapiStrValue(env, url.GetPath(env), output);
282 ASSERT_STREQ(output.c_str(), "/sca/path/sca");
283 }
284
285 HWTEST_F(NativeEngineTest, testUrlConstructs011, testing::ext::TestSize.Level0)
286 {
287 OHOS::Url::URL base("http://www.example.com");
288 OHOS::Url::URL url("", base);
289 std::string output;
290 napi_env env = (napi_env)engine_;
291 DealNapiStrValue(env, url.GetPath(env), output);
292 ASSERT_STREQ(output.c_str(), "/");
293 }
294
295 HWTEST_F(NativeEngineTest, testUrlConstructs012, testing::ext::TestSize.Level0)
296 {
297 OHOS::Url::URL url("file://\\/www.example.com");
298 std::string output;
299 napi_env env = (napi_env)engine_;
300 DealNapiStrValue(env, url.GetScheme(env), output);
301 ASSERT_STREQ(output.c_str(), "file:");
302 }
303
304 HWTEST_F(NativeEngineTest, testUrlConstructs013, testing::ext::TestSize.Level0)
305 {
306 OHOS::Url::URL url("file:///www.example.com");
307 std::string output;
308 napi_env env = (napi_env)engine_;
309 DealNapiStrValue(env, url.GetScheme(env), output);
310 ASSERT_STREQ(output.c_str(), "file:");
311 }
312
313 HWTEST_F(NativeEngineTest, testUrlProtocol001, testing::ext::TestSize.Level0)
314 {
315 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
316 std::string output;
317 napi_env env = (napi_env)engine_;
318 DealNapiStrValue(env, url.GetScheme(env), output);
319 ASSERT_STREQ(output.c_str(), "http:");
320 }
321
322 HWTEST_F(NativeEngineTest, testUrlProtocol002, testing::ext::TestSize.Level0)
323 {
324 OHOS::Url::URL url("ftp://username:password@host:8080/directory/file?query#fragment");
325 std::string output;
326 napi_env env = (napi_env)engine_;
327 DealNapiStrValue(env, url.GetScheme(env), output);
328 ASSERT_STREQ(output.c_str(), "ftp:");
329 }
330
331 HWTEST_F(NativeEngineTest, testUrlProtocol003, testing::ext::TestSize.Level0)
332 {
333 OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
334 std::string output;
335 napi_env env = (napi_env)engine_;
336 DealNapiStrValue(env, url.GetScheme(env), output);
337 ASSERT_STREQ(output.c_str(), "https:");
338 }
339
340 HWTEST_F(NativeEngineTest, testUrlSetScheme001, testing::ext::TestSize.Level0)
341 {
342 OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
343 std::string output;
344 napi_env env = (napi_env)engine_;
345 DealNapiStrValue(env, url.GetScheme(env), output);
346 ASSERT_STREQ(output.c_str(), "https:");
347 url.SetScheme("ftp:");
348 DealNapiStrValue(env, url.GetScheme(env), output);
349 ASSERT_STREQ(output.c_str(), "ftp:");
350 }
351
352 HWTEST_F(NativeEngineTest, testUrlSetScheme002, testing::ext::TestSize.Level0)
353 {
354 OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
355 std::string output;
356 napi_env env = (napi_env)engine_;
357 DealNapiStrValue(env, url.GetScheme(env), output);
358 ASSERT_STREQ(output.c_str(), "https:");
359 url.SetScheme("666");
360 DealNapiStrValue(env, url.GetScheme(env), output);
361 ASSERT_STREQ(output.c_str(), "https:");
362 }
363
364 HWTEST_F(NativeEngineTest, testUrlSetScheme003, testing::ext::TestSize.Level0)
365 {
366 OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
367 std::string output;
368 napi_env env = (napi_env)engine_;
369 DealNapiStrValue(env, url.GetScheme(env), output);
370 ASSERT_STREQ(output.c_str(), "https:");
371 url.SetScheme("-/+");
372 DealNapiStrValue(env, url.GetScheme(env), output);
373 ASSERT_STREQ(output.c_str(), "https:");
374 }
375
376 HWTEST_F(NativeEngineTest, testUrlUsername001, testing::ext::TestSize.Level0)
377 {
378 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
379 std::string output;
380 napi_env env = (napi_env)engine_;
381 DealNapiStrValue(env, url.GetUsername(env), output);
382 ASSERT_STREQ(output.c_str(), "username");
383 }
384
385 HWTEST_F(NativeEngineTest, testUrlUsername002, testing::ext::TestSize.Level0)
386 {
387 OHOS::Url::URL url("http://zhao:password@host:8080/directory/file?query#fragment");
388 std::string output;
389 napi_env env = (napi_env)engine_;
390 DealNapiStrValue(env, url.GetUsername(env), output);
391 ASSERT_STREQ(output.c_str(), "zhao");
392 }
393
394 HWTEST_F(NativeEngineTest, testUrlUsername003, testing::ext::TestSize.Level0)
395 {
396 OHOS::Url::URL url("http://skk:password@host:8080/directory/file?query#fragment");
397 std::string output;
398 napi_env env = (napi_env)engine_;
399 DealNapiStrValue(env, url.GetUsername(env), output);
400 ASSERT_STREQ(output.c_str(), "skk");
401 }
402
403 HWTEST_F(NativeEngineTest, testUrlSetUsername001, testing::ext::TestSize.Level0)
404 {
405 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
406 std::string output;
407 napi_env env = (napi_env)engine_;
408 DealNapiStrValue(env, url.GetUsername(env), output);
409 ASSERT_STREQ(output.c_str(), "username");
410 url.SetUsername("666");
411 DealNapiStrValue(env, url.GetUsername(env), output);
412 ASSERT_STREQ(output.c_str(), "666");
413 }
414
415 HWTEST_F(NativeEngineTest, testUrlSetUsername002, testing::ext::TestSize.Level0)
416 {
417 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
418 std::string output;
419 napi_env env = (napi_env)engine_;
420 DealNapiStrValue(env, url.GetUsername(env), output);
421 ASSERT_STREQ(output.c_str(), "username");
422 url.SetUsername("");
423 DealNapiStrValue(env, url.GetUsername(env), output);
424 ASSERT_STREQ(output.c_str(), "");
425 }
426
427 HWTEST_F(NativeEngineTest, testUrlPassword001, testing::ext::TestSize.Level0)
428 {
429 OHOS::Url::URL url("http://username:11@host:8080/directory/file?query#fragment");
430 std::string output;
431 napi_env env = (napi_env)engine_;
432 DealNapiStrValue(env, url.GetPassword(env), output);
433 ASSERT_STREQ(output.c_str(), "11");
434 }
435
436 HWTEST_F(NativeEngineTest, testUrlPassword002, testing::ext::TestSize.Level0)
437 {
438 OHOS::Url::URL url("http://username:23aa@host:8080/directory/file?query#fragment");
439 std::string output;
440 napi_env env = (napi_env)engine_;
441 DealNapiStrValue(env, url.GetPassword(env), output);
442 ASSERT_STREQ(output.c_str(), "23aa");
443 }
444
445 HWTEST_F(NativeEngineTest, testUrlPassword003, testing::ext::TestSize.Level0)
446 {
447 OHOS::Url::URL url("http://username@host:8080/directory/file?query#fragment");
448 std::string output;
449 napi_env env = (napi_env)engine_;
450 DealNapiStrValue(env, url.GetPassword(env), output);
451 ASSERT_STREQ(output.c_str(), "");
452 }
453
454 HWTEST_F(NativeEngineTest, testUrlSetPassword001, testing::ext::TestSize.Level0)
455 {
456 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
457 std::string output;
458 napi_env env = (napi_env)engine_;
459 DealNapiStrValue(env, url.GetPassword(env), output);
460 ASSERT_STREQ(output.c_str(), "password");
461 url.SetPassword("666");
462 DealNapiStrValue(env, url.GetPassword(env), output);
463 ASSERT_STREQ(output.c_str(), "666");
464 }
465
466 HWTEST_F(NativeEngineTest, testUrlSetPassword002, testing::ext::TestSize.Level0)
467 {
468 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
469 std::string output;
470 napi_env env = (napi_env)engine_;
471 DealNapiStrValue(env, url.GetPassword(env), output);
472 ASSERT_STREQ(output.c_str(), "password");
473 url.SetPassword("");
474 DealNapiStrValue(env, url.GetPassword(env), output);
475 ASSERT_STREQ(output.c_str(), "");
476 }
477
478 HWTEST_F(NativeEngineTest, testUrlHost001, testing::ext::TestSize.Level0)
479 {
480 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
481 std::string output;
482 napi_env env = (napi_env)engine_;
483 DealNapiStrValue(env, url.GetHost(env), output);
484 ASSERT_STREQ(output.c_str(), "host:8080");
485 }
486
487 HWTEST_F(NativeEngineTest, testUrlHost002, testing::ext::TestSize.Level0)
488 {
489 OHOS::Url::URL url("http://username:password@hosthost/directory/file?query#fragment");
490 std::string output;
491 napi_env env = (napi_env)engine_;
492 DealNapiStrValue(env, url.GetHost(env), output);
493 ASSERT_STREQ(output.c_str(), "hosthost");
494 }
495
496 HWTEST_F(NativeEngineTest, testUrlHost003, testing::ext::TestSize.Level0)
497 {
498 OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
499 std::string output;
500 napi_env env = (napi_env)engine_;
501 DealNapiStrValue(env, url.GetHost(env), output);
502 ASSERT_STREQ(output.c_str(), "host:199");
503 }
504
505 HWTEST_F(NativeEngineTest, testUrlSetHost001, testing::ext::TestSize.Level0)
506 {
507 OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
508 std::string output;
509 napi_env env = (napi_env)engine_;
510 DealNapiStrValue(env, url.GetHost(env), output);
511 ASSERT_STREQ(output.c_str(), "host:199");
512 url.SetHost("0.0.0.0.0:199");
513 DealNapiStrValue(env, url.GetHost(env), output);
514 ASSERT_STREQ(output.c_str(), "0.0.0.0.0:199");
515 }
516
517 HWTEST_F(NativeEngineTest, testUrlSetHost002, testing::ext::TestSize.Level0)
518 {
519 OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
520 std::string output;
521 napi_env env = (napi_env)engine_;
522 DealNapiStrValue(env, url.GetHost(env), output);
523 ASSERT_STREQ(output.c_str(), "host:199");
524 url.SetHost("");
525 DealNapiStrValue(env, url.GetHost(env), output);
526 ASSERT_STREQ(output.c_str(), "host:199");
527 }
528
529 HWTEST_F(NativeEngineTest, testUrlSetHref001, testing::ext::TestSize.Level0)
530 {
531 OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
532 std::string output;
533 napi_env env = (napi_env)engine_;
534 DealNapiStrValue(env, url.GetHost(env), output);
535 ASSERT_STREQ(output.c_str(), "host:199");
536 url.SetHref("http:huawei.com");
537 DealNapiStrValue(env, url.GetHost(env), output);
538 ASSERT_STREQ(output.c_str(), "huawei.com");
539 }
540
541 HWTEST_F(NativeEngineTest, testUrlSetHref002, testing::ext::TestSize.Level0)
542 {
543 OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
544 std::string output;
545 napi_env env = (napi_env)engine_;
546 DealNapiStrValue(env, url.GetHost(env), output);
547 ASSERT_STREQ(output.c_str(), "host:199");
548 url.SetHref(" http:huawei.com");
549 DealNapiStrValue(env, url.GetHost(env), output);
550 ASSERT_STREQ(output.c_str(), "huawei.com");
551 }
552
553 HWTEST_F(NativeEngineTest, testUrlHostname001, testing::ext::TestSize.Level0)
554 {
555 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
556 std::string output;
557 napi_env env = (napi_env)engine_;
558 DealNapiStrValue(env, url.GetHostname(env), output);
559 ASSERT_STREQ(output.c_str(), "host");
560 }
561
562 HWTEST_F(NativeEngineTest, testUrlHostname002, testing::ext::TestSize.Level0)
563 {
564 OHOS::Url::URL url("http://username:password@host123:8080/directory/file?query#fragment");
565 std::string output;
566 napi_env env = (napi_env)engine_;
567 DealNapiStrValue(env, url.GetHostname(env), output);
568 ASSERT_STREQ(output.c_str(), "host123");
569 }
570
571 HWTEST_F(NativeEngineTest, testUrlHostname003, testing::ext::TestSize.Level0)
572 {
573 OHOS::Url::URL url("http://username:password@885ssa:8080/directory/file?query#fragment");
574 std::string output;
575 napi_env env = (napi_env)engine_;
576 DealNapiStrValue(env, url.GetHostname(env), output);
577 ASSERT_STREQ(output.c_str(), "885ssa");
578 }
579
580 HWTEST_F(NativeEngineTest, testUrlPort001, testing::ext::TestSize.Level0)
581 {
582 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
583 std::string output;
584 napi_env env = (napi_env)engine_;
585 DealNapiStrValue(env, url.GetPort(env), output);
586 ASSERT_STREQ(output.c_str(), "8080");
587 }
588
589 HWTEST_F(NativeEngineTest, testUrlPort002, testing::ext::TestSize.Level0)
590 {
591 OHOS::Url::URL url("http://username:password@host:100/directory/file?query#fragment");
592 std::string output;
593 napi_env env = (napi_env)engine_;
594 DealNapiStrValue(env, url.GetPort(env), output);
595 ASSERT_STREQ(output.c_str(), "100");
596 }
597
598
599 HWTEST_F(NativeEngineTest, testUrlPort003, testing::ext::TestSize.Level0)
600 {
601 OHOS::Url::URL url("http://username:password@host/directory/file?query#fragment");
602 std::string output;
603 napi_env env = (napi_env)engine_;
604 DealNapiStrValue(env, url.GetPort(env), output);
605 ASSERT_STREQ(output.c_str(), "");
606 }
607
608 HWTEST_F(NativeEngineTest, testUrlSetPort001, testing::ext::TestSize.Level0)
609 {
610 OHOS::Url::URL url("http://username:password@host:100/directory/file?query#fragment");
611 std::string output;
612 napi_env env = (napi_env)engine_;
613 DealNapiStrValue(env, url.GetPort(env), output);
614 ASSERT_STREQ(output.c_str(), "100");
615 url.SetPort("600");
616 DealNapiStrValue(env, url.GetPort(env), output);
617 ASSERT_STREQ(output.c_str(), "600");
618 }
619
620 HWTEST_F(NativeEngineTest, testUrlPathname001, testing::ext::TestSize.Level0)
621 {
622 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
623 std::string output;
624 napi_env env = (napi_env)engine_;
625 DealNapiStrValue(env, url.GetPath(env), output);
626 ASSERT_STREQ(output.c_str(), "/directory/file");
627 }
628
629 HWTEST_F(NativeEngineTest, testUrlPathname002, testing::ext::TestSize.Level0)
630 {
631 OHOS::Url::URL url("http://username:password@host:8080/directory?query#fragment");
632 std::string output;
633 napi_env env = (napi_env)engine_;
634 DealNapiStrValue(env, url.GetPath(env), output);
635 ASSERT_STREQ(output.c_str(), "/directory");
636 }
637
638 HWTEST_F(NativeEngineTest, testUrlPathname003, testing::ext::TestSize.Level0)
639 {
640 OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
641 std::string output;
642 napi_env env = (napi_env)engine_;
643 DealNapiStrValue(env, url.GetPath(env), output);
644 ASSERT_STREQ(output.c_str(), "/");
645 }
646
647 HWTEST_F(NativeEngineTest, testUrlSetPath001, testing::ext::TestSize.Level0)
648 {
649 OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
650 std::string output;
651 napi_env env = (napi_env)engine_;
652 DealNapiStrValue(env, url.GetPath(env), output);
653 ASSERT_STREQ(output.c_str(), "/");
654 url.SetPath("\\D:");
655 DealNapiStrValue(env, url.GetPath(env), output);
656 ASSERT_STREQ(output.c_str(), "/D:");
657 }
658
659 HWTEST_F(NativeEngineTest, testUrlSetPath002, testing::ext::TestSize.Level0)
660 {
661 OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
662 std::string output;
663 napi_env env = (napi_env)engine_;
664 DealNapiStrValue(env, url.GetPath(env), output);
665 ASSERT_STREQ(output.c_str(), "/");
666 url.SetPath(":\\D:");
667 DealNapiStrValue(env, url.GetPath(env), output);
668 ASSERT_STREQ(output.c_str(), "/:/D:");
669 }
670
671 HWTEST_F(NativeEngineTest, testUrlSetPath003, testing::ext::TestSize.Level0)
672 {
673 OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
674 std::string output;
675 napi_env env = (napi_env)engine_;
676 DealNapiStrValue(env, url.GetPath(env), output);
677 ASSERT_STREQ(output.c_str(), "/");
678 url.SetPath("::");
679 DealNapiStrValue(env, url.GetPath(env), output);
680 ASSERT_STREQ(output.c_str(), "/::");
681 }
682
683 HWTEST_F(NativeEngineTest, testUrlSearch001, testing::ext::TestSize.Level0)
684 {
685 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=qqqq#fragment");
686 std::string output;
687 napi_env env = (napi_env)engine_;
688 DealNapiStrValue(env, url.GetSearch(env), output);
689 ASSERT_STREQ(output.c_str(), "?query=qqqq");
690 }
691
692 HWTEST_F(NativeEngineTest, testUrlSearch002, testing::ext::TestSize.Level0)
693 {
694 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=qqqq&ll=pp#fragment");
695 std::string output;
696 napi_env env = (napi_env)engine_;
697 DealNapiStrValue(env, url.GetSearch(env), output);
698 ASSERT_STREQ(output.c_str(), "?query=qqqq&ll=pp");
699 }
700
701 HWTEST_F(NativeEngineTest, testUrlSearch003, testing::ext::TestSize.Level0)
702 {
703 OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
704 std::string output;
705 napi_env env = (napi_env)engine_;
706 DealNapiStrValue(env, url.GetSearch(env), output);
707 ASSERT_STREQ(output.c_str(), "?ppp9875=77");
708 }
709
710 HWTEST_F(NativeEngineTest, testUrlSetSearch001, testing::ext::TestSize.Level0)
711 {
712 OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
713 std::string output;
714 napi_env env = (napi_env)engine_;
715 DealNapiStrValue(env, url.GetSearch(env), output);
716 ASSERT_STREQ(output.c_str(), "?ppp9875=77");
717 url.SetSearch("");
718 DealNapiStrValue(env, url.GetSearch(env), output);
719 ASSERT_STREQ(output.c_str(), "");
720 }
721
722 HWTEST_F(NativeEngineTest, testUrlSetSearch002, testing::ext::TestSize.Level0)
723 {
724 OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
725 std::string output;
726 napi_env env = (napi_env)engine_;
727 DealNapiStrValue(env, url.GetSearch(env), output);
728 ASSERT_STREQ(output.c_str(), "?ppp9875=77");
729 url.SetSearch("?444=555");
730 DealNapiStrValue(env, url.GetSearch(env), output);
731 ASSERT_STREQ(output.c_str(), "?444=555");
732 }
733
734 HWTEST_F(NativeEngineTest, testUrlSetSearch003, testing::ext::TestSize.Level0)
735 {
736 OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
737 std::string output;
738 napi_env env = (napi_env)engine_;
739 DealNapiStrValue(env, url.GetSearch(env), output);
740 ASSERT_STREQ(output.c_str(), "?ppp9875=77");
741 url.SetSearch("444=555");
742 DealNapiStrValue(env, url.GetSearch(env), output);
743 ASSERT_STREQ(output.c_str(), "?444=555");
744 }
745
746 HWTEST_F(NativeEngineTest, testUrlSetSearch004, testing::ext::TestSize.Level0)
747 {
748 OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
749 std::string output;
750 napi_env env = (napi_env)engine_;
751 DealNapiStrValue(env, url.GetSearch(env), output);
752 ASSERT_STREQ(output.c_str(), "?ppp9875=77");
753 url.SetSearch("?##44=55");
754 DealNapiStrValue(env, url.GetSearch(env), output);
755 ASSERT_STREQ(output.c_str(), "?%23%2344=55");
756 }
757
758 HWTEST_F(NativeEngineTest, testUrlGetFragment001, testing::ext::TestSize.Level0)
759 {
760 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#fragment");
761 std::string output;
762 napi_env env = (napi_env)engine_;
763 DealNapiStrValue(env, url.GetFragment(env), output);
764 ASSERT_STREQ(output.c_str(), "#fragment");
765 }
766
767 HWTEST_F(NativeEngineTest, testUrlGetFragment002, testing::ext::TestSize.Level0)
768 {
769 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#fragment");
770 std::string output;
771 napi_env env = (napi_env)engine_;
772 DealNapiStrValue(env, url.GetFragment(env), output);
773 ASSERT_STREQ(output.c_str(), "#fragment");
774 }
775
776 HWTEST_F(NativeEngineTest, testUrlGetFragment003, testing::ext::TestSize.Level0)
777 {
778 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
779 std::string output;
780 napi_env env = (napi_env)engine_;
781 DealNapiStrValue(env, url.GetFragment(env), output);
782 ASSERT_STREQ(output.c_str(), "#123456");
783 }
784
785 HWTEST_F(NativeEngineTest, testUrlSetFragment001, testing::ext::TestSize.Level0)
786 {
787 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
788 std::string output;
789 napi_env env = (napi_env)engine_;
790 DealNapiStrValue(env, url.GetFragment(env), output);
791 ASSERT_STREQ(output.c_str(), "#123456");
792 url.SetFragment("");
793 DealNapiStrValue(env, url.GetFragment(env), output);
794 ASSERT_STREQ(output.c_str(), "");
795 }
796
797 HWTEST_F(NativeEngineTest, testUrlSetFragment002, testing::ext::TestSize.Level0)
798 {
799 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
800 std::string output;
801 napi_env env = (napi_env)engine_;
802 DealNapiStrValue(env, url.GetFragment(env), output);
803 ASSERT_STREQ(output.c_str(), "#123456");
804 url.SetFragment("#445566");
805 DealNapiStrValue(env, url.GetFragment(env), output);
806 ASSERT_STREQ(output.c_str(), "#445566");
807 }
808
809 HWTEST_F(NativeEngineTest, testUrlSetFragment003, testing::ext::TestSize.Level0)
810 {
811 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
812 std::string output;
813 napi_env env = (napi_env)engine_;
814 DealNapiStrValue(env, url.GetFragment(env), output);
815 ASSERT_STREQ(output.c_str(), "#123456");
816 url.SetFragment("445566");
817 DealNapiStrValue(env, url.GetFragment(env), output);
818 ASSERT_STREQ(output.c_str(), "#445566");
819 }
820
821 HWTEST_F(NativeEngineTest, testUrlIPV6001, testing::ext::TestSize.Level0)
822 {
823 OHOS::Url::URL url("http://[1080:0:0:0:8:800:200C:417A]/index.html");
824 napi_env env = (napi_env)engine_;
825 napi_value result = url.GetIsIpv6(env);
826 bool value = false;
827 napi_get_value_bool(env, result, &value);
828 ASSERT_TRUE(value);
829 }
830
831 HWTEST_F(NativeEngineTest, testUrlIPV6002, testing::ext::TestSize.Level0)
832 {
833 OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
834 napi_env env = (napi_env)engine_;
835 napi_value result = url.GetIsIpv6(env);
836 bool value = false;
837 napi_get_value_bool(env, result, &value);
838 ASSERT_FALSE(value);
839 }
840
841 HWTEST_F(NativeEngineTest, testUrlIPV6003, testing::ext::TestSize.Level0)
842 {
843 OHOS::Url::URL url("http://[1080:0:0:0:8:800:200C.417A]/index.html");
844 napi_env env = (napi_env)engine_;
845 napi_value result = url.GetIsIpv6(env);
846 bool value = false;
847 napi_get_value_bool(env, result, &value);
848 ASSERT_FALSE(value);
849 }
850
851 HWTEST_F(NativeEngineTest, testUrlGetOnOrOff001, testing::ext::TestSize.Level0)
852 {
853 OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
854 napi_env env = (napi_env)engine_;
855 napi_value result = url.GetOnOrOff(env);
856 bool value = false;
857 napi_get_value_bool(env, result, &value);
858 ASSERT_TRUE(value);
859 }
860
861 HWTEST_F(NativeEngineTest, testUrlSetHostname001, testing::ext::TestSize.Level0)
862 {
863 OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
864 napi_env env = (napi_env)engine_;
865 std::string output;
866 std::string value = "host";
867 url.SetHostname(value);
868 DealNapiStrValue(env, url.GetHostname(env), output);
869 ASSERT_STREQ(output.c_str(), "host");
870 }
871
872 HWTEST_F(NativeEngineTest, testUrlSetHostname002, testing::ext::TestSize.Level0)
873 {
874 OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
875 napi_env env = (napi_env)engine_;
876 std::string output;
877 std::string value = "";
878 url.SetHostname(value);
879 DealNapiStrValue(env, url.GetHostname(env), output);
880 ASSERT_STREQ(output.c_str(), "255.255.255.1");
881 }
882
883 HWTEST_F(NativeEngineTest, testUrlSearchParams001, testing::ext::TestSize.Level0)
884 {
885 OHOS::Url::URL url("http://username:password@host:8080/directory/file?foo=1&bar=2");
886 std::string output;
887 napi_env env = (napi_env)engine_;
888 DealNapiStrValue(env, url.GetSearch(env), output);
889 ASSERT_STREQ(output.c_str(), "?foo=1&bar=2");
890 }
891
892 HWTEST_F(NativeEngineTest, testUrlSearchParams002, testing::ext::TestSize.Level0)
893 {
894 OHOS::Url::URL url("https://example.com?d=value1&c=value2&b=大&4=key4");
895 std::string output;
896 napi_env env = (napi_env)engine_;
897 DealNapiStrValue(env, url.GetSearch(env), output);
898 ASSERT_STREQ(output.c_str(), "?d=value1&c=value2&b=大&4=key4");
899 }
900
901 HWTEST_F(NativeEngineTest, testUrlSearchParams003, testing::ext::TestSize.Level0)
902 {
903 OHOS::Url::URL url("http://username:password@host:8080/directory/file?你好=china#qwer=da");
904 std::string output;
905 napi_env env = (napi_env)engine_;
906 DealNapiStrValue(env, url.GetSearch(env), output);
907 ASSERT_STREQ(output.c_str(), "?你好=china");
908 }
909
910 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend001, testing::ext::TestSize.Level0)
911 {
912 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
913 std::string output;
914 napi_env env = (napi_env)engine_;
915 napi_value input1 = StrToNapiValue(env, "ma");
916 napi_value input2 = StrToNapiValue(env, "jk");
917 params.Append(env, input1, input2);
918 napi_value tempValue = params.GetArray(env);
919 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
920 DealNapiStrValue(env, ToString(env, paramsString), output);
921 ASSERT_STREQ(output.c_str(), "ma=jk");
922 }
923
924 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend002, testing::ext::TestSize.Level0)
925 {
926 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
927 std::string output;
928 napi_env env = (napi_env)engine_;
929 napi_value input1 = StrToNapiValue(env, "ma 大");
930 napi_value input2 = StrToNapiValue(env, "jk¥");
931 params.Append(env, input1, input2);
932 napi_value tempValue = params.GetArray(env);
933 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
934 DealNapiStrValue(env, ToString(env, paramsString), output);
935 ASSERT_STREQ(output.c_str(), "ma+%E5%A4%A7=jk%EF%BF%A5");
936 }
937
938 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend003, testing::ext::TestSize.Level0)
939 {
940 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
941 std::string output;
942 napi_env env = (napi_env)engine_;
943 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
944 napi_value input2 = StrToNapiValue(env, "jk");
945 params.Append(env, input1, input2);
946 napi_value tempValue = params.GetArray(env);
947 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
948 DealNapiStrValue(env, ToString(env, paramsString), output);
949 ASSERT_STREQ(output.c_str(), "foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk");
950 }
951
952 HWTEST_F(NativeEngineTest, testUrlSearchParamsDelete001, testing::ext::TestSize.Level0)
953 {
954 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
955 std::string output;
956 napi_env env = (napi_env)engine_;
957 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
958 napi_value input2 = StrToNapiValue(env, "jk");
959 params.Append(env, input1, input2);
960 params.Delete(env, input1);
961 napi_value tempValue = params.GetArray(env);
962 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
963 DealNapiStrValue(env, ToString(env, paramsString), output);
964 ASSERT_STREQ(output.c_str(), "");
965 }
966
967 HWTEST_F(NativeEngineTest, testUrlSearchParamsDelete002, testing::ext::TestSize.Level0)
968 {
969 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
970 std::string output;
971 napi_env env = (napi_env)engine_;
972 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
973 napi_value input2 = StrToNapiValue(env, "jk");
974 params.Append(env, input1, input2);
975 napi_value input3 = StrToNapiValue(env, "ma");
976 napi_value input4 = StrToNapiValue(env, "jk");
977 params.Append(env, input3, input4);
978 params.Delete(env, input1);
979 napi_value tempValue = params.GetArray(env);
980 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
981 DealNapiStrValue(env, ToString(env, paramsString), output);
982 ASSERT_STREQ(output.c_str(), "ma=jk");
983 }
984
985 HWTEST_F(NativeEngineTest, testUrlSearchParamsDelete003, testing::ext::TestSize.Level0)
986 {
987 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
988 std::string output;
989 napi_env env = (napi_env)engine_;
990 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
991 napi_value input2 = StrToNapiValue(env, "jk");
992 params.Append(env, input1, input2);
993 napi_value input3 = StrToNapiValue(env, "ma");
994 napi_value input4 = StrToNapiValue(env, "jk");
995 params.Append(env, input3, input4);
996 params.Delete(env, input1);
997 params.Delete(env, input3);
998 napi_value tempValue = params.GetArray(env);
999 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1000 DealNapiStrValue(env, ToString(env, paramsString), output);
1001 ASSERT_STREQ(output.c_str(), "");
1002 }
1003
1004 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet001, testing::ext::TestSize.Level0)
1005 {
1006 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1007 std::string output;
1008 napi_env env = (napi_env)engine_;
1009 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1010 napi_value input2 = StrToNapiValue(env, "jk");
1011 params.Append(env, input1, input2);
1012 DealNapiStrValue(env, params.Get(env, input1), output);
1013 ASSERT_STREQ(output.c_str(), "jk");
1014 }
1015
1016 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet002, testing::ext::TestSize.Level0)
1017 {
1018 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1019 std::string output;
1020 napi_env env = (napi_env)engine_;
1021 napi_value input1 = StrToNapiValue(env, "jk");
1022 DealNapiStrValue(env, params.Get(env, input1), output);
1023 ASSERT_STREQ(output.c_str(), "");
1024 }
1025
1026 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet003, testing::ext::TestSize.Level0)
1027 {
1028 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1029 std::string output;
1030 napi_env env = (napi_env)engine_;
1031 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1032 napi_value input2 = StrToNapiValue(env, "jk");
1033 params.Append(env, input1, input2);
1034 DealNapiStrValue(env, params.Get(env, input1), output);
1035 ASSERT_STREQ(output.c_str(), "jk");
1036 }
1037
1038 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll001, testing::ext::TestSize.Level0)
1039 {
1040 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1041 std::string output;
1042 napi_env env = (napi_env)engine_;
1043 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1044 napi_value input2 = StrToNapiValue(env, "jk");
1045 params.Append(env, input1, input2);
1046 napi_value input3 = StrToNapiValue(env, "jk");
1047 DealNapiStrValue(env, params.GetAll(env, input3), output);
1048 ASSERT_STREQ(output.c_str(), "");
1049 }
1050
1051 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll002, testing::ext::TestSize.Level0)
1052 {
1053 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1054 std::string output;
1055 napi_env env = (napi_env)engine_;
1056 napi_value input1 = StrToNapiValue(env, "ma");
1057 napi_value input2 = StrToNapiValue(env, "jk");
1058 params.Append(env, input1, input2);
1059 napi_value input3 = StrToNapiValue(env, "jk1");
1060 DealNapiStrValue(env, params.GetAll(env, input3), output);
1061 ASSERT_STREQ(output.c_str(), "");
1062 }
1063
1064 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll003, testing::ext::TestSize.Level0)
1065 {
1066 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1067 std::string output;
1068 napi_env env = (napi_env)engine_;
1069 napi_value input1 = StrToNapiValue(env, "#[%@]");
1070 napi_value input2 = StrToNapiValue(env, "jk");
1071 params.Append(env, input1, input2);
1072 napi_value input3 = StrToNapiValue(env, "ma1");
1073 napi_value input4 = StrToNapiValue(env, "jk1");
1074 params.Append(env, input3, input4);
1075 napi_value input5 = StrToNapiValue(env, "jk2");
1076 DealNapiStrValue(env, params.GetAll(env, input5), output);
1077 ASSERT_STREQ(output.c_str(), "");
1078 }
1079
1080 HWTEST_F(NativeEngineTest, testUrlSearchParamsToUSVString001, testing::ext::TestSize.Level0)
1081 {
1082 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1083 std::string output;
1084 napi_env env = (napi_env)engine_;
1085 napi_value input1 = StrToNapiValue(env, "你好");
1086 napi_value input2 = StrToNapiValue(env, "안녕하세요");
1087 params.Append(env, input1, input2);
1088 napi_value input3 = StrToNapiValue(env, "[saa]");
1089 napi_value input4 = StrToNapiValue(env, "{aas}");
1090 params.Append(env, input3, input4);
1091 napi_value input5 = StrToNapiValue(env, "你好");
1092 DealNapiStrValue(env, params.Get(env, input5), output);
1093 ASSERT_STREQ(output.c_str(), "안녕하세요");
1094 }
1095
1096 HWTEST_F(NativeEngineTest, testUrlSearchParamsHas001, testing::ext::TestSize.Level0)
1097 {
1098 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1099 std::string output;
1100 napi_env env = (napi_env)engine_;
1101 napi_value input1 = StrToNapiValue(env, "ma");
1102 DealNapiStrValue(env, params.IsHas(env, input1), output);
1103 ASSERT_STREQ(output.c_str(), "");
1104 }
1105
1106 HWTEST_F(NativeEngineTest, testUrlSearchParamsHas002, testing::ext::TestSize.Level0)
1107 {
1108 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1109 std::string output;
1110 napi_env env = (napi_env)engine_;
1111 napi_value input1 = StrToNapiValue(env, "ma");
1112 napi_value input2 = StrToNapiValue(env, "jk");
1113 params.Append(env, input1, input2);
1114 napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1115 napi_value input4 = StrToNapiValue(env, "jk1");
1116 params.Append(env, input3, input4);
1117 DealNapiStrValue(env, params.IsHas(env, input1), output);
1118 ASSERT_STREQ(output.c_str(), "");
1119 }
1120
1121 HWTEST_F(NativeEngineTest, testUrlSearchParamsHas003, testing::ext::TestSize.Level0)
1122 {
1123 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1124 std::string output;
1125 napi_env env = (napi_env)engine_;
1126 napi_value input1 = StrToNapiValue(env, "ma");
1127 napi_value input2 = StrToNapiValue(env, "jk");
1128 params.Append(env, input1, input2);
1129 napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1130 napi_value input4 = StrToNapiValue(env, "jk1");
1131 params.Append(env, input3, input4);
1132 DealNapiStrValue(env, params.IsHas(env, input3), output);
1133 ASSERT_STREQ(output.c_str(), "");
1134 }
1135
1136 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet001, testing::ext::TestSize.Level0)
1137 {
1138 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1139 std::string output;
1140 napi_env env = (napi_env)engine_;
1141 napi_value input1 = StrToNapiValue(env, "ma");
1142 napi_value input2 = StrToNapiValue(env, "jk");
1143 params.Append(env, input1, input2);
1144 napi_value input3 = StrToNapiValue(env, "aa");
1145 params.Set(env, input1, input3);
1146 napi_value tempValue = params.GetArray(env);
1147 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1148 DealNapiStrValue(env, ToString(env, paramsString), output);
1149 ASSERT_STREQ(output.c_str(), "ma=aa");
1150 }
1151
1152 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet002, testing::ext::TestSize.Level0)
1153 {
1154 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1155 std::string output;
1156 napi_env env = (napi_env)engine_;
1157 napi_value input1 = StrToNapiValue(env, "ma1");
1158 napi_value input2 = StrToNapiValue(env, "aa");
1159 params.Append(env, input1, input2);
1160 params.Set(env, input1, input2);
1161 napi_value tempValue = params.GetArray(env);
1162 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1163 DealNapiStrValue(env, ToString(env, paramsString), output);
1164 ASSERT_STREQ(output.c_str(), "ma1=aa");
1165 }
1166
1167 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet003, testing::ext::TestSize.Level0)
1168 {
1169 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1170 std::string output;
1171 napi_env env = (napi_env)engine_;
1172 napi_value input1 = StrToNapiValue(env, "ma");
1173 napi_value input2 = StrToNapiValue(env, "jk");
1174 params.Append(env, input1, input2);
1175 napi_value input3 = StrToNapiValue(env, "ma1");
1176 napi_value input4 = StrToNapiValue(env, "aa");
1177 params.Set(env, input3, input4);
1178 napi_value tempValue = params.GetArray(env);
1179 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1180 DealNapiStrValue(env, ToString(env, paramsString), output);
1181 ASSERT_STREQ(output.c_str(), "ma=jk&ma1=aa");
1182 }
1183
1184 HWTEST_F(NativeEngineTest, testUrlSearchParamsSort001, testing::ext::TestSize.Level0)
1185 {
1186 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1187 std::string output;
1188 napi_env env = (napi_env)engine_;
1189 napi_value input1 = StrToNapiValue(env, "ma");
1190 napi_value input2 = StrToNapiValue(env, "jk");
1191 params.Append(env, input1, input2);
1192 napi_value input3 = StrToNapiValue(env, "a");
1193 napi_value input4 = StrToNapiValue(env, "jk1");
1194 params.Append(env, input3, input4);
1195 params.Sort();
1196 napi_value tempValue = params.GetArray(env);
1197 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1198 DealNapiStrValue(env, ToString(env, paramsString), output);
1199 ASSERT_STREQ(output.c_str(), "a=jk1&ma=jk");
1200 }
1201
1202 HWTEST_F(NativeEngineTest, testUrlSearchParamsSort002, testing::ext::TestSize.Level0)
1203 {
1204 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1205 std::string output;
1206 napi_env env = (napi_env)engine_;
1207 napi_value input1 = StrToNapiValue(env, "ma");
1208 napi_value input2 = StrToNapiValue(env, "jk");
1209 params.Append(env, input1, input2);
1210 napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1211 napi_value input4 = StrToNapiValue(env, "jk1");
1212 params.Append(env, input3, input4);
1213 params.Sort();
1214 napi_value tempValue = params.GetArray(env);
1215 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1216 DealNapiStrValue(env, ToString(env, paramsString), output);
1217 ASSERT_STREQ(output.c_str(), "foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk1&ma=jk");
1218 }
1219
1220 HWTEST_F(NativeEngineTest, testUrlSearchParamsSort003, testing::ext::TestSize.Level0)
1221 {
1222 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1223 std::string output;
1224 napi_env env = (napi_env)engine_;
1225 napi_value input1 = StrToNapiValue(env, "ma");
1226 napi_value input2 = StrToNapiValue(env, "jk");
1227 params.Append(env, input1, input2);
1228 napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1229 napi_value input4 = StrToNapiValue(env, "jk1");
1230 params.Append(env, input3, input4);
1231 napi_value input5 = StrToNapiValue(env, "a");
1232 napi_value input6 = StrToNapiValue(env, "jk2");
1233 params.Append(env, input5, input6);
1234 params.Sort();
1235 napi_value tempValue = params.GetArray(env);
1236 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1237 DealNapiStrValue(env, ToString(env, paramsString), output);
1238 ASSERT_STREQ(output.c_str(), "a=jk2&foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk1&ma=jk");
1239 }
1240
1241 HWTEST_F(NativeEngineTest, testUrlSearchParamsToString001, testing::ext::TestSize.Level0)
1242 {
1243 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1244 std::string output;
1245 napi_env env = (napi_env)engine_;
1246 napi_value input1 = StrToNapiValue(env, "1 12");
1247 napi_value input2 = StrToNapiValue(env, "jk");
1248 params.Append(env, input1, input2);
1249 napi_value tempValue = params.GetArray(env);
1250 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1251 DealNapiStrValue(env, ToString(env, paramsString), output);
1252 ASSERT_STREQ(output.c_str(), "1+12=jk");
1253 }
1254
1255 HWTEST_F(NativeEngineTest, testUrlSearchParamsToString002, testing::ext::TestSize.Level0)
1256 {
1257 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1258 std::string output;
1259 napi_env env = (napi_env)engine_;
1260 napi_value input1 = StrToNapiValue(env, "¥=)");
1261 napi_value input2 = StrToNapiValue(env, "jk");
1262 params.Append(env, input1, input2);
1263 napi_value tempValue = params.GetArray(env);
1264 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1265 DealNapiStrValue(env, ToString(env, paramsString), output);
1266 ASSERT_STREQ(output.c_str(), "%EF%BF%A5%3D%29=jk");
1267 }
1268
1269 HWTEST_F(NativeEngineTest, testUrlSearchParamsToString003, testing::ext::TestSize.Level0)
1270 {
1271 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1272 std::string output;
1273 napi_env env = (napi_env)engine_;
1274 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1275 napi_value input2 = StrToNapiValue(env, "jk");
1276 params.Append(env, input1, input2);
1277 napi_value tempValue = params.GetArray(env);
1278 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1279 DealNapiStrValue(env, ToString(env, paramsString), output);
1280 ASSERT_STREQ(output.c_str(), "foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk");
1281 }
1282
1283 HWTEST_F(NativeEngineTest, testUrlSearchParams, testing::ext::TestSize.Level0)
1284 {
1285 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1286 std::string output;
1287 napi_env env = (napi_env)engine_;
1288 napi_value input1 = StrToNapiValue(env, "ma");
1289 DealNapiStrValue(env, params.IsHas(env, input1), output);
1290 ASSERT_STREQ(output.c_str(), "");
1291 }
1292
1293 HWTEST_F(NativeEngineTest, testUrlSearchParamsSetArray, testing::ext::TestSize.Level0)
1294 {
1295 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1296 std::string input1 = "jk";
1297 std::string input2 = "ma";
1298 napi_env env = (napi_env)engine_;
1299 std::vector<std::string> vec;
1300 vec.push_back(input1);
1301 vec.push_back(input2);
1302 params.SetArray(env, vec);
1303 napi_value result = params.GetArray(env);
1304 uint32_t length = 0;
1305 napi_value napiStr = nullptr;
1306 size_t arraySize = 0;
1307 napi_get_array_length(env, result, &length);
1308 std::string cstr1 = "";
1309 for (size_t i = 0; i < length; i++) {
1310 napi_get_element(env, result, i, &napiStr);
1311 napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1312 if (arraySize > 0) {
1313 napi_get_value_string_utf8(env, napiStr, cstr1.data(), arraySize + 1, &arraySize);
1314 }
1315 if (i == 0) {
1316 ASSERT_STREQ("jk", cstr1.data());
1317 } else {
1318 ASSERT_STREQ(cstr1.data(), "ma");
1319 }
1320 }
1321 }
1322
1323 HWTEST_F(NativeEngineTest, testUrlSearchParamsIterByKeys, testing::ext::TestSize.Level0)
1324 {
1325 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1326 std::string input1 = "jk";
1327 std::string input2 = "ma";
1328 napi_env env = (napi_env)engine_;
1329 std::vector<std::string> vec;
1330 vec.push_back(input1);
1331 vec.push_back(input2);
1332 params.SetArray(env, vec);
1333 napi_value result = params.IterByKeys(env);
1334 uint32_t length = 0;
1335 napi_value napiStr = nullptr;
1336 size_t arraySize = 0;
1337 napi_get_array_length(env, result, &length);
1338 std::string cstr = "";
1339 for (size_t i = 0; i < length; i += 2) {
1340 napi_get_element(env, result, i, &napiStr);
1341 napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1342 if (arraySize > 0) {
1343 napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize);
1344 }
1345 }
1346 ASSERT_STREQ(cstr.data(), "jk");
1347 }
1348
1349 HWTEST_F(NativeEngineTest, testUrlSearchParamsIterByValues, testing::ext::TestSize.Level0)
1350 {
1351 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1352 std::string input1 = "jk";
1353 std::string input2 = "ma";
1354 napi_env env = (napi_env)engine_;
1355 std::vector<std::string> vec;
1356 vec.push_back(input1);
1357 vec.push_back(input2);
1358 params.SetArray(env, vec);
1359 napi_value result = params.IterByValues(env);
1360 uint32_t length = 0;
1361 napi_value napiStr = nullptr;
1362 size_t arraySize = 0;
1363 napi_get_array_length(env, result, &length);
1364 std::string cstr = "";
1365 for (size_t i = 0; i < length; i++) {
1366 napi_get_element(env, result, i, &napiStr);
1367 napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1368 if (arraySize > 0) {
1369 napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize);
1370 }
1371 }
1372 ASSERT_STREQ(cstr.data(), "ma");
1373 }
1374
1375 HWTEST_F(NativeEngineTest, testUrlSearchParamsEntries001, testing::ext::TestSize.Level0)
1376 {
1377 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1378 napi_env env = (napi_env)engine_;
1379 napi_value input1 = StrToNapiValue(env, "ma");
1380 napi_value input2 = StrToNapiValue(env, "jk");
1381 params.Append(env, input1, input2);
1382 napi_value input3 = StrToNapiValue(env, "你好");
1383 napi_value input4 = StrToNapiValue(env, "jk1");
1384 params.Append(env, input3, input4);
1385 napi_value input5 = StrToNapiValue(env, "a");
1386 napi_value input6 = StrToNapiValue(env, "jk2");
1387 params.Append(env, input5, input6);
1388 napi_value result = params.Entries(env);
1389 uint32_t length = 0;
1390 napi_value napiStr = nullptr;
1391 size_t arraySize = 0;
1392 napi_get_array_length(env, result, &length);
1393 std::string cstr = "";
1394 for (size_t i = 0; i < length; i++) {
1395 napi_get_element(env, result, i, &napiStr);
1396 napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1397 if (arraySize > 0) {
1398 napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize);
1399 }
1400 }
1401 ASSERT_EQ(length, 3);
1402 }