1 /*
2 * Copyright (c) 2022-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 "test.h"
17 #include "napi/native_api.h"
18 #include "napi/native_node_api.h"
19 #include "tools/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 #include "native_module_url.h"
27 #include "url_helper.h"
28
29 #define ASSERT_CHECK_CALL(call) \
30 { \
31 ASSERT_EQ(call, napi_ok); \
32 }
33
34 #define ASSERT_CHECK_VALUE_TYPE(env, value, type) \
35 { \
36 napi_valuetype valueType = napi_undefined; \
37 ASSERT_TRUE(value != nullptr); \
38 ASSERT_CHECK_CALL(napi_typeof(env, value, &valueType)); \
39 ASSERT_EQ(valueType, type); \
40 }
41
DealNapiStrValue(napi_env env,const napi_value napiStr,std::string & result)42 napi_status DealNapiStrValue(napi_env env, const napi_value napiStr, std::string &result)
43 {
44 std::string buffer = "";
45 size_t bufferSize = 0;
46 napi_status status = napi_ok;
47 status = napi_get_value_string_utf8(env, napiStr, nullptr, -1, &bufferSize);
48 buffer.reserve(bufferSize + 1);
49 buffer.resize(bufferSize);
50 if (status != napi_ok) {
51 HILOG_ERROR("can not get buffer size");
52 return status;
53 }
54 if (bufferSize > 0) {
55 status = napi_get_value_string_utf8(env, napiStr, buffer.data(), bufferSize + 1, &bufferSize);
56 if (status != napi_ok) {
57 HILOG_ERROR("can not get buffer value");
58 return status;
59 }
60 }
61 if (buffer.data() != nullptr) {
62 result = buffer;
63 }
64 return status;
65 }
66
StrToNapiValue(napi_env env,const std::string & result)67 napi_value StrToNapiValue(napi_env env, const std::string &result)
68 {
69 napi_value output = nullptr;
70 napi_create_string_utf8(env, result.c_str(), result.size(), &output);
71 return output;
72 }
73
IsEscapeRange(const char ch)74 static bool IsEscapeRange(const char ch)
75 {
76 if ((ch > 0 && ch < '*') || (ch > '*' && ch < '-') || (ch == '/') ||
77 (ch > '9' && ch < 'A') || (ch > 'Z' && ch < '_') || (ch == '`') || (ch > 'z')) {
78 return true;
79 }
80 return false;
81 }
82
ReviseStr(std::string & str,std::string * reviseChar)83 static std::string ReviseStr(std::string &str, std::string *reviseChar)
84 {
85 icu::StringPiece sp(str.c_str());
86 icu::UnicodeString wstr = icu::UnicodeString::fromUTF8(sp);
87 const size_t lenStr = static_cast<size_t>(wstr.length());
88 if (lenStr == 0) {
89 return "";
90 }
91 std::string output = "";
92 size_t numOfAscii = 128; // 128:Number of ASCII characters
93 size_t i = 0;
94 for (; i < lenStr; i++) {
95 auto charaEncode = static_cast<size_t>(wstr[i]);
96 if (charaEncode < numOfAscii) {
97 // 2:Defines the escape range of ASCII characters
98 if (IsEscapeRange(charaEncode)) {
99 output += reviseChar[charaEncode];
100 } else {
101 output += str.substr(i, 1);
102 }
103 } else if (charaEncode <= 0x000007FF) { // Convert the Unicode code into two bytes
104 std::string output1 = reviseChar[0x000000C0 | (charaEncode / 64)]; // 64:the first byte
105 std::string output2 = reviseChar[numOfAscii | (charaEncode & 0x0000003F)];
106 output += output1 + output2;
107 } else if ((charaEncode >= 0x0000E000) || (charaEncode <= 0x0000D7FF)) {
108 std::string output1 = reviseChar[0x000000E0 | (charaEncode / 4096)]; // 4096:Acquisition method
109 std::string output2 = reviseChar[numOfAscii | ((charaEncode / 64) & 0x0000003F)]; // 64:second byte
110 std::string output3 = reviseChar[numOfAscii | (charaEncode & 0x0000003F)];
111 output += output1 + output2 + output3;
112 } else {
113 const size_t charaEncode1 = static_cast<size_t>(str[++i]) & 1023; // 1023:Convert codes
114 charaEncode = 65536 + (((charaEncode & 1023) << 10) | charaEncode1); // 65536:Specific transcoding
115 std::string output1 = reviseChar[0x000000F0 | (charaEncode / 262144)]; // 262144:the first byte
116 std::string output2 = reviseChar[numOfAscii | ((charaEncode / 4096) & 0x0000003F)]; // 4096:second byte
117 std::string output3 = reviseChar[numOfAscii | ((charaEncode / 64) & 0x0000003F)]; // 64:third byte
118 std::string output4 = reviseChar[numOfAscii | (charaEncode & 0x0000003F)];
119 output += output1 + output2 + output3 + output4;
120 }
121 }
122 return output;
123 }
124
DecimalToPercentHexString(uint8_t n)125 static std::string DecimalToPercentHexString(uint8_t n)
126 {
127 std::string tem = "%";
128 return tem + OHOS::Url::HEX_CHAR_MAP[(n >> OHOS::Url::INT_SHIFT_SIZE) & 0xf] + OHOS::Url::HEX_CHAR_MAP[n & 0xf];
129 }
130
ToString(napi_env env,std::vector<std::string> & searchParams)131 napi_value ToString(napi_env env, std::vector<std::string> &searchParams)
132 {
133 std::string output = "";
134 std::string reviseChar[256] = {""}; // 256:Array length
135 for (size_t i = 0; i < 256; ++i) { // 256:Array length
136 size_t j = i;
137 std::stringstream ioss;
138 std::string str1 = "";
139 ioss << std::hex << j;
140 ioss >> str1;
141 transform(str1.begin(), str1.end(), str1.begin(), ::toupper);
142 if (i < 16) { // 16:Total number of 0-F
143 reviseChar[i] = '%' + ("0" + str1);
144 } else {
145 reviseChar[i] = '%' + str1;
146 }
147 }
148 reviseChar[0x20] = "+"; // 0x20:ASCII value of spaces
149 const size_t lenStr = searchParams.size();
150 napi_value result = nullptr;
151 if (lenStr == 0) {
152 napi_create_string_utf8(env, output.c_str(), output.size(), &result);
153 return result;
154 }
155 std::string firstStrKey = ReviseStr(searchParams[0], reviseChar);
156 std::string firstStrValue = ReviseStr(searchParams[1], reviseChar);
157 output = firstStrKey + "=" + firstStrValue;
158 if (lenStr % 2 == 0) { // 2:Divisible by 2
159 size_t pos = 2; // 2:Initial Position
160 for (; pos < lenStr; pos += 2) { // 2:Searching for the number and number of keys and values
161 std::string strKey = ReviseStr(searchParams[pos], reviseChar);
162 std::string strValue = ReviseStr(searchParams[pos + 1], reviseChar);
163 output += +"&" + strKey + "=" + strValue;
164 }
165 }
166 napi_create_string_utf8(env, output.c_str(), output.size(), &result);
167 return result;
168 }
169
GetParamsStrig(napi_env env,const napi_value tempStr)170 static std::vector<std::string> GetParamsStrig(napi_env env, const napi_value tempStr)
171 {
172 std::vector<std::string> vec;
173 size_t arraySize = 0;
174 uint32_t length = 0;
175 napi_get_array_length(env, tempStr, &length);
176 napi_value napiStr = nullptr;
177 for (size_t i = 0; i < length; i++) {
178 napi_get_element(env, tempStr, i, &napiStr);
179 if (napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize) != napi_ok) {
180 HILOG_ERROR("can not get napiStr size");
181 return vec;
182 }
183 if (arraySize > 0) {
184 std::string cstr = "";
185 cstr.resize(arraySize);
186 if (napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize) != napi_ok) {
187 HILOG_ERROR("can not get napiStr size");
188 return vec;
189 }
190 vec.push_back(cstr);
191 } else {
192 vec.push_back("");
193 }
194 }
195 return vec;
196 }
197
198 HWTEST_F(NativeEngineTest, testUrlConstructs001, testing::ext::TestSize.Level0)
199 {
200 OHOS::Url::URL url("https://example.org:81/a/b/c?query#fragment");
201 std::string output;
202 napi_env env = (napi_env)engine_;
203 DealNapiStrValue(env, url.GetPath(env), output);
204 ASSERT_STREQ(output.c_str(), "/a/b/c");
205 }
206
207 HWTEST_F(NativeEngineTest, testUrlConstructs002, testing::ext::TestSize.Level0)
208 {
209 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
210 std::string output;
211 napi_env env = (napi_env)engine_;
212 DealNapiStrValue(env, url.GetPath(env), output);
213 ASSERT_STREQ(output.c_str(), "/directory/file");
214 }
215
216 HWTEST_F(NativeEngineTest, testUrlConstructs003, testing::ext::TestSize.Level0)
217 {
218 OHOS::Url::URL url("../baz", "http://example.org/foo/bar");
219 std::string output;
220 napi_env env = (napi_env)engine_;
221 DealNapiStrValue(env, url.GetPath(env), output);
222 ASSERT_STREQ(output.c_str(), "/baz");
223 }
224
225 HWTEST_F(NativeEngineTest, testUrlConstructs004, testing::ext::TestSize.Level0)
226 {
227 OHOS::Url::URL url("/../sca/./path/path/../scasa/jjjjj", "http://www.example.com");
228 std::string output;
229 napi_env env = (napi_env)engine_;
230 DealNapiStrValue(env, url.GetPath(env), output);
231 ASSERT_STREQ(output.c_str(), "/sca/path/scasa/jjjjj");
232 }
233
234 HWTEST_F(NativeEngineTest, testUrlConstructs005, testing::ext::TestSize.Level0)
235 {
236 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
237 std::string output;
238 napi_env env = (napi_env)engine_;
239 DealNapiStrValue(env, url.GetScheme(env), output);
240 ASSERT_STREQ(output.c_str(), "http:");
241 }
242
243 HWTEST_F(NativeEngineTest, testUrlConstructs006, testing::ext::TestSize.Level0)
244 {
245 OHOS::Url::URL base("http://www.example.com");
246 OHOS::Url::URL url("//sca/./path/./scasa#", base);
247 std::string output;
248 napi_env env = (napi_env)engine_;
249 DealNapiStrValue(env, url.GetPath(env), output);
250 ASSERT_STREQ(output.c_str(), "/path/scasa");
251 }
252
253 HWTEST_F(NativeEngineTest, testUrlConstructs007, testing::ext::TestSize.Level0)
254 {
255 OHOS::Url::URL base("http://www.example.com");
256 OHOS::Url::URL url("/dire/query", base);
257 std::string output;
258 napi_env env = (napi_env)engine_;
259 DealNapiStrValue(env, url.GetPath(env), output);
260 ASSERT_STREQ(output.c_str(), "/dire/query");
261 }
262
263 HWTEST_F(NativeEngineTest, testUrlConstructs008, testing::ext::TestSize.Level0)
264 {
265 OHOS::Url::URL base("http://www.example.com");
266 OHOS::Url::URL url("foo/bar//fragment", base);
267 std::string output;
268 napi_env env = (napi_env)engine_;
269 DealNapiStrValue(env, url.GetPath(env), output);
270 ASSERT_STREQ(output.c_str(), "/foo/bar//fragment");
271 }
272
273 HWTEST_F(NativeEngineTest, testUrlConstructs009, testing::ext::TestSize.Level0)
274 {
275 OHOS::Url::URL base("http://www.example.com");
276 OHOS::Url::URL url("/../sca/./path/./s#casa", base);
277 std::string output;
278 napi_env env = (napi_env)engine_;
279 DealNapiStrValue(env, url.GetPath(env), output);
280 ASSERT_STREQ(output.c_str(), "/sca/path/s");
281 }
282
283 HWTEST_F(NativeEngineTest, testUrlConstructs010, testing::ext::TestSize.Level0)
284 {
285 OHOS::Url::URL base("http://www.example.com");
286 OHOS::Url::URL url("/../sca/./path/./sca?sa", base);
287 std::string output;
288 napi_env env = (napi_env)engine_;
289 DealNapiStrValue(env, url.GetPath(env), output);
290 ASSERT_STREQ(output.c_str(), "/sca/path/sca");
291 }
292
293 HWTEST_F(NativeEngineTest, testUrlConstructs011, testing::ext::TestSize.Level0)
294 {
295 OHOS::Url::URL base("http://www.example.com");
296 OHOS::Url::URL url("", base);
297 std::string output;
298 napi_env env = (napi_env)engine_;
299 DealNapiStrValue(env, url.GetPath(env), output);
300 ASSERT_STREQ(output.c_str(), "/");
301 }
302
303 HWTEST_F(NativeEngineTest, testUrlConstructs012, testing::ext::TestSize.Level0)
304 {
305 OHOS::Url::URL url("file://\\/www.example.com");
306 std::string output;
307 napi_env env = (napi_env)engine_;
308 DealNapiStrValue(env, url.GetScheme(env), output);
309 ASSERT_STREQ(output.c_str(), "file:");
310 }
311
312 HWTEST_F(NativeEngineTest, testUrlConstructs013, testing::ext::TestSize.Level0)
313 {
314 OHOS::Url::URL url("file:///www.example.com");
315 std::string output;
316 napi_env env = (napi_env)engine_;
317 DealNapiStrValue(env, url.GetScheme(env), output);
318 ASSERT_STREQ(output.c_str(), "file:");
319 }
320
321 HWTEST_F(NativeEngineTest, testUrlConstructs014, testing::ext::TestSize.Level0)
322 {
323 OHOS::Url::URL url("http1://www.example.com");
324 std::string output;
325 napi_env env = (napi_env)engine_;
326 DealNapiStrValue(env, url.GetScheme(env), output);
327 ASSERT_STREQ(output.c_str(), "http1:");
328 }
329
330 HWTEST_F(NativeEngineTest, testUrlConstructs015, testing::ext::TestSize.Level0)
331 {
332 OHOS::Url::URL url("http2://www.example.com:22/adfee/kk?a=4#saf");
333 std::string output;
334 napi_env env = (napi_env)engine_;
335 DealNapiStrValue(env, url.GetScheme(env), output);
336 ASSERT_STREQ(output.c_str(), "http2:");
337 }
338
339 HWTEST_F(NativeEngineTest, testUrlConstructs016, testing::ext::TestSize.Level0)
340 {
341 OHOS::Url::URL url("http2://username:password@www.example.com:22/adfee/kk?a=4#saf");
342 std::string output;
343 napi_env env = (napi_env)engine_;
344 DealNapiStrValue(env, url.GetScheme(env), output);
345 ASSERT_STREQ(output.c_str(), "http2:");
346 }
347
348 HWTEST_F(NativeEngineTest, testUrlConstructs017, testing::ext::TestSize.Level0)
349 {
350 OHOS::Url::URL url("http://");
351 napi_env env = (napi_env)engine_;
352 napi_value result = url.GetOnOrOff(env);
353 bool value = false;
354 napi_get_value_bool(env, result, &value);
355 ASSERT_FALSE(value);
356 }
357
358 HWTEST_F(NativeEngineTest, testUrlConstructs018, testing::ext::TestSize.Level0)
359 {
360 OHOS::Url::URL url("http://username:password@/adfee/kk?a=4#saf");
361 napi_env env = (napi_env)engine_;
362 napi_value result = url.GetOnOrOff(env);
363 bool value = false;
364 napi_get_value_bool(env, result, &value);
365 ASSERT_FALSE(value);
366 }
367
368 HWTEST_F(NativeEngineTest, testUrlConstructs019, testing::ext::TestSize.Level0)
369 {
370 OHOS::Url::URL url("http://username:password@/adfee/kk?a=4#saf", "");
371 napi_env env = (napi_env)engine_;
372 napi_value result = url.GetOnOrOff(env);
373 bool value = false;
374 napi_get_value_bool(env, result, &value);
375 ASSERT_FALSE(value);
376 }
377
378 HWTEST_F(NativeEngineTest, testUrlConstructs020, testing::ext::TestSize.Level0)
379 {
380 OHOS::Url::URL url("http://username:password@sda/adfee/kk?a=4#saf", "http://sads/sad");
381 napi_env env = (napi_env)engine_;
382 napi_value result = url.GetOnOrOff(env);
383 bool value = false;
384 napi_get_value_bool(env, result, &value);
385 ASSERT_TRUE(value);
386 }
387
388 HWTEST_F(NativeEngineTest, testUrlConstructs021, testing::ext::TestSize.Level0)
389 {
390 OHOS::Url::URL url("//fdsa", "http://sad");
391 napi_env env = (napi_env)engine_;
392 napi_value result = url.GetOnOrOff(env);
393 bool value = false;
394 napi_get_value_bool(env, result, &value);
395 ASSERT_TRUE(value);
396 }
397
398 HWTEST_F(NativeEngineTest, testUrlConstructs022, testing::ext::TestSize.Level0)
399 {
400 OHOS::Url::URL url("-http://username:password@/adfee/kk?a=4#saf");
401 napi_env env = (napi_env)engine_;
402 napi_value result = url.GetOnOrOff(env);
403 bool value = false;
404 napi_get_value_bool(env, result, &value);
405 ASSERT_FALSE(value);
406 }
407
408 HWTEST_F(NativeEngineTest, testUrlConstructs023, testing::ext::TestSize.Level0)
409 {
410 OHOS::Url::URL base("http://www.example.com");
411 OHOS::Url::URL url("//asd", base);
412 napi_env env = (napi_env)engine_;
413 napi_value result = url.GetOnOrOff(env);
414 bool value = false;
415 napi_get_value_bool(env, result, &value);
416 ASSERT_TRUE(value);
417 }
418
419 HWTEST_F(NativeEngineTest, testUrlProtocol001, testing::ext::TestSize.Level0)
420 {
421 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
422 std::string output;
423 napi_env env = (napi_env)engine_;
424 DealNapiStrValue(env, url.GetScheme(env), output);
425 ASSERT_STREQ(output.c_str(), "http:");
426 }
427
428 HWTEST_F(NativeEngineTest, testUrlProtocol002, testing::ext::TestSize.Level0)
429 {
430 OHOS::Url::URL url("ftp://username:password@host:8080/directory/file?query#fragment");
431 std::string output;
432 napi_env env = (napi_env)engine_;
433 DealNapiStrValue(env, url.GetScheme(env), output);
434 ASSERT_STREQ(output.c_str(), "ftp:");
435 }
436
437 HWTEST_F(NativeEngineTest, testUrlProtocol003, testing::ext::TestSize.Level0)
438 {
439 OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
440 std::string output;
441 napi_env env = (napi_env)engine_;
442 DealNapiStrValue(env, url.GetScheme(env), output);
443 ASSERT_STREQ(output.c_str(), "https:");
444 }
445
446 HWTEST_F(NativeEngineTest, testUrlSetScheme001, testing::ext::TestSize.Level0)
447 {
448 OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
449 std::string output;
450 napi_env env = (napi_env)engine_;
451 DealNapiStrValue(env, url.GetScheme(env), output);
452 ASSERT_STREQ(output.c_str(), "https:");
453 url.SetScheme("ftp:");
454 DealNapiStrValue(env, url.GetScheme(env), output);
455 ASSERT_STREQ(output.c_str(), "ftp:");
456 }
457
458 HWTEST_F(NativeEngineTest, testUrlSetScheme002, testing::ext::TestSize.Level0)
459 {
460 OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
461 std::string output;
462 napi_env env = (napi_env)engine_;
463 DealNapiStrValue(env, url.GetScheme(env), output);
464 ASSERT_STREQ(output.c_str(), "https:");
465 url.SetScheme("666");
466 DealNapiStrValue(env, url.GetScheme(env), output);
467 ASSERT_STREQ(output.c_str(), "https:");
468 }
469
470 HWTEST_F(NativeEngineTest, testUrlSetScheme003, testing::ext::TestSize.Level0)
471 {
472 OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
473 std::string output;
474 napi_env env = (napi_env)engine_;
475 DealNapiStrValue(env, url.GetScheme(env), output);
476 ASSERT_STREQ(output.c_str(), "https:");
477 url.SetScheme("-/+");
478 DealNapiStrValue(env, url.GetScheme(env), output);
479 ASSERT_STREQ(output.c_str(), "https:");
480 }
481
482 HWTEST_F(NativeEngineTest, testUrlSetScheme004, testing::ext::TestSize.Level0)
483 {
484 OHOS::Url::URL url("https://username:password@host:8080/directory/file?query#fragment");
485 std::string output;
486 napi_env env = (napi_env)engine_;
487 DealNapiStrValue(env, url.GetScheme(env), output);
488 ASSERT_STREQ(output.c_str(), "https:");
489 url.SetScheme("file");
490 DealNapiStrValue(env, url.GetScheme(env), output);
491 ASSERT_STREQ(output.c_str(), "https:");
492 }
493
494 HWTEST_F(NativeEngineTest, testUrlUsername001, testing::ext::TestSize.Level0)
495 {
496 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
497 std::string output;
498 napi_env env = (napi_env)engine_;
499 DealNapiStrValue(env, url.GetUsername(env), output);
500 ASSERT_STREQ(output.c_str(), "username");
501 }
502
503 HWTEST_F(NativeEngineTest, testUrlUsername002, testing::ext::TestSize.Level0)
504 {
505 OHOS::Url::URL url("http://zhao:password@host:8080/directory/file?query#fragment");
506 std::string output;
507 napi_env env = (napi_env)engine_;
508 DealNapiStrValue(env, url.GetUsername(env), output);
509 ASSERT_STREQ(output.c_str(), "zhao");
510 }
511
512 HWTEST_F(NativeEngineTest, testUrlUsername003, testing::ext::TestSize.Level0)
513 {
514 OHOS::Url::URL url("http://skk:password@host:8080/directory/file?query#fragment");
515 std::string output;
516 napi_env env = (napi_env)engine_;
517 DealNapiStrValue(env, url.GetUsername(env), output);
518 ASSERT_STREQ(output.c_str(), "skk");
519 }
520
521 HWTEST_F(NativeEngineTest, testUrlSetUsername001, testing::ext::TestSize.Level0)
522 {
523 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
524 std::string output;
525 napi_env env = (napi_env)engine_;
526 DealNapiStrValue(env, url.GetUsername(env), output);
527 ASSERT_STREQ(output.c_str(), "username");
528 url.SetUsername("666");
529 DealNapiStrValue(env, url.GetUsername(env), output);
530 ASSERT_STREQ(output.c_str(), "666");
531 }
532
533 HWTEST_F(NativeEngineTest, testUrlSetUsername002, testing::ext::TestSize.Level0)
534 {
535 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
536 std::string output;
537 napi_env env = (napi_env)engine_;
538 DealNapiStrValue(env, url.GetUsername(env), output);
539 ASSERT_STREQ(output.c_str(), "username");
540 url.SetUsername("");
541 DealNapiStrValue(env, url.GetUsername(env), output);
542 ASSERT_STREQ(output.c_str(), "");
543 }
544
545 HWTEST_F(NativeEngineTest, testUrlPassword001, testing::ext::TestSize.Level0)
546 {
547 OHOS::Url::URL url("http://username:11@host:8080/directory/file?query#fragment");
548 std::string output;
549 napi_env env = (napi_env)engine_;
550 DealNapiStrValue(env, url.GetPassword(env), output);
551 ASSERT_STREQ(output.c_str(), "11");
552 }
553
554 HWTEST_F(NativeEngineTest, testUrlPassword002, testing::ext::TestSize.Level0)
555 {
556 OHOS::Url::URL url("http://username:23aa@host:8080/directory/file?query#fragment");
557 std::string output;
558 napi_env env = (napi_env)engine_;
559 DealNapiStrValue(env, url.GetPassword(env), output);
560 ASSERT_STREQ(output.c_str(), "23aa");
561 }
562
563 HWTEST_F(NativeEngineTest, testUrlPassword003, testing::ext::TestSize.Level0)
564 {
565 OHOS::Url::URL url("http://username@host:8080/directory/file?query#fragment");
566 std::string output;
567 napi_env env = (napi_env)engine_;
568 DealNapiStrValue(env, url.GetPassword(env), output);
569 ASSERT_STREQ(output.c_str(), "");
570 }
571
572 HWTEST_F(NativeEngineTest, testUrlSetPassword001, testing::ext::TestSize.Level0)
573 {
574 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
575 std::string output;
576 napi_env env = (napi_env)engine_;
577 DealNapiStrValue(env, url.GetPassword(env), output);
578 ASSERT_STREQ(output.c_str(), "password");
579 url.SetPassword("666");
580 DealNapiStrValue(env, url.GetPassword(env), output);
581 ASSERT_STREQ(output.c_str(), "666");
582 }
583
584 HWTEST_F(NativeEngineTest, testUrlSetPassword002, testing::ext::TestSize.Level0)
585 {
586 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
587 std::string output;
588 napi_env env = (napi_env)engine_;
589 DealNapiStrValue(env, url.GetPassword(env), output);
590 ASSERT_STREQ(output.c_str(), "password");
591 url.SetPassword("");
592 DealNapiStrValue(env, url.GetPassword(env), output);
593 ASSERT_STREQ(output.c_str(), "");
594 }
595
596 HWTEST_F(NativeEngineTest, testUrlHost001, testing::ext::TestSize.Level0)
597 {
598 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
599 std::string output;
600 napi_env env = (napi_env)engine_;
601 DealNapiStrValue(env, url.GetHost(env), output);
602 ASSERT_STREQ(output.c_str(), "host:8080");
603 }
604
605 HWTEST_F(NativeEngineTest, testUrlHost002, testing::ext::TestSize.Level0)
606 {
607 OHOS::Url::URL url("http://username:password@hosthost/directory/file?query#fragment");
608 std::string output;
609 napi_env env = (napi_env)engine_;
610 DealNapiStrValue(env, url.GetHost(env), output);
611 ASSERT_STREQ(output.c_str(), "hosthost");
612 }
613
614 HWTEST_F(NativeEngineTest, testUrlHost003, testing::ext::TestSize.Level0)
615 {
616 OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
617 std::string output;
618 napi_env env = (napi_env)engine_;
619 DealNapiStrValue(env, url.GetHost(env), output);
620 ASSERT_STREQ(output.c_str(), "host:199");
621 }
622
623 HWTEST_F(NativeEngineTest, testUrlSetHost001, testing::ext::TestSize.Level0)
624 {
625 OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
626 std::string output;
627 napi_env env = (napi_env)engine_;
628 DealNapiStrValue(env, url.GetHost(env), output);
629 ASSERT_STREQ(output.c_str(), "host:199");
630 url.SetHost("0.0.0.0.0:199");
631 DealNapiStrValue(env, url.GetHost(env), output);
632 ASSERT_STREQ(output.c_str(), "0.0.0.0.0:199");
633 }
634
635 HWTEST_F(NativeEngineTest, testUrlSetHost002, testing::ext::TestSize.Level0)
636 {
637 OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
638 std::string output;
639 napi_env env = (napi_env)engine_;
640 DealNapiStrValue(env, url.GetHost(env), output);
641 ASSERT_STREQ(output.c_str(), "host:199");
642 url.SetHost("");
643 DealNapiStrValue(env, url.GetHost(env), output);
644 ASSERT_STREQ(output.c_str(), "host:199");
645 }
646
647 HWTEST_F(NativeEngineTest, testUrlSetHost003, testing::ext::TestSize.Level0)
648 {
649 OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
650 std::string output;
651 napi_env env = (napi_env)engine_;
652 DealNapiStrValue(env, url.GetHost(env), output);
653 ASSERT_STREQ(output.c_str(), "host:199");
654 url.SetHost("/");
655 DealNapiStrValue(env, url.GetHost(env), output);
656 ASSERT_STREQ(output.c_str(), "host:199");
657 }
658
659 HWTEST_F(NativeEngineTest, testUrlSetHost004, testing::ext::TestSize.Level0)
660 {
661 OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
662 std::string output;
663 napi_env env = (napi_env)engine_;
664 DealNapiStrValue(env, url.GetHost(env), output);
665 ASSERT_STREQ(output.c_str(), "host:199");
666 url.SetHost("asdzxc:54/");
667 napi_value result = url.GetOnOrOff(env);
668 bool value = false;
669 napi_get_value_bool(env, result, &value);
670 ASSERT_TRUE(value);
671 }
672
673 HWTEST_F(NativeEngineTest, testUrlSetHref001, testing::ext::TestSize.Level0)
674 {
675 OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
676 std::string output;
677 napi_env env = (napi_env)engine_;
678 DealNapiStrValue(env, url.GetHost(env), output);
679 ASSERT_STREQ(output.c_str(), "host:199");
680 url.SetHref("http:example.com");
681 DealNapiStrValue(env, url.GetHost(env), output);
682 ASSERT_STREQ(output.c_str(), "example.com");
683 }
684
685 HWTEST_F(NativeEngineTest, testUrlSetHref002, testing::ext::TestSize.Level0)
686 {
687 OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
688 std::string output;
689 napi_env env = (napi_env)engine_;
690 DealNapiStrValue(env, url.GetHost(env), output);
691 ASSERT_STREQ(output.c_str(), "host:199");
692 url.SetHref(" http:example.com");
693 DealNapiStrValue(env, url.GetHost(env), output);
694 ASSERT_STREQ(output.c_str(), "example.com");
695 }
696
697 HWTEST_F(NativeEngineTest, testUrlHostname001, testing::ext::TestSize.Level0)
698 {
699 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
700 std::string output;
701 napi_env env = (napi_env)engine_;
702 DealNapiStrValue(env, url.GetHostname(env), output);
703 ASSERT_STREQ(output.c_str(), "host");
704 }
705
706 HWTEST_F(NativeEngineTest, testUrlHostname002, testing::ext::TestSize.Level0)
707 {
708 OHOS::Url::URL url("http://username:password@host123:8080/directory/file?query#fragment");
709 std::string output;
710 napi_env env = (napi_env)engine_;
711 DealNapiStrValue(env, url.GetHostname(env), output);
712 ASSERT_STREQ(output.c_str(), "host123");
713 }
714
715 HWTEST_F(NativeEngineTest, testUrlHostname003, testing::ext::TestSize.Level0)
716 {
717 OHOS::Url::URL url("http://username:password@885ssa:8080/directory/file?query#fragment");
718 std::string output;
719 napi_env env = (napi_env)engine_;
720 DealNapiStrValue(env, url.GetHostname(env), output);
721 ASSERT_STREQ(output.c_str(), "885ssa");
722 }
723
724 HWTEST_F(NativeEngineTest, testUrlPort001, testing::ext::TestSize.Level0)
725 {
726 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
727 std::string output;
728 napi_env env = (napi_env)engine_;
729 DealNapiStrValue(env, url.GetPort(env), output);
730 ASSERT_STREQ(output.c_str(), "8080");
731 }
732
733 HWTEST_F(NativeEngineTest, testUrlPort002, testing::ext::TestSize.Level0)
734 {
735 OHOS::Url::URL url("http://username:password@host:100/directory/file?query#fragment");
736 std::string output;
737 napi_env env = (napi_env)engine_;
738 DealNapiStrValue(env, url.GetPort(env), output);
739 ASSERT_STREQ(output.c_str(), "100");
740 }
741
742
743 HWTEST_F(NativeEngineTest, testUrlPort003, testing::ext::TestSize.Level0)
744 {
745 OHOS::Url::URL url("http://username:password@host/directory/file?query#fragment");
746 std::string output;
747 napi_env env = (napi_env)engine_;
748 DealNapiStrValue(env, url.GetPort(env), output);
749 ASSERT_STREQ(output.c_str(), "");
750 }
751
752 HWTEST_F(NativeEngineTest, testUrlPort004, testing::ext::TestSize.Level0)
753 {
754 OHOS::Url::URL url("http://username:password@host:655656/directory/file?query#fragment");
755 napi_env env = (napi_env)engine_;
756 napi_value result = url.GetOnOrOff(env);
757 bool value = false;
758 napi_get_value_bool(env, result, &value);
759 ASSERT_FALSE(value);
760 }
761
762 HWTEST_F(NativeEngineTest, testUrlPort005, testing::ext::TestSize.Level0)
763 {
764 OHOS::Url::URL url("http://username:password@host:6c3/directory/file?query#fragment");
765 napi_env env = (napi_env)engine_;
766 napi_value result = url.GetOnOrOff(env);
767 bool value = false;
768 napi_get_value_bool(env, result, &value);
769 ASSERT_FALSE(value);
770 }
771
772 HWTEST_F(NativeEngineTest, testUrlSetPort001, testing::ext::TestSize.Level0)
773 {
774 OHOS::Url::URL url("http://username:password@host:100/directory/file?query#fragment");
775 std::string output;
776 napi_env env = (napi_env)engine_;
777 DealNapiStrValue(env, url.GetPort(env), output);
778 ASSERT_STREQ(output.c_str(), "100");
779 url.SetPort("600?");
780 DealNapiStrValue(env, url.GetPort(env), output);
781 ASSERT_STREQ(output.c_str(), "600");
782 }
783
784 HWTEST_F(NativeEngineTest, testUrlPathname001, testing::ext::TestSize.Level0)
785 {
786 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query#fragment");
787 std::string output;
788 napi_env env = (napi_env)engine_;
789 DealNapiStrValue(env, url.GetPath(env), output);
790 ASSERT_STREQ(output.c_str(), "/directory/file");
791 }
792
793 HWTEST_F(NativeEngineTest, testUrlPathname002, testing::ext::TestSize.Level0)
794 {
795 OHOS::Url::URL url("http://username:password@host:8080/directory?query#fragment");
796 std::string output;
797 napi_env env = (napi_env)engine_;
798 DealNapiStrValue(env, url.GetPath(env), output);
799 ASSERT_STREQ(output.c_str(), "/directory");
800 }
801
802 HWTEST_F(NativeEngineTest, testUrlPathname003, testing::ext::TestSize.Level0)
803 {
804 OHOS::Url::URL url("http2://username:password@host:8080?query#fragment");
805 std::string output;
806 napi_env env = (napi_env)engine_;
807 DealNapiStrValue(env, url.GetPath(env), output);
808 ASSERT_STREQ(output.c_str(), "");
809 }
810
811 HWTEST_F(NativeEngineTest, testUrlPathname004, testing::ext::TestSize.Level0)
812 {
813 OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
814 napi_env env = (napi_env)engine_;
815 napi_value result = url.GetOnOrOff(env);
816 bool value = false;
817 napi_get_value_bool(env, result, &value);
818 ASSERT_TRUE(value);
819 }
820
821 HWTEST_F(NativeEngineTest, testUrlSetPath001, testing::ext::TestSize.Level0)
822 {
823 OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
824 std::string output;
825 napi_env env = (napi_env)engine_;
826 DealNapiStrValue(env, url.GetPath(env), output);
827 ASSERT_STREQ(output.c_str(), "/");
828 url.SetPath("\\D:");
829 DealNapiStrValue(env, url.GetPath(env), output);
830 ASSERT_STREQ(output.c_str(), "/%5CD:");
831 }
832
833 HWTEST_F(NativeEngineTest, testUrlSetPath002, testing::ext::TestSize.Level0)
834 {
835 OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
836 std::string output;
837 napi_env env = (napi_env)engine_;
838 DealNapiStrValue(env, url.GetPath(env), output);
839 ASSERT_STREQ(output.c_str(), "/");
840 url.SetPath(":\\D:");
841 DealNapiStrValue(env, url.GetPath(env), output);
842 ASSERT_STREQ(output.c_str(), "/:%5CD:");
843 }
844
845 HWTEST_F(NativeEngineTest, testUrlSetPath003, testing::ext::TestSize.Level0)
846 {
847 OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
848 std::string output;
849 napi_env env = (napi_env)engine_;
850 DealNapiStrValue(env, url.GetPath(env), output);
851 ASSERT_STREQ(output.c_str(), "/");
852 url.SetPath("::");
853 DealNapiStrValue(env, url.GetPath(env), output);
854 ASSERT_STREQ(output.c_str(), "/::");
855 }
856
857 HWTEST_F(NativeEngineTest, testUrlSetPath004, testing::ext::TestSize.Level0)
858 {
859 OHOS::Url::URL url("http://username:password@host:8080?query#fragment");
860 std::string output;
861 napi_env env = (napi_env)engine_;
862 DealNapiStrValue(env, url.GetPath(env), output);
863 ASSERT_STREQ(output.c_str(), "/");
864 url.SetPath("");
865 DealNapiStrValue(env, url.GetPath(env), output);
866 ASSERT_STREQ(output.c_str(), "/");
867 }
868
869 HWTEST_F(NativeEngineTest, testUrlSetPath005, testing::ext::TestSize.Level0)
870 {
871 OHOS::Url::URL url("file://hostsasf");
872 std::string output;
873 napi_env env = (napi_env)engine_;
874 url.SetPath("/askdj");
875 DealNapiStrValue(env, url.GetPath(env), output);
876 ASSERT_STREQ(output.c_str(), "/askdj");
877 }
878
879 HWTEST_F(NativeEngineTest, testUrlSearch001, testing::ext::TestSize.Level0)
880 {
881 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=qqqq#fragment");
882 std::string output;
883 napi_env env = (napi_env)engine_;
884 DealNapiStrValue(env, url.GetSearch(env), output);
885 ASSERT_STREQ(output.c_str(), "?query=qqqq");
886 }
887
888 HWTEST_F(NativeEngineTest, testUrlSearch002, testing::ext::TestSize.Level0)
889 {
890 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=qqqq&ll=pp#fragment");
891 std::string output;
892 napi_env env = (napi_env)engine_;
893 DealNapiStrValue(env, url.GetSearch(env), output);
894 ASSERT_STREQ(output.c_str(), "?query=qqqq&ll=pp");
895 }
896
897 HWTEST_F(NativeEngineTest, testUrlSearch003, testing::ext::TestSize.Level0)
898 {
899 OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
900 std::string output;
901 napi_env env = (napi_env)engine_;
902 DealNapiStrValue(env, url.GetSearch(env), output);
903 ASSERT_STREQ(output.c_str(), "?ppp9875=77");
904 }
905
906 HWTEST_F(NativeEngineTest, testUrlSetSearch001, testing::ext::TestSize.Level0)
907 {
908 OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
909 std::string output;
910 napi_env env = (napi_env)engine_;
911 DealNapiStrValue(env, url.GetSearch(env), output);
912 ASSERT_STREQ(output.c_str(), "?ppp9875=77");
913 url.SetSearch("");
914 DealNapiStrValue(env, url.GetSearch(env), output);
915 ASSERT_STREQ(output.c_str(), "");
916 }
917
918 HWTEST_F(NativeEngineTest, testUrlSetSearch002, testing::ext::TestSize.Level0)
919 {
920 OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
921 std::string output;
922 napi_env env = (napi_env)engine_;
923 DealNapiStrValue(env, url.GetSearch(env), output);
924 ASSERT_STREQ(output.c_str(), "?ppp9875=77");
925 url.SetSearch("?444=555");
926 DealNapiStrValue(env, url.GetSearch(env), output);
927 ASSERT_STREQ(output.c_str(), "?444=555");
928 }
929
930 HWTEST_F(NativeEngineTest, testUrlSetSearch003, testing::ext::TestSize.Level0)
931 {
932 OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
933 std::string output;
934 napi_env env = (napi_env)engine_;
935 DealNapiStrValue(env, url.GetSearch(env), output);
936 ASSERT_STREQ(output.c_str(), "?ppp9875=77");
937 url.SetSearch("444=555");
938 DealNapiStrValue(env, url.GetSearch(env), output);
939 ASSERT_STREQ(output.c_str(), "?444=555");
940 }
941
942 HWTEST_F(NativeEngineTest, testUrlSetSearch004, testing::ext::TestSize.Level0)
943 {
944 OHOS::Url::URL url("http://username:password@host:8080/directory/file?ppp9875=77#fragment");
945 std::string output;
946 napi_env env = (napi_env)engine_;
947 DealNapiStrValue(env, url.GetSearch(env), output);
948 ASSERT_STREQ(output.c_str(), "?ppp9875=77");
949 url.SetSearch("?##44=55");
950 DealNapiStrValue(env, url.GetSearch(env), output);
951 ASSERT_STREQ(output.c_str(), "?%23%2344=55");
952 }
953
954 HWTEST_F(NativeEngineTest, testUrlGetFragment001, testing::ext::TestSize.Level0)
955 {
956 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#fragment");
957 std::string output;
958 napi_env env = (napi_env)engine_;
959 DealNapiStrValue(env, url.GetFragment(env), output);
960 ASSERT_STREQ(output.c_str(), "#fragment");
961 }
962
963 HWTEST_F(NativeEngineTest, testUrlGetFragment002, testing::ext::TestSize.Level0)
964 {
965 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#fragment");
966 std::string output;
967 napi_env env = (napi_env)engine_;
968 DealNapiStrValue(env, url.GetFragment(env), output);
969 ASSERT_STREQ(output.c_str(), "#fragment");
970 }
971
972 HWTEST_F(NativeEngineTest, testUrlGetFragment003, testing::ext::TestSize.Level0)
973 {
974 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
975 std::string output;
976 napi_env env = (napi_env)engine_;
977 DealNapiStrValue(env, url.GetFragment(env), output);
978 ASSERT_STREQ(output.c_str(), "#123456");
979 }
980
981 HWTEST_F(NativeEngineTest, testUrlSetFragment001, testing::ext::TestSize.Level0)
982 {
983 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
984 std::string output;
985 napi_env env = (napi_env)engine_;
986 DealNapiStrValue(env, url.GetFragment(env), output);
987 ASSERT_STREQ(output.c_str(), "#123456");
988 url.SetFragment("");
989 DealNapiStrValue(env, url.GetFragment(env), output);
990 ASSERT_STREQ(output.c_str(), "");
991 }
992
993 HWTEST_F(NativeEngineTest, testUrlSetFragment002, testing::ext::TestSize.Level0)
994 {
995 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
996 std::string output;
997 napi_env env = (napi_env)engine_;
998 DealNapiStrValue(env, url.GetFragment(env), output);
999 ASSERT_STREQ(output.c_str(), "#123456");
1000 url.SetFragment("#445566");
1001 DealNapiStrValue(env, url.GetFragment(env), output);
1002 ASSERT_STREQ(output.c_str(), "#445566");
1003 }
1004
1005 HWTEST_F(NativeEngineTest, testUrlSetFragment003, testing::ext::TestSize.Level0)
1006 {
1007 OHOS::Url::URL url("http://username:password@host:8080/directory/file?query=pppppp#123456");
1008 std::string output;
1009 napi_env env = (napi_env)engine_;
1010 DealNapiStrValue(env, url.GetFragment(env), output);
1011 ASSERT_STREQ(output.c_str(), "#123456");
1012 url.SetFragment("445566");
1013 DealNapiStrValue(env, url.GetFragment(env), output);
1014 ASSERT_STREQ(output.c_str(), "#445566");
1015 }
1016
1017 HWTEST_F(NativeEngineTest, testUrlIPV6001, testing::ext::TestSize.Level0)
1018 {
1019 OHOS::Url::URL url("http://[1080:0:0:0:8:800:200C:417A]/index.html");
1020 napi_env env = (napi_env)engine_;
1021 napi_value result = url.GetIsIpv6(env);
1022 bool value = false;
1023 napi_get_value_bool(env, result, &value);
1024 ASSERT_TRUE(value);
1025 }
1026
1027 HWTEST_F(NativeEngineTest, testUrlIPV6002, testing::ext::TestSize.Level0)
1028 {
1029 OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
1030 napi_env env = (napi_env)engine_;
1031 napi_value result = url.GetIsIpv6(env);
1032 bool value = false;
1033 napi_get_value_bool(env, result, &value);
1034 ASSERT_FALSE(value);
1035 }
1036
1037 HWTEST_F(NativeEngineTest, testUrlIPV6003, testing::ext::TestSize.Level0)
1038 {
1039 OHOS::Url::URL url("http://[1080:0:0:0:8:800:200C.417A]/index.html");
1040 napi_env env = (napi_env)engine_;
1041 napi_value result = url.GetIsIpv6(env);
1042 bool value = false;
1043 napi_get_value_bool(env, result, &value);
1044 ASSERT_FALSE(value);
1045 }
1046
1047 HWTEST_F(NativeEngineTest, testUrlGetOnOrOff001, testing::ext::TestSize.Level0)
1048 {
1049 OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
1050 napi_env env = (napi_env)engine_;
1051 napi_value result = url.GetOnOrOff(env);
1052 bool value = false;
1053 napi_get_value_bool(env, result, &value);
1054 ASSERT_TRUE(value);
1055 }
1056
1057 HWTEST_F(NativeEngineTest, testUrlGetOnOrOff002, testing::ext::TestSize.Level0)
1058 {
1059 OHOS::Url::URL url("http://192.168.259.551:80/index.html");
1060 napi_env env = (napi_env)engine_;
1061 napi_value result = url.GetOnOrOff(env);
1062 bool value = false;
1063 napi_get_value_bool(env, result, &value);
1064 ASSERT_FALSE(value);
1065 }
1066
1067 HWTEST_F(NativeEngineTest, testUrlSetHostname001, testing::ext::TestSize.Level0)
1068 {
1069 OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
1070 napi_env env = (napi_env)engine_;
1071 std::string output;
1072 std::string value = "host";
1073 url.SetHostname(value);
1074 DealNapiStrValue(env, url.GetHostname(env), output);
1075 ASSERT_STREQ(output.c_str(), "host");
1076 }
1077
1078 HWTEST_F(NativeEngineTest, testUrlSetHostname002, testing::ext::TestSize.Level0)
1079 {
1080 OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
1081 napi_env env = (napi_env)engine_;
1082 std::string output;
1083 std::string value = "";
1084 url.SetHostname(value);
1085 DealNapiStrValue(env, url.GetHostname(env), output);
1086 ASSERT_STREQ(output.c_str(), "255.255.255.1");
1087 }
1088
1089 HWTEST_F(NativeEngineTest, testUrlSetHostname003, testing::ext::TestSize.Level0)
1090 {
1091 OHOS::Url::URL url("file:///www.example.com");
1092 napi_env env = (napi_env)engine_;
1093 std::string value = "localhost/";
1094 url.SetHostname(value);
1095 napi_value result = url.GetOnOrOff(env);
1096 bool value1 = false;
1097 napi_get_value_bool(env, result, &value1);
1098 ASSERT_TRUE(value1);
1099 }
1100
1101 HWTEST_F(NativeEngineTest, testUrlSearchParams001, testing::ext::TestSize.Level0)
1102 {
1103 OHOS::Url::URL url("http://username:password@host:8080/directory/file?foo=1&bar=2");
1104 std::string output;
1105 napi_env env = (napi_env)engine_;
1106 DealNapiStrValue(env, url.GetSearch(env), output);
1107 ASSERT_STREQ(output.c_str(), "?foo=1&bar=2");
1108 }
1109
1110 HWTEST_F(NativeEngineTest, testUrlSearchParams002, testing::ext::TestSize.Level0)
1111 {
1112 OHOS::Url::URL url("https://example.com?d=value1&c=value2&b=大&4=key4");
1113 std::string output;
1114 napi_env env = (napi_env)engine_;
1115 DealNapiStrValue(env, url.GetSearch(env), output);
1116 ASSERT_STREQ(output.c_str(), "?d=value1&c=value2&b=大&4=key4");
1117 }
1118
1119 HWTEST_F(NativeEngineTest, testUrlSearchParams003, testing::ext::TestSize.Level0)
1120 {
1121 OHOS::Url::URL url("http://username:password@host:8080/directory/file?你好=china#qwer=da");
1122 std::string output;
1123 napi_env env = (napi_env)engine_;
1124 DealNapiStrValue(env, url.GetSearch(env), output);
1125 ASSERT_STREQ(output.c_str(), "?你好=china");
1126 }
1127
1128 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend001, testing::ext::TestSize.Level0)
1129 {
1130 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1131 std::string output;
1132 napi_env env = (napi_env)engine_;
1133 napi_value input1 = StrToNapiValue(env, "ma");
1134 napi_value input2 = StrToNapiValue(env, "jk");
1135 params.Append(env, input1, input2);
1136 napi_value tempValue = params.GetArray(env);
1137 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1138 DealNapiStrValue(env, ToString(env, paramsString), output);
1139 ASSERT_STREQ(output.c_str(), "ma=jk");
1140 }
1141
1142 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend002, testing::ext::TestSize.Level0)
1143 {
1144 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1145 std::string output;
1146 napi_env env = (napi_env)engine_;
1147 napi_value input1 = StrToNapiValue(env, "ma 大");
1148 napi_value input2 = StrToNapiValue(env, "jk¥");
1149 params.Append(env, input1, input2);
1150 napi_value tempValue = params.GetArray(env);
1151 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1152 DealNapiStrValue(env, ToString(env, paramsString), output);
1153 ASSERT_STREQ(output.c_str(), "ma+%E5%A4%A7=jk%EF%BF%A5");
1154 }
1155
1156 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend003, testing::ext::TestSize.Level0)
1157 {
1158 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1159 std::string output;
1160 napi_env env = (napi_env)engine_;
1161 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1162 napi_value input2 = StrToNapiValue(env, "jk");
1163 params.Append(env, input1, input2);
1164 napi_value tempValue = params.GetArray(env);
1165 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1166 DealNapiStrValue(env, ToString(env, paramsString), output);
1167 ASSERT_STREQ(output.c_str(), "foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk");
1168 }
1169
1170 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend004, testing::ext::TestSize.Level0)
1171 {
1172 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1173 std::string output;
1174 napi_env env = (napi_env)engine_;
1175 napi_value result = nullptr;
1176 napi_get_undefined(env, &result);
1177 napi_value input2 = StrToNapiValue(env, "jk");
1178 params.Append(env, result, input2);
1179 DealNapiStrValue(env, params.Get(env, input2), output);
1180 ASSERT_STREQ(output.c_str(), "");
1181 }
1182
1183 HWTEST_F(NativeEngineTest, testUrlSearchParamsAppend005, testing::ext::TestSize.Level0)
1184 {
1185 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1186 std::string output;
1187 napi_env env = (napi_env)engine_;
1188 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1189 napi_value result = nullptr;
1190 napi_get_undefined(env, &result);
1191 params.Append(env, input1, result);
1192 DealNapiStrValue(env, params.Get(env, input1), output);
1193 ASSERT_STREQ(output.c_str(), "");
1194 }
1195
1196 HWTEST_F(NativeEngineTest, testUrlSearchParamsDelete001, testing::ext::TestSize.Level0)
1197 {
1198 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1199 std::string output;
1200 napi_env env = (napi_env)engine_;
1201 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1202 napi_value input2 = StrToNapiValue(env, "jk");
1203 params.Append(env, input1, input2);
1204 params.Delete(env, input1);
1205 napi_value tempValue = params.GetArray(env);
1206 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1207 DealNapiStrValue(env, ToString(env, paramsString), output);
1208 ASSERT_STREQ(output.c_str(), "");
1209 }
1210
1211 HWTEST_F(NativeEngineTest, testUrlSearchParamsDelete002, testing::ext::TestSize.Level0)
1212 {
1213 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1214 std::string output;
1215 napi_env env = (napi_env)engine_;
1216 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1217 napi_value input2 = StrToNapiValue(env, "jk");
1218 params.Append(env, input1, input2);
1219 napi_value input3 = StrToNapiValue(env, "ma");
1220 napi_value input4 = StrToNapiValue(env, "jk");
1221 params.Append(env, input3, input4);
1222 params.Delete(env, input1);
1223 napi_value tempValue = params.GetArray(env);
1224 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1225 DealNapiStrValue(env, ToString(env, paramsString), output);
1226 ASSERT_STREQ(output.c_str(), "ma=jk");
1227 }
1228
1229 HWTEST_F(NativeEngineTest, testUrlSearchParamsDelete003, testing::ext::TestSize.Level0)
1230 {
1231 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1232 std::string output;
1233 napi_env env = (napi_env)engine_;
1234 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1235 napi_value input2 = StrToNapiValue(env, "jk");
1236 params.Append(env, input1, input2);
1237 napi_value input3 = StrToNapiValue(env, "ma");
1238 napi_value input4 = StrToNapiValue(env, "jk");
1239 params.Append(env, input3, input4);
1240 params.Delete(env, input1);
1241 params.Delete(env, input3);
1242 napi_value tempValue = params.GetArray(env);
1243 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1244 DealNapiStrValue(env, ToString(env, paramsString), output);
1245 ASSERT_STREQ(output.c_str(), "");
1246 }
1247
1248 HWTEST_F(NativeEngineTest, testUrlSearchParamsDelete004, testing::ext::TestSize.Level0)
1249 {
1250 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1251 std::string output;
1252 napi_env env = (napi_env)engine_;
1253 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1254 napi_value input2 = StrToNapiValue(env, "jk");
1255 params.Append(env, input1, input2);
1256 napi_value input3 = StrToNapiValue(env, "ma");
1257 napi_value input4 = StrToNapiValue(env, "jk");
1258 params.Append(env, input3, input4);
1259 napi_value result = nullptr;
1260 napi_get_undefined(env, &result);
1261 params.Delete(env, result);
1262 DealNapiStrValue(env, params.Get(env, input3), output);
1263 ASSERT_STREQ(output.c_str(), "jk");
1264 }
1265
1266 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet001, testing::ext::TestSize.Level0)
1267 {
1268 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1269 std::string output;
1270 napi_env env = (napi_env)engine_;
1271 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1272 napi_value input2 = StrToNapiValue(env, "jk");
1273 params.Append(env, input1, input2);
1274 DealNapiStrValue(env, params.Get(env, input1), output);
1275 ASSERT_STREQ(output.c_str(), "jk");
1276 }
1277
1278 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet002, testing::ext::TestSize.Level0)
1279 {
1280 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1281 std::string output;
1282 napi_env env = (napi_env)engine_;
1283 napi_value input1 = StrToNapiValue(env, "jk");
1284 DealNapiStrValue(env, params.Get(env, input1), output);
1285 ASSERT_STREQ(output.c_str(), "");
1286 }
1287
1288 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet003, testing::ext::TestSize.Level0)
1289 {
1290 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1291 std::string output;
1292 napi_env env = (napi_env)engine_;
1293 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1294 napi_value input2 = StrToNapiValue(env, "jk");
1295 params.Append(env, input1, input2);
1296 DealNapiStrValue(env, params.Get(env, input1), output);
1297 ASSERT_STREQ(output.c_str(), "jk");
1298 }
1299
1300 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet004, testing::ext::TestSize.Level0)
1301 {
1302 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1303 std::string output;
1304 napi_env env = (napi_env)engine_;
1305 napi_value input1 = StrToNapiValue(env, "hello, \U0001F600 world!");
1306 DealNapiStrValue(env, params.Get(env, input1), output);
1307 ASSERT_STREQ(output.c_str(), "");
1308 }
1309
1310 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet005, testing::ext::TestSize.Level0)
1311 {
1312 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1313 std::string output;
1314 napi_env env = (napi_env)engine_;
1315 napi_value result = nullptr;
1316 napi_get_undefined(env, &result);
1317 DealNapiStrValue(env, params.Get(env, result), output);
1318 ASSERT_STREQ(output.c_str(), "");
1319 }
1320
1321 HWTEST_F(NativeEngineTest, testUrlSearchParamsGet006, testing::ext::TestSize.Level0)
1322 {
1323 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1324 std::string output;
1325 napi_env env = (napi_env)engine_;
1326 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1327 napi_value input2 = StrToNapiValue(env, "jk");
1328 napi_value input3 = StrToNapiValue(env, "asd");
1329 params.Append(env, input1, input2);
1330 DealNapiStrValue(env, params.Get(env, input3), output);
1331 ASSERT_STREQ(output.c_str(), "");
1332 }
1333
1334 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll001, testing::ext::TestSize.Level0)
1335 {
1336 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1337 std::string output;
1338 napi_env env = (napi_env)engine_;
1339 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1340 napi_value input2 = StrToNapiValue(env, "jk");
1341 params.Append(env, input1, input2);
1342 napi_value input3 = StrToNapiValue(env, "jk");
1343 DealNapiStrValue(env, params.GetAll(env, input3), output);
1344 ASSERT_STREQ(output.c_str(), "");
1345 }
1346
1347 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll002, testing::ext::TestSize.Level0)
1348 {
1349 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1350 std::string output;
1351 napi_env env = (napi_env)engine_;
1352 napi_value input1 = StrToNapiValue(env, "ma");
1353 napi_value input2 = StrToNapiValue(env, "jk");
1354 params.Append(env, input1, input2);
1355 napi_value input3 = StrToNapiValue(env, "jk1");
1356 DealNapiStrValue(env, params.GetAll(env, input3), output);
1357 ASSERT_STREQ(output.c_str(), "");
1358 }
1359
1360 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll003, testing::ext::TestSize.Level0)
1361 {
1362 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1363 std::string output;
1364 napi_env env = (napi_env)engine_;
1365 napi_value input1 = StrToNapiValue(env, "#[%@]");
1366 napi_value input2 = StrToNapiValue(env, "jk");
1367 params.Append(env, input1, input2);
1368 napi_value input3 = StrToNapiValue(env, "ma1");
1369 napi_value input4 = StrToNapiValue(env, "jk1");
1370 params.Append(env, input3, input4);
1371 napi_value input5 = StrToNapiValue(env, "jk2");
1372 DealNapiStrValue(env, params.GetAll(env, input5), output);
1373 ASSERT_STREQ(output.c_str(), "");
1374 }
1375
1376 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll004, testing::ext::TestSize.Level0)
1377 {
1378 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1379 std::string output;
1380 napi_env env = (napi_env)engine_;
1381 napi_value result = nullptr;
1382 napi_get_undefined(env, &result);
1383 DealNapiStrValue(env, params.GetAll(env, result), output);
1384 ASSERT_STREQ(output.c_str(), "");
1385 }
1386
1387 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll005, testing::ext::TestSize.Level0)
1388 {
1389 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1390 std::string output;
1391 napi_env env = (napi_env)engine_;
1392 napi_value input1 = StrToNapiValue(env, "jk");
1393 DealNapiStrValue(env, params.GetAll(env, input1), output);
1394 ASSERT_STREQ(output.c_str(), "");
1395 }
1396
1397 HWTEST_F(NativeEngineTest, testUrlSearchParamsGetAll006, testing::ext::TestSize.Level0)
1398 {
1399 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1400 std::string output;
1401 napi_env env = (napi_env)engine_;
1402 napi_value input1 = StrToNapiValue(env, "ma");
1403 napi_value input2 = StrToNapiValue(env, "jk");
1404 params.Append(env, input1, input2);
1405 napi_value input3 = StrToNapiValue(env, "ma");
1406 DealNapiStrValue(env, params.GetAll(env, input3), output);
1407 ASSERT_STREQ(output.c_str(), "");
1408 }
1409
1410 HWTEST_F(NativeEngineTest, testUrlSearchParamsToUSVString001, testing::ext::TestSize.Level0)
1411 {
1412 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1413 std::string output;
1414 napi_env env = (napi_env)engine_;
1415 napi_value input1 = StrToNapiValue(env, "你好");
1416 napi_value input2 = StrToNapiValue(env, "안녕하세요");
1417 params.Append(env, input1, input2);
1418 napi_value input3 = StrToNapiValue(env, "[saa]");
1419 napi_value input4 = StrToNapiValue(env, "{aas}");
1420 params.Append(env, input3, input4);
1421 napi_value input5 = StrToNapiValue(env, "你好");
1422 DealNapiStrValue(env, params.Get(env, input5), output);
1423 ASSERT_STREQ(output.c_str(), "안녕하세요");
1424 }
1425
1426 HWTEST_F(NativeEngineTest, testUrlSearchParamsHas001, testing::ext::TestSize.Level0)
1427 {
1428 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1429 std::string output;
1430 napi_env env = (napi_env)engine_;
1431 napi_value input1 = StrToNapiValue(env, "ma");
1432 DealNapiStrValue(env, params.IsHas(env, input1), output);
1433 ASSERT_STREQ(output.c_str(), "");
1434 }
1435
1436 HWTEST_F(NativeEngineTest, testUrlSearchParamsHas002, testing::ext::TestSize.Level0)
1437 {
1438 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1439 std::string output;
1440 napi_env env = (napi_env)engine_;
1441 napi_value input1 = StrToNapiValue(env, "ma");
1442 napi_value input2 = StrToNapiValue(env, "jk");
1443 params.Append(env, input1, input2);
1444 napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1445 napi_value input4 = StrToNapiValue(env, "jk1");
1446 params.Append(env, input3, input4);
1447 DealNapiStrValue(env, params.IsHas(env, input1), output);
1448 ASSERT_STREQ(output.c_str(), "");
1449 }
1450
1451 HWTEST_F(NativeEngineTest, testUrlSearchParamsHas003, testing::ext::TestSize.Level0)
1452 {
1453 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1454 std::string output;
1455 napi_env env = (napi_env)engine_;
1456 napi_value input1 = StrToNapiValue(env, "ma");
1457 napi_value input2 = StrToNapiValue(env, "jk");
1458 params.Append(env, input1, input2);
1459 napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1460 napi_value input4 = StrToNapiValue(env, "jk1");
1461 params.Append(env, input3, input4);
1462 DealNapiStrValue(env, params.IsHas(env, input3), output);
1463 ASSERT_STREQ(output.c_str(), "");
1464 }
1465
1466 HWTEST_F(NativeEngineTest, testUrlSearchParamsHas004, testing::ext::TestSize.Level0)
1467 {
1468 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1469 std::string output;
1470 napi_env env = (napi_env)engine_;
1471 napi_value input1 = StrToNapiValue(env, "ma");
1472 napi_value input2 = StrToNapiValue(env, "jk");
1473 params.Append(env, input1, input2);
1474 napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1475 napi_value input4 = StrToNapiValue(env, "jk1");
1476 params.Append(env, input3, input4);
1477 napi_value result = nullptr;
1478 napi_get_undefined(env, &result);
1479 DealNapiStrValue(env, params.IsHas(env, result), output);
1480 ASSERT_STREQ(output.c_str(), "");
1481 }
1482
1483 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet001, testing::ext::TestSize.Level0)
1484 {
1485 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1486 std::string output;
1487 napi_env env = (napi_env)engine_;
1488 napi_value input1 = StrToNapiValue(env, "ma");
1489 napi_value input2 = StrToNapiValue(env, "jk");
1490 params.Append(env, input1, input2);
1491 napi_value input3 = StrToNapiValue(env, "aa");
1492 params.Set(env, input1, input3);
1493 napi_value tempValue = params.GetArray(env);
1494 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1495 DealNapiStrValue(env, ToString(env, paramsString), output);
1496 ASSERT_STREQ(output.c_str(), "ma=aa");
1497 }
1498
1499 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet002, testing::ext::TestSize.Level0)
1500 {
1501 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1502 std::string output;
1503 napi_env env = (napi_env)engine_;
1504 napi_value input1 = StrToNapiValue(env, "ma1");
1505 napi_value input2 = StrToNapiValue(env, "aa");
1506 params.Append(env, input1, input2);
1507 params.Set(env, input1, input2);
1508 napi_value tempValue = params.GetArray(env);
1509 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1510 DealNapiStrValue(env, ToString(env, paramsString), output);
1511 ASSERT_STREQ(output.c_str(), "ma1=aa");
1512 }
1513
1514 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet003, testing::ext::TestSize.Level0)
1515 {
1516 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1517 std::string output;
1518 napi_env env = (napi_env)engine_;
1519 napi_value input1 = StrToNapiValue(env, "ma");
1520 napi_value input2 = StrToNapiValue(env, "jk");
1521 params.Append(env, input1, input2);
1522 napi_value input3 = StrToNapiValue(env, "ma1");
1523 napi_value input4 = StrToNapiValue(env, "aa");
1524 params.Set(env, input3, input4);
1525 napi_value tempValue = params.GetArray(env);
1526 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1527 DealNapiStrValue(env, ToString(env, paramsString), output);
1528 ASSERT_STREQ(output.c_str(), "ma=jk&ma1=aa");
1529 }
1530
1531 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet004, testing::ext::TestSize.Level0)
1532 {
1533 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1534 std::string output;
1535 napi_env env = (napi_env)engine_;
1536 napi_value input1 = StrToNapiValue(env, "ma1");
1537 napi_value input2 = StrToNapiValue(env, "aa");
1538 params.Append(env, input1, input2);
1539 napi_value result = nullptr;
1540 napi_get_undefined(env, &result);
1541 params.Set(env, result, input2);
1542 napi_value tempValue = params.GetArray(env);
1543 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1544 DealNapiStrValue(env, ToString(env, paramsString), output);
1545 ASSERT_STREQ(output.c_str(), "ma1=aa");
1546 }
1547
1548 HWTEST_F(NativeEngineTest, testUrlSearchParamsSet005, testing::ext::TestSize.Level0)
1549 {
1550 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1551 std::string output;
1552 napi_env env = (napi_env)engine_;
1553 napi_value input1 = StrToNapiValue(env, "ma1");
1554 napi_value input2 = StrToNapiValue(env, "aa");
1555 params.Append(env, input1, input2);
1556 napi_value result = nullptr;
1557 napi_get_undefined(env, &result);
1558 params.Set(env, input1, result);
1559 napi_value tempValue = params.GetArray(env);
1560 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1561 DealNapiStrValue(env, ToString(env, paramsString), output);
1562 ASSERT_STREQ(output.c_str(), "ma1=aa");
1563 }
1564
1565
1566 HWTEST_F(NativeEngineTest, testUrlSearchParamsSort001, testing::ext::TestSize.Level0)
1567 {
1568 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1569 std::string output;
1570 napi_env env = (napi_env)engine_;
1571 napi_value input1 = StrToNapiValue(env, "ma");
1572 napi_value input2 = StrToNapiValue(env, "jk");
1573 params.Append(env, input1, input2);
1574 napi_value input3 = StrToNapiValue(env, "a");
1575 napi_value input4 = StrToNapiValue(env, "jk1");
1576 params.Append(env, input3, input4);
1577 params.Sort();
1578 napi_value tempValue = params.GetArray(env);
1579 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1580 DealNapiStrValue(env, ToString(env, paramsString), output);
1581 ASSERT_STREQ(output.c_str(), "a=jk1&ma=jk");
1582 }
1583
1584 HWTEST_F(NativeEngineTest, testUrlSearchParamsSort002, testing::ext::TestSize.Level0)
1585 {
1586 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1587 std::string output;
1588 napi_env env = (napi_env)engine_;
1589 napi_value input1 = StrToNapiValue(env, "ma");
1590 napi_value input2 = StrToNapiValue(env, "jk");
1591 params.Append(env, input1, input2);
1592 napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1593 napi_value input4 = StrToNapiValue(env, "jk1");
1594 params.Append(env, input3, input4);
1595 params.Sort();
1596 napi_value tempValue = params.GetArray(env);
1597 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1598 DealNapiStrValue(env, ToString(env, paramsString), output);
1599 ASSERT_STREQ(output.c_str(), "foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk1&ma=jk");
1600 }
1601
1602 HWTEST_F(NativeEngineTest, testUrlSearchParamsSort003, testing::ext::TestSize.Level0)
1603 {
1604 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1605 std::string output;
1606 napi_env env = (napi_env)engine_;
1607 napi_value input1 = StrToNapiValue(env, "ma");
1608 napi_value input2 = StrToNapiValue(env, "jk");
1609 params.Append(env, input1, input2);
1610 napi_value input3 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1611 napi_value input4 = StrToNapiValue(env, "jk1");
1612 params.Append(env, input3, input4);
1613 napi_value input5 = StrToNapiValue(env, "a");
1614 napi_value input6 = StrToNapiValue(env, "jk2");
1615 params.Append(env, input5, input6);
1616 params.Sort();
1617 napi_value tempValue = params.GetArray(env);
1618 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1619 DealNapiStrValue(env, ToString(env, paramsString), output);
1620 ASSERT_STREQ(output.c_str(), "a=jk2&foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk1&ma=jk");
1621 }
1622
1623 HWTEST_F(NativeEngineTest, testUrlSearchParamsToString001, testing::ext::TestSize.Level0)
1624 {
1625 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1626 std::string output;
1627 napi_env env = (napi_env)engine_;
1628 napi_value input1 = StrToNapiValue(env, "1 12");
1629 napi_value input2 = StrToNapiValue(env, "jk");
1630 params.Append(env, input1, input2);
1631 napi_value tempValue = params.GetArray(env);
1632 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1633 DealNapiStrValue(env, ToString(env, paramsString), output);
1634 ASSERT_STREQ(output.c_str(), "1+12=jk");
1635 }
1636
1637 HWTEST_F(NativeEngineTest, testUrlSearchParamsToString002, testing::ext::TestSize.Level0)
1638 {
1639 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1640 std::string output;
1641 napi_env env = (napi_env)engine_;
1642 napi_value input1 = StrToNapiValue(env, "¥=)");
1643 napi_value input2 = StrToNapiValue(env, "jk");
1644 params.Append(env, input1, input2);
1645 napi_value tempValue = params.GetArray(env);
1646 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1647 DealNapiStrValue(env, ToString(env, paramsString), output);
1648 ASSERT_STREQ(output.c_str(), "%EF%BF%A5%3D%29=jk");
1649 }
1650
1651 HWTEST_F(NativeEngineTest, testUrlSearchParamsToString003, testing::ext::TestSize.Level0)
1652 {
1653 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1654 std::string output;
1655 napi_env env = (napi_env)engine_;
1656 napi_value input1 = StrToNapiValue(env, "foo~!@#$%^&*()_+-=");
1657 napi_value input2 = StrToNapiValue(env, "jk");
1658 params.Append(env, input1, input2);
1659 napi_value tempValue = params.GetArray(env);
1660 std::vector<std::string> paramsString = GetParamsStrig(env, tempValue);
1661 DealNapiStrValue(env, ToString(env, paramsString), output);
1662 ASSERT_STREQ(output.c_str(), "foo%7E%21%40%23%24%25%5E%26*%28%29_%2B-%3D=jk");
1663 }
1664
1665 HWTEST_F(NativeEngineTest, testUrlSearchParams, testing::ext::TestSize.Level0)
1666 {
1667 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1668 std::string output;
1669 napi_env env = (napi_env)engine_;
1670 napi_value input1 = StrToNapiValue(env, "ma");
1671 DealNapiStrValue(env, params.IsHas(env, input1), output);
1672 ASSERT_STREQ(output.c_str(), "");
1673 }
1674
1675 HWTEST_F(NativeEngineTest, testUrlSearchParamsSetArray, testing::ext::TestSize.Level0)
1676 {
1677 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1678 std::string input1 = "jk";
1679 std::string input2 = "ma";
1680 napi_env env = (napi_env)engine_;
1681 std::vector<std::string> vec;
1682 vec.push_back(input1);
1683 vec.push_back(input2);
1684 params.SetArray(env, vec);
1685 napi_value result = params.GetArray(env);
1686 uint32_t length = 0;
1687 napi_value napiStr = nullptr;
1688 size_t arraySize = 0;
1689 napi_get_array_length(env, result, &length);
1690 std::string cstr1 = "";
1691 for (size_t i = 0; i < length; i++) {
1692 napi_get_element(env, result, i, &napiStr);
1693 napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1694 if (arraySize > 0) {
1695 napi_get_value_string_utf8(env, napiStr, cstr1.data(), arraySize + 1, &arraySize);
1696 }
1697 if (i == 0) {
1698 ASSERT_STREQ("jk", cstr1.data());
1699 } else {
1700 ASSERT_STREQ(cstr1.data(), "ma");
1701 }
1702 }
1703 }
1704
1705 HWTEST_F(NativeEngineTest, testUrlSearchParamsIterByKeys, testing::ext::TestSize.Level0)
1706 {
1707 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1708 std::string input1 = "jk";
1709 std::string input2 = "ma";
1710 napi_env env = (napi_env)engine_;
1711 std::vector<std::string> vec;
1712 vec.push_back(input1);
1713 vec.push_back(input2);
1714 params.SetArray(env, vec);
1715 napi_value result = params.IterByKeys(env);
1716 uint32_t length = 0;
1717 napi_value napiStr = nullptr;
1718 size_t arraySize = 0;
1719 napi_get_array_length(env, result, &length);
1720 std::string cstr = "";
1721 for (size_t i = 0; i < length; i += 2) {
1722 napi_get_element(env, result, i, &napiStr);
1723 napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1724 if (arraySize > 0) {
1725 napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize);
1726 }
1727 }
1728 ASSERT_STREQ(cstr.data(), "jk");
1729 }
1730
1731 HWTEST_F(NativeEngineTest, testUrlSearchParamsIterByValues, testing::ext::TestSize.Level0)
1732 {
1733 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1734 std::string input1 = "jk";
1735 std::string input2 = "ma";
1736 napi_env env = (napi_env)engine_;
1737 std::vector<std::string> vec;
1738 vec.push_back(input1);
1739 vec.push_back(input2);
1740 params.SetArray(env, vec);
1741 napi_value result = params.IterByValues(env);
1742 uint32_t length = 0;
1743 napi_value napiStr = nullptr;
1744 size_t arraySize = 0;
1745 napi_get_array_length(env, result, &length);
1746 std::string cstr = "";
1747 for (size_t i = 0; i < length; i++) {
1748 napi_get_element(env, result, i, &napiStr);
1749 napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1750 if (arraySize > 0) {
1751 napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize);
1752 }
1753 }
1754 ASSERT_STREQ(cstr.data(), "ma");
1755 }
1756
1757 HWTEST_F(NativeEngineTest, testUrlSearchParamsEntries001, testing::ext::TestSize.Level0)
1758 {
1759 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1760 napi_env env = (napi_env)engine_;
1761 napi_value input1 = StrToNapiValue(env, "ma");
1762 napi_value input2 = StrToNapiValue(env, "jk");
1763 params.Append(env, input1, input2);
1764 napi_value input3 = StrToNapiValue(env, "你好");
1765 napi_value input4 = StrToNapiValue(env, "jk1");
1766 params.Append(env, input3, input4);
1767 napi_value input5 = StrToNapiValue(env, "a");
1768 napi_value input6 = StrToNapiValue(env, "jk2");
1769 params.Append(env, input5, input6);
1770 napi_value result = params.Entries(env);
1771 uint32_t length = 0;
1772 napi_value napiStr = nullptr;
1773 size_t arraySize = 0;
1774 napi_get_array_length(env, result, &length);
1775 std::string cstr = "";
1776 for (size_t i = 0; i < length; i++) {
1777 napi_get_element(env, result, i, &napiStr);
1778 napi_get_value_string_utf8(env, napiStr, nullptr, 0, &arraySize);
1779 if (arraySize > 0) {
1780 napi_get_value_string_utf8(env, napiStr, cstr.data(), arraySize + 1, &arraySize);
1781 }
1782 }
1783 ASSERT_EQ(length, 3);
1784 }
1785
1786 HWTEST_F(NativeEngineTest, testUrlSearchParamsEntries002, testing::ext::TestSize.Level0)
1787 {
1788 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
1789 napi_env env = (napi_env)engine_;
1790 std::string output;
1791 params.Entries(env);
1792 napi_value input1 = StrToNapiValue(env, "ma");
1793 DealNapiStrValue(env, params.Get(env, input1), output);
1794 ASSERT_STREQ(output.c_str(), "");
1795 }
1796
1797 HWTEST_F(NativeEngineTest, testUrlutilities001, testing::ext::TestSize.Level0)
1798 {
1799 std::string inPut = "";
1800 OHOS::Url::DecodeSpecialChars(inPut);
1801 inPut = "%1238";
1802 OHOS::Url::DecodeSpecialChars(inPut);
1803 inPut = " ";
1804 OHOS::Url::DeleteC0OrSpace(inPut);
1805 inPut = " 123 ";
1806 OHOS::Url::DeleteC0OrSpace(inPut);
1807 inPut = "dks aasdd";
1808 OHOS::Url::DeleteTabOrNewline(inPut);
1809 inPut = "1asdf";
1810 std::string temp = "";
1811 std::bitset<11> flags; // 11:Each bit of a BIT represents a different parsing state.
1812 bool isFalse = OHOS::Url::AnalysisScheme(inPut, temp, flags);
1813 ASSERT_FALSE(isFalse);
1814 inPut = "@Sdf";
1815 OHOS::Url::AnalysisUsernameAndPasswd(inPut, temp, temp, flags);
1816 inPut = "12@3@222@Sdf";
1817 OHOS::Url::AnalysisUsernameAndPasswd(inPut, temp, temp, flags);
1818 inPut = "../../";
1819 std::vector<std::string> temp1;
1820 OHOS::Url::AnalysisPath(inPut, temp1, flags, true);
1821 inPut = "asd#sad";
1822 OHOS::Url::AnalysisOpaqueHost(inPut, temp, flags);
1823 inPut = "asdsad";
1824 OHOS::Url::AnalysisOpaqueHost(inPut, temp, flags);
1825 bool isHexDigit = OHOS::Url::IsHexDigit('/');
1826 ASSERT_FALSE(isHexDigit);
1827 }
1828
1829 HWTEST_F(NativeEngineTest, testUrlutilities002, testing::ext::TestSize.Level0)
1830 {
1831 OHOS::Url::UrlData urlDataInfo;
1832 std::string inPut = "192.136.54.22";
1833 std::string temp = "";
1834 std::bitset<11> flags;
1835 OHOS::Url::DealIpv4(inPut);
1836 inPut = "1080:0:0:0:8:800:200C:417A";
1837 OHOS::Url::FormatIpv6(inPut);
1838 inPut = "2136504";
1839 size_t i = 0;
1840 OHOS::Url::SplitNum(inPut, i);
1841 inPut = "192.168.1.55";
1842 OHOS::Url::AnalyseIPv4(inPut, temp, flags);
1843 inPut = "";
1844 OHOS::Url::AnalysisHost(inPut, inPut, flags, true);
1845 inPut = "[asjdhkj";
1846 OHOS::Url::AnalysisHost(inPut, inPut, flags, true);
1847 inPut = "f:11";
1848 bool isTrue = OHOS::Url::ISFileNohost(inPut);
1849 ASSERT_TRUE(isTrue);
1850 inPut = "../../../";
1851 OHOS::Url::AnalysisFilePath(inPut, urlDataInfo, flags);
1852 OHOS::Url::AnalysisFilescheme(inPut, urlDataInfo, flags);
1853 OHOS::Url::AnalyInfoPath(flags, urlDataInfo, inPut);
1854 inPut = "sadwasd";
1855 OHOS::Url::AnalyHostPath(inPut, flags, urlDataInfo);
1856 inPut = "sad@wasd";
1857 OHOS::Url::AnalyStrHost(inPut, urlDataInfo, flags);
1858 inPut = "";
1859 OHOS::Url::AnalyStrHost(inPut, urlDataInfo, flags);
1860 inPut = "//sjalkjd";
1861 urlDataInfo.scheme = "sa";
1862 OHOS::Url::AnalysisNoDefaultProtocol(inPut, urlDataInfo, flags);
1863 inPut = "//sjalkjd";
1864 urlDataInfo.scheme = "";
1865 OHOS::Url::AnalysisNoDefaultProtocol(inPut, urlDataInfo, flags);
1866 inPut = "";
1867 OHOS::Url::AnalysisOnlyHost(inPut, urlDataInfo, flags, i);
1868 bool isHexDigit = OHOS::Url::IsHexDigit('b');
1869 ASSERT_TRUE(isHexDigit);
1870 }
1871
GetStringUtf8(napi_env env,napi_value str)1872 std::string GetStringUtf8(napi_env env, napi_value str)
1873 {
1874 std::string buffer = "";
1875 size_t bufferSize = 0;
1876 if (napi_get_value_string_utf8(env, str, nullptr, 0, &bufferSize) != napi_ok) {
1877 HILOG_ERROR("can not get src size");
1878 return buffer;
1879 }
1880 buffer.resize(bufferSize);
1881 if (napi_get_value_string_utf8(env, str, buffer.data(), bufferSize + 1, &bufferSize) != napi_ok) {
1882 HILOG_ERROR("can not get src value");
1883 return buffer;
1884 }
1885 return buffer;
1886 }
1887
1888 HWTEST_F(NativeEngineTest, testUrlModule001, testing::ext::TestSize.Level0)
1889 {
1890 napi_env env = (napi_env)engine_;
1891 napi_value exports = nullptr;
1892 napi_create_object(env, &exports);
1893 OHOS::Url::Init(env, exports);
1894 napi_value urlClass = nullptr;
1895 napi_value constructorArgs[1] = { 0 };
1896 std::string input = "http://username:password@www.baidu.com:99/path/path?query#fagment";
1897 napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
1898 napi_get_named_property(env, exports, "Url", &urlClass);
1899 napi_value instance = nullptr;
1900 napi_new_instance(env, urlClass, 1, constructorArgs, &instance);
1901
1902 std::string input1 = "www.example.com";
1903 napi_value newValue = nullptr;
1904 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
1905 napi_set_named_property(env, instance, "hostname", newValue);
1906 napi_value urlProperty = nullptr;
1907 napi_get_named_property(env, instance, "hostname", &urlProperty);
1908 std::string res = GetStringUtf8(env, urlProperty);
1909 ASSERT_STREQ(res.c_str(), "www.example.com");
1910
1911 napi_value tempFn = nullptr;
1912 napi_get_named_property(env, instance, "onOrOff", &tempFn);
1913 bool res1 = false;
1914 napi_get_value_bool(env, tempFn, &res1);
1915 ASSERT_TRUE(res1);
1916
1917 napi_get_named_property(env, instance, "GetIsIpv6", &tempFn);
1918 res1 = true;
1919 napi_get_value_bool(env, tempFn, &res1);
1920 ASSERT_FALSE(res1);
1921
1922 input1 = "query1";
1923 newValue = nullptr;
1924 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
1925 napi_set_named_property(env, instance, "search", newValue);
1926 urlProperty = nullptr;
1927 napi_get_named_property(env, instance, "search", &urlProperty);
1928 res = GetStringUtf8(env, urlProperty);
1929 ASSERT_STREQ(res.c_str(), "?query1");
1930
1931 input1 = "username1";
1932 newValue = nullptr;
1933 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
1934 napi_set_named_property(env, instance, "username", newValue);
1935 urlProperty = nullptr;
1936 napi_get_named_property(env, instance, "username", &urlProperty);
1937 res = GetStringUtf8(env, urlProperty);
1938 ASSERT_STREQ(res.c_str(), "username1");
1939 }
1940
1941 HWTEST_F(NativeEngineTest, testUrlModule003, testing::ext::TestSize.Level0)
1942 {
1943 napi_env env = (napi_env)engine_;
1944 napi_value exports = nullptr;
1945 napi_create_object(env, &exports);
1946 OHOS::Url::Init(env, exports);
1947 napi_value urlClass = nullptr;
1948 napi_value constructorArgs[1] = { 0 };
1949 std::string input = "http://username:password@www.baidu.com:99/path/path?query#fagment";
1950 napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
1951 napi_get_named_property(env, exports, "Url", &urlClass);
1952 napi_value instance = nullptr;
1953 napi_new_instance(env, urlClass, 1, constructorArgs, &instance);
1954
1955 std::string input1 = "password1";
1956 napi_value newValue = nullptr;
1957 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
1958 napi_set_named_property(env, instance, "password", newValue);
1959 napi_value urlProperty = nullptr;
1960 napi_get_named_property(env, instance, "password", &urlProperty);
1961 std::string res = GetStringUtf8(env, urlProperty);
1962 ASSERT_STREQ(res.c_str(), "password1");
1963
1964 input1 = "www.example.com:11";
1965 newValue = nullptr;
1966 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
1967 napi_set_named_property(env, instance, "host", newValue);
1968 urlProperty = nullptr;
1969 napi_get_named_property(env, instance, "host", &urlProperty);
1970 res = GetStringUtf8(env, urlProperty);
1971 ASSERT_STREQ(res.c_str(), "www.example.com:11");
1972
1973 input1 = "fagment1";
1974 newValue = nullptr;
1975 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
1976 napi_set_named_property(env, instance, "hash", newValue);
1977 urlProperty = nullptr;
1978 napi_get_named_property(env, instance, "hash", &urlProperty);
1979 res = GetStringUtf8(env, urlProperty);
1980 ASSERT_STREQ(res.c_str(), "#fagment1");
1981 }
1982
1983 HWTEST_F(NativeEngineTest, testUrlModule004, testing::ext::TestSize.Level0)
1984 {
1985 napi_env env = (napi_env)engine_;
1986 napi_value exports = nullptr;
1987 napi_create_object(env, &exports);
1988 OHOS::Url::Init(env, exports);
1989 napi_value urlClass = nullptr;
1990 napi_value constructorArgs[1] = { 0 };
1991 std::string input = "http://username:password@www.baidu.com:99/path/path?query#fagment";
1992 napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
1993 napi_get_named_property(env, exports, "Url", &urlClass);
1994 napi_value instance = nullptr;
1995 napi_new_instance(env, urlClass, 1, constructorArgs, &instance);
1996
1997 std::string input1 = "https:";
1998 napi_value newValue = nullptr;
1999 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
2000 napi_set_named_property(env, instance, "protocol", newValue);
2001 napi_value urlProperty = nullptr;
2002 napi_get_named_property(env, instance, "protocol", &urlProperty);
2003 std::string res = GetStringUtf8(env, urlProperty);
2004 ASSERT_STREQ(res.c_str(), "https:");
2005
2006 input1 = "/path/path1";
2007 newValue = nullptr;
2008 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
2009 napi_set_named_property(env, instance, "pathname", newValue);
2010 urlProperty = nullptr;
2011 napi_get_named_property(env, instance, "pathname", &urlProperty);
2012 res = GetStringUtf8(env, urlProperty);
2013 ASSERT_STREQ(res.c_str(), "/path/path1");
2014
2015 input1 = "55";
2016 newValue = nullptr;
2017 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
2018 napi_set_named_property(env, instance, "port", newValue);
2019 urlProperty = nullptr;
2020 napi_get_named_property(env, instance, "port", &urlProperty);
2021 res = GetStringUtf8(env, urlProperty);
2022 ASSERT_STREQ(res.c_str(), "55");
2023
2024 napi_value constructorArgs1[1] = { 0 };
2025 napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs1[0]);
2026 napi_value hrefFn = nullptr;
2027 napi_get_named_property(env, instance, "href", &hrefFn);
2028 napi_value result1 = nullptr;
2029 napi_call_function(env, instance, hrefFn, 1, constructorArgs1, &result1);
2030
2031 urlProperty = nullptr;
2032 napi_get_named_property(env, instance, "port", &urlProperty);
2033 res = GetStringUtf8(env, urlProperty);
2034 ASSERT_STREQ(res.c_str(), "99");
2035 }
2036
2037 HWTEST_F(NativeEngineTest, testUrlModule002, testing::ext::TestSize.Level0)
2038 {
2039 napi_env env = (napi_env)engine_;
2040 napi_value exports = nullptr;
2041 napi_create_object(env, &exports);
2042 OHOS::Url::Init(env, exports);
2043 napi_value urlParamsClass = nullptr;
2044 napi_get_named_property(env, exports, "URLParams1", &urlParamsClass);
2045 napi_value instance = nullptr;
2046 napi_new_instance(env, urlParamsClass, 0, nullptr, &instance);
2047
2048 napi_value paramsFn = nullptr;
2049 napi_get_named_property(env, instance, "append", ¶msFn);
2050 napi_value input1 = StrToNapiValue(env, "ma");
2051 napi_value input2 = StrToNapiValue(env, "jk");
2052 napi_value args[] = { input1, input2 };
2053 napi_value result = nullptr;
2054 napi_call_function(env, instance, paramsFn, 2, args, &result);
2055
2056 paramsFn = nullptr;
2057 napi_get_named_property(env, instance, "set", ¶msFn);
2058 napi_value input3 = StrToNapiValue(env, "aa");
2059 napi_value args1[] = { input1, input3 };
2060 napi_call_function(env, instance, paramsFn, 2, args1, &result);
2061
2062 paramsFn = nullptr;
2063 napi_get_named_property(env, instance, "array", ¶msFn);
2064 std::string output = "";
2065 std::vector<std::string> paramsString = GetParamsStrig(env, paramsFn);
2066 DealNapiStrValue(env, ToString(env, paramsString), output);
2067 ASSERT_STREQ(output.c_str(), "ma=aa");
2068 napi_set_named_property(env, instance, "array", paramsFn);
2069
2070 paramsFn = nullptr;
2071 napi_get_named_property(env, instance, "has", ¶msFn);
2072 napi_value args2[1] = { input1 };
2073 napi_call_function(env, instance, paramsFn, 1, args2, &result);
2074 bool res1 = false;
2075 napi_get_value_bool(env, result, &res1);
2076 ASSERT_TRUE(res1);
2077 }
2078 HWTEST_F(NativeEngineTest, testUrlModule005, testing::ext::TestSize.Level0)
2079 {
2080 napi_env env = (napi_env)engine_;
2081 napi_value exports = nullptr;
2082 napi_create_object(env, &exports);
2083 OHOS::Url::Init(env, exports);
2084 napi_value urlParamsClass = nullptr;
2085 napi_get_named_property(env, exports, "URLParams1", &urlParamsClass);
2086 napi_value instance = nullptr;
2087 napi_new_instance(env, urlParamsClass, 0, nullptr, &instance);
2088 std::string output = "";
2089 napi_value paramsFn = nullptr;
2090 napi_get_named_property(env, instance, "append", ¶msFn);
2091 napi_value input1 = StrToNapiValue(env, "ma");
2092 napi_value result = nullptr;
2093
2094 paramsFn = nullptr;
2095 napi_get_named_property(env, instance, "set", ¶msFn);
2096 napi_value input3 = StrToNapiValue(env, "aa");
2097 napi_value args1[] = { input1, input3 };
2098 napi_call_function(env, instance, paramsFn, 2, args1, &result);
2099
2100 paramsFn = nullptr;
2101 napi_get_named_property(env, instance, "sort", ¶msFn);
2102 napi_call_function(env, instance, paramsFn, 0, nullptr, &result);
2103
2104 paramsFn = nullptr;
2105 napi_get_named_property(env, instance, "keys", ¶msFn);
2106 napi_call_function(env, instance, paramsFn, 0, nullptr, &result);
2107
2108 paramsFn = nullptr;
2109 napi_get_named_property(env, instance, "values", ¶msFn);
2110 napi_call_function(env, instance, paramsFn, 0, nullptr, &result);
2111
2112 paramsFn = nullptr;
2113 napi_get_named_property(env, instance, "get", ¶msFn);
2114
2115 napi_value args3[1] = { input1 };
2116 napi_call_function(env, instance, paramsFn, 1, args3, &result);
2117 DealNapiStrValue(env, result, output);
2118 ASSERT_STREQ(output.c_str(), "aa");
2119
2120 paramsFn = nullptr;
2121 napi_get_named_property(env, instance, "getAll", ¶msFn);
2122
2123 napi_value args4[1] = { input1 };
2124 napi_call_function(env, instance, paramsFn, 1, args4, &result);
2125 DealNapiStrValue(env, result, output);
2126 ASSERT_STREQ(output.c_str(), "aa");
2127
2128 paramsFn = nullptr;
2129 napi_get_named_property(env, instance, "entries", ¶msFn);
2130 napi_call_function(env, instance, paramsFn, 0, nullptr, &result);
2131
2132 paramsFn = nullptr;
2133 napi_get_named_property(env, instance, "delete", ¶msFn);
2134 napi_value args5[1] = { input1 };
2135 napi_call_function(env, instance, paramsFn, 1, args5, &result);
2136 DealNapiStrValue(env, result, output);
2137 ASSERT_STREQ(output.c_str(), "aa");
2138 }
2139 HWTEST_F(NativeEngineTest, testUrlModule006, testing::ext::TestSize.Level0)
2140 {
2141 std::string inPut = "#1asdf";
2142 std::string temp = "";
2143 std::bitset<11> flags; // 11:Each bit of a BIT represents a different parsing state.
2144 bool isFalse = OHOS::Url::AnalysisScheme(inPut, temp, flags);
2145 ASSERT_FALSE(isFalse);
2146 }
2147
2148 HWTEST_F(NativeEngineTest, testUrlModule007, testing::ext::TestSize.Level0)
2149 {
2150 std::string inPut = "";
2151 std::string temp = "";
2152 std::bitset<11> flags(1023) ; // 11:Each bit of a BIT represents a different parsing state.
2153 OHOS::Url::AnalysisScheme(inPut, temp, flags);
2154 long a = flags.to_ulong();
2155 ASSERT_EQ(a, 1023);
2156 }
2157
2158 HWTEST_F(NativeEngineTest, testUrlModule008, testing::ext::TestSize.Level0)
2159 {
2160 std::string inPut = "66666";
2161 std::string temp = "";
2162 std::bitset<11> flags(1023) ; // 11:Each bit of a BIT represents a different parsing state.
2163 OHOS::Url::AnalysisScheme(inPut, temp, flags);
2164 long a = flags.to_ulong();
2165 ASSERT_EQ(a, 1023);
2166 }
2167
2168 HWTEST_F(NativeEngineTest, testUrlutilities009, testing::ext::TestSize.Level0)
2169 {
2170 std::string inPut = "99::1080:0:0:8:800:200C:417A";
2171 OHOS::Url::FormatIpv6(inPut);
2172 ASSERT_STREQ(inPut.c_str(), "99:1080:0:0:8:800:200C:417A");
2173 inPut = "::99:1080:0:0:8:800:200C:417A";
2174 OHOS::Url::FormatIpv6(inPut);
2175 ASSERT_STREQ(inPut.c_str(), "0:99:1080:0:0:8:800:200C:417A");
2176 }
2177
2178 HWTEST_F(NativeEngineTest, testUrlutilities010, testing::ext::TestSize.Level0)
2179 {
2180 OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
2181 std::string str = "0x.23.56";
2182 url.SetHostname(str);
2183 ASSERT_STREQ(str.c_str(), "0x.23.56");
2184 }
2185
2186 HWTEST_F(NativeEngineTest, testUrlutilities011, testing::ext::TestSize.Level0)
2187 {
2188 OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
2189 std::string str = "0.23.56";
2190 url.SetHostname(str);
2191 ASSERT_STREQ(str.c_str(), "0.23.56");
2192 }
2193
2194 HWTEST_F(NativeEngineTest, testUrlutilities012, testing::ext::TestSize.Level0)
2195 {
2196 OHOS::Url::URL url("http://0377.0xff.255.1:80/index.html");
2197 std::string str = "33."".";
2198 url.SetHostname(str);
2199 ASSERT_STREQ(str.c_str(), "33..");
2200 }
2201
2202 HWTEST_F(NativeEngineTest, testUrlutilities013, testing::ext::TestSize.Level0)
2203 {
2204 OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
2205 std::string str = "111111111.1001000.111.10101";
2206 url.SetHost(str);
2207 ASSERT_STREQ(str.c_str(), "111111111.1001000.111.10101");
2208 }
2209
2210 HWTEST_F(NativeEngineTest, testUrlutilities014, testing::ext::TestSize.Level0)
2211 {
2212 OHOS::Url::URL url("http://username:password@host:199/directory/file?query#fragment");
2213 std::string str = "10.11.11111111";
2214 url.SetHost(str);
2215 ASSERT_STREQ(str.c_str(), "10.11.11111111");
2216 }
2217
2218 HWTEST_F(NativeEngineTest, testUrlutilities015, testing::ext::TestSize.Level0)
2219 {
2220 std::string str = "hello world!";
2221 size_t number = 0;
2222 OHOS::Url::SplitNum(str, number);
2223 ASSERT_STREQ(str.c_str(), "hello world!");
2224 }
2225
2226 HWTEST_F(NativeEngineTest, testUrlutilities016, testing::ext::TestSize.Level0)
2227 {
2228 std::string input = "H+#LLOWORLD";
2229 std::string scheme = "";
2230 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2231 bool rst = OHOS::Url::AnalysisScheme(input, scheme, flags);
2232 ASSERT_FALSE(rst);
2233 }
2234
2235 HWTEST_F(NativeEngineTest, testUrlutilities017, testing::ext::TestSize.Level0)
2236 {
2237 std::string input = "H+#LLOWORLD:";
2238 OHOS::Url::UrlData urlinfo;
2239 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2240 size_t pos = 0;
2241 OHOS::Url::AnalysisOnlyHost(input, urlinfo, flags, pos);
2242 ASSERT_STREQ(input.c_str(), "H+#LLOWORLD:");
2243 }
2244
2245 HWTEST_F(NativeEngineTest, testUrlutilities018, testing::ext::TestSize.Level0)
2246 {
2247 std::string input = "H+#LLOWORLD:65536";
2248 OHOS::Url::UrlData urlinfo;
2249 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2250 size_t pos = 0;
2251 OHOS::Url::AnalysisOnlyHost(input, urlinfo, flags, pos);
2252 ASSERT_STREQ(input.c_str(), "H+#LLOWORLD:65536");
2253 }
2254
2255 HWTEST_F(NativeEngineTest, testUrlutilities019, testing::ext::TestSize.Level0)
2256 {
2257 std::string input01 = "256";
2258 std::vector<std::string> nums;
2259 nums.push_back(input01);
2260 std::string host;
2261 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2262 OHOS::Url::FormatIpv4(nums, host, flags);
2263 ASSERT_STREQ(host.c_str(), "0.0.1.0");
2264 }
2265
2266 HWTEST_F(NativeEngineTest, testUrlutilities020, testing::ext::TestSize.Level0)
2267 {
2268 std::string input = "abcdefghi";
2269 std::string input01 = "1";
2270 std::string input02 = "2";
2271 std::vector<std::string> nums;
2272 nums.push_back(input);
2273 nums.push_back(input01);
2274 nums.push_back(input02);
2275 std::string host;
2276 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2277 OHOS::Url::FormatIpv4(nums, host, flags);
2278 ASSERT_EQ(nums.size(), 3);
2279 }
2280
2281 HWTEST_F(NativeEngineTest, testUrlutilities021, testing::ext::TestSize.Level0)
2282 {
2283 std::string input = "155.155.256.111111111";
2284 std::string host;
2285 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2286 OHOS::Url::AnalyseIPv4(input, host, flags);
2287 ASSERT_STREQ(input.c_str(), "155.155.256.111111111");
2288 }
2289
2290 HWTEST_F(NativeEngineTest, testUrlutilities022, testing::ext::TestSize.Level0)
2291 {
2292 std::string input = "http://example.com/path/.%2E/to%2eresource";
2293 OHOS::Url::UrlData urlinfo;
2294 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2295 OHOS::Url::AnalysisFilePath(input, urlinfo, flags);
2296 ASSERT_STREQ(input.c_str(), "to%2eresource");
2297 }
2298
2299 HWTEST_F(NativeEngineTest, testUrlutilities023, testing::ext::TestSize.Level0)
2300 {
2301 std::string input = "http://example.com/path/to%2eresource/%2E";
2302 OHOS::Url::UrlData urlinfo;
2303 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2304 OHOS::Url::AnalysisFilePath(input, urlinfo, flags);
2305 ASSERT_STREQ(input.c_str(), "%2E");
2306 }
2307
2308 HWTEST_F(NativeEngineTest, testUrlutilities024, testing::ext::TestSize.Level0)
2309 {
2310 std::string input = ".%2E";
2311 OHOS::Url::UrlData urlinfo;
2312 std::string str = "h:";
2313 urlinfo.path.push_back(str);
2314 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2315 OHOS::Url::AnalysisFilePath(input, urlinfo, flags);
2316 ASSERT_STREQ(input.c_str(), ".%2E");
2317 }
2318
2319 HWTEST_F(NativeEngineTest, testUrlutilities025, testing::ext::TestSize.Level0)
2320 {
2321 std::string input = ".%2E";
2322 OHOS::Url::UrlData urlinfo;
2323 std::string str = "w:";
2324 urlinfo.path.push_back(str);
2325 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2326 OHOS::Url::AnalysisFilePath(input, urlinfo, flags);
2327 ASSERT_STREQ(input.c_str(), ".%2E");
2328 }
2329
2330 HWTEST_F(NativeEngineTest, testUrlutilities026, testing::ext::TestSize.Level0)
2331 {
2332 std::string input = ".%2E";
2333 OHOS::Url::UrlData urlinfo;
2334 std::string str = "z:";
2335 urlinfo.path.push_back(str);
2336 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2337 OHOS::Url::AnalysisFilePath(input, urlinfo, flags);
2338 ASSERT_STREQ(input.c_str(), ".%2E");
2339 }
2340
2341 HWTEST_F(NativeEngineTest, testUrlutilities027, testing::ext::TestSize.Level0)
2342 {
2343 std::string temp = "w:51";
2344 size_t pos = 2;
2345 OHOS::Url::UrlData urlinfo;
2346 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2347 OHOS::Url::AnalysisSpecialFile(temp, pos, urlinfo, flags);
2348 ASSERT_STREQ(temp.c_str(), "w:51");
2349 }
2350
2351 HWTEST_F(NativeEngineTest, testUrlutilities028, testing::ext::TestSize.Level0)
2352 {
2353 std::string input = "/g";;
2354 OHOS::Url::UrlData urlinfo;
2355 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2356 OHOS::Url::AnalysisFile(input, urlinfo, flags);
2357 ASSERT_STREQ(input.c_str(), "g");
2358 }
2359
2360 HWTEST_F(NativeEngineTest, testUrlutilities029, testing::ext::TestSize.Level0)
2361 {
2362 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2363 flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2364 std::string input = "//abc";
2365 OHOS::Url::UrlData urlinfo;
2366 OHOS::Url::AnalysisFile(input, urlinfo, flags);
2367 ASSERT_STREQ(input.c_str(), "//abc");
2368 }
2369
2370 HWTEST_F(NativeEngineTest, testUrlutilities030, testing::ext::TestSize.Level0)
2371 {
2372 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2373 flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2374 std::string input = "/abc";
2375 OHOS::Url::UrlData urlinfo;
2376 OHOS::Url::AnalyInfoPath(flags, urlinfo, input);
2377 ASSERT_STREQ(input.c_str(), "/abc");
2378 }
2379
2380 HWTEST_F(NativeEngineTest, testUrlutilities031, testing::ext::TestSize.Level0)
2381 {
2382 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2383 flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2384 std::string input = ":h";
2385 OHOS::Url::UrlData urlinfo;
2386 OHOS::Url::AnalyHostPath(input, flags, urlinfo);
2387 ASSERT_TRUE(flags[0]);
2388 }
2389
2390 HWTEST_F(NativeEngineTest, testUrlutilities032, testing::ext::TestSize.Level0)
2391 {
2392 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2393 flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2394 std::string input = "///";
2395 OHOS::Url::UrlData urlinfo;
2396 OHOS::Url::AnalysisNoDefaultProtocol(input, urlinfo, flags);
2397 ASSERT_STREQ(input.c_str(), "///");
2398 }
2399
2400 HWTEST_F(NativeEngineTest, testUrlutilities033, testing::ext::TestSize.Level0)
2401 {
2402 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2403 flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2404 std::string input = "//";
2405 OHOS::Url::UrlData urlinfo;
2406 OHOS::Url::AnalysisNoDefaultProtocol(input, urlinfo, flags);
2407 ASSERT_STREQ(input.c_str(), "//");
2408 }
2409
2410 HWTEST_F(NativeEngineTest, testUrlutilities034, testing::ext::TestSize.Level0)
2411 {
2412 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2413 flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2414 std::string input = "//::/";
2415 OHOS::Url::UrlData urlinfo;
2416 OHOS::Url::AnalysisNoDefaultProtocol(input, urlinfo, flags);
2417 ASSERT_STREQ(input.c_str(), "//::/");
2418 }
2419
2420 HWTEST_F(NativeEngineTest, testUrlutilities035, testing::ext::TestSize.Level0)
2421 {
2422 std::string input = "abc:d:e";
2423 OHOS::Url::UrlData urlinfo;
2424 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2425 flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2426 size_t pos = 0;
2427 OHOS::Url::AnalysisOnlyHost(input, urlinfo, flags, pos);
2428 ASSERT_STREQ(input.c_str(), "abc:d:e");
2429 }
2430
2431 HWTEST_F(NativeEngineTest, testUrlutilities036, testing::ext::TestSize.Level0)
2432 {
2433 std::string input = "abc:d:e/fg";
2434 OHOS::Url::UrlData urlinfo;
2435 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2436 flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2437 size_t pos = 6; // 6:string position
2438 OHOS::Url::ParsingHostAndPath(input, urlinfo, pos, flags);
2439 ASSERT_STREQ(input.c_str(), "abc:d:e/fg");
2440 }
2441
2442 HWTEST_F(NativeEngineTest, testUrlutilities037, testing::ext::TestSize.Level0)
2443 {
2444 OHOS::Url::UrlData urlData;
2445 OHOS::Url::UrlData baseData;
2446 baseData.path.push_back("");
2447 urlData.path.push_back("");
2448 bool isFile = false;
2449 OHOS::Url::ShorteningPath(urlData, baseData, isFile);
2450 ASSERT_FALSE(isFile);
2451 }
2452
2453 HWTEST_F(NativeEngineTest, testUrlutilities038, testing::ext::TestSize.Level0)
2454 {
2455 OHOS::Url::UrlData urlData;
2456 OHOS::Url::UrlData baseData;
2457 baseData.path.push_back("a:");
2458 urlData.path.push_back("a");
2459 bool isFile = true;
2460 OHOS::Url::ShorteningPath(urlData, baseData, isFile);
2461 ASSERT_TRUE(isFile);
2462 }
2463
2464 HWTEST_F(NativeEngineTest, testUrlutilities040, testing::ext::TestSize.Level0)
2465 {
2466 std::string input = ".%2E";
2467 std::vector<std::string> path;
2468 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2469 bool isSpecial = true;
2470 OHOS::Url::AnalysisPath(input, path, flags, isSpecial);
2471 ASSERT_STREQ(input.c_str(), ".%2E");
2472 }
2473
2474 HWTEST_F(NativeEngineTest, testUrlutilities041, testing::ext::TestSize.Level0)
2475 {
2476 std::string input = "%2E";
2477 std::vector<std::string> path;
2478 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2479 bool isSpecial = true;
2480 OHOS::Url::AnalysisPath(input, path, flags, isSpecial);
2481 ASSERT_STREQ(input.c_str(), "%2E");
2482 }
2483
2484 HWTEST_F(NativeEngineTest, testUrlutilities042, testing::ext::TestSize.Level0)
2485 {
2486 std::string input = "99::1080:800:200C:417A";
2487 OHOS::Url::FormatIpv6(input);
2488 ASSERT_STREQ(input.c_str(), "99:0:0:0:1080:800:200C:417A");
2489 }
2490
2491 HWTEST_F(NativeEngineTest, testUrlutilities043, testing::ext::TestSize.Level0)
2492 {
2493 std::string input = "000:1080:800:200C:417A";
2494 std::vector<std::string> ipv6;
2495 ipv6.push_back(input);
2496 OHOS::Url::RemoveLeadingZeros(ipv6);
2497 ASSERT_STREQ(input.c_str(), "000:1080:800:200C:417A");
2498 }
2499
2500 HWTEST_F(NativeEngineTest, testUrlutilities044, testing::ext::TestSize.Level0)
2501 {
2502 std::string input = "::ffff:192.168.1.1";
2503 std::string host = "";
2504 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2505 OHOS::Url::IPv6Host(input, host, flags);
2506 ASSERT_STREQ(input.c_str(), "::ffff:c0a8:101");
2507 }
2508
2509 HWTEST_F(NativeEngineTest, testUrlutilities045, testing::ext::TestSize.Level0)
2510 {
2511 std::string input = "w";
2512 OHOS::Url::UrlData urlinfo;
2513 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2514 OHOS::Url::AnalysisNoDefaultProtocol(input, urlinfo, flags);
2515 ASSERT_STREQ(input.c_str(), "w");
2516 }
2517
2518 HWTEST_F(NativeEngineTest, testUrlutilities046, testing::ext::TestSize.Level0)
2519 {
2520 std::string input = "ww:w]wa:b]c/www";
2521 OHOS::Url::UrlData urlinfo;
2522 size_t pos;
2523 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2524 flags.set(static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT0));
2525 OHOS::Url::ParsingHostAndPath(input, urlinfo, pos, flags);
2526 ASSERT_STREQ(input.c_str(), "ww:w]wa:b]c/www");
2527 }
2528
2529 HWTEST_F(NativeEngineTest, testUrlutilities047, testing::ext::TestSize.Level0)
2530 {
2531 OHOS::Url::UrlData urlData;
2532 std::string s1 = "www";
2533 std::string s2 = "aaa";
2534 std::string s3 = "bbb";
2535 std::string s4 = "ccc";
2536 urlData.path.push_back(s1);
2537 urlData.path.push_back(s2);
2538 urlData.path.push_back(s3);
2539 urlData.path.push_back(s4);
2540 std::string rst = OHOS::Url::BasePathToStr(urlData);
2541 ASSERT_STREQ(rst.c_str(), "www/aaa/bbb/ccc");
2542 }
2543
2544 HWTEST_F(NativeEngineTest, testUrlutilities048, testing::ext::TestSize.Level0)
2545 {
2546 std::vector<std::string> ipv6;
2547 std::string str = "00ccccc";
2548 ipv6.push_back(str);
2549 OHOS::Url::RemoveLeadingZeros(ipv6);
2550 ASSERT_STREQ(str.c_str(), "00ccccc");
2551 }
2552
2553 HWTEST_F(NativeEngineTest, testUrlutilities049, testing::ext::TestSize.Level0)
2554 {
2555 std::string input = "//@/aabab";
2556 OHOS::Url::UrlData urlinfo;
2557 std::bitset<static_cast<size_t>(OHOS::Url::BitsetStatusFlag::BIT_STATUS_11)> flags;
2558 OHOS::Url::AnalysisNoDefaultProtocol(input, urlinfo, flags);
2559 ASSERT_STREQ(input.c_str(), "//@/aabab");
2560 }
2561
2562 HWTEST_F(NativeEngineTest, testUrlutilities050, testing::ext::TestSize.Level0)
2563 {
2564 std::string input = "99::1080:8:800:200C:417A";
2565 OHOS::Url::FormatIpv6(input);
2566 ASSERT_STREQ(input.c_str(), "99:0:0:1080:8:800:200C:417A");
2567 }
2568
2569 HWTEST_F(NativeEngineTest, testUrlHelper001, testing::ext::TestSize.Level0)
2570 {
2571 std::string input = "abc~!@#$|[]{}`^%()_+-=";
2572 std::string urlEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::URL_ENCODED_PERCENT_SIGN_CHARS);
2573 ASSERT_STREQ(urlEncode.c_str(), "abc~!@#$%7C%5B%5D%7B%7D%60%5E%25()_+-=");
2574
2575 std::string userinfoEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::USERINFO_PERCENT_SIGN_CHARS);
2576 ASSERT_STREQ(userinfoEncode.c_str(), "abc~!@#$%7C%5B%5D%7B%7D%60%5E%()_+-=");
2577
2578 std::string pathEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::PATH_PERCENT_SIGN_CHARS);
2579 ASSERT_STREQ(pathEncode.c_str(), "abc~!@#$|[]%7B%7D%60%5E%()_+-=");
2580
2581 std::string fragmentEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::FRAGMENT_PERCENT_SIGN_CHARS);
2582 ASSERT_STREQ(fragmentEncode.c_str(), "abc~!@#$|[]{}`%5E%()_+-=");
2583
2584 std::string queryEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::QUERY_PERCENT_SIGN_CHARS);
2585 ASSERT_STREQ(queryEncode.c_str(), "abc~!@#$|[]{}`^%()_+-=");
2586
2587 }
2588
2589 HWTEST_F(NativeEngineTest, testUrlHelper002, testing::ext::TestSize.Level0)
2590 {
2591 std::string input = "";
2592 for (uint8_t i = 0; i <= 0x7F; i++) {
2593 input += static_cast<char>(i);
2594 }
2595 std::string out =
2596 "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D"
2597 "%1E%1F%20!%22#$%25&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklm"
2598 "nopqrstuvwxyz%7B%7C%7D~%7F";
2599 // username, password {'%25':'%'}
2600 std::string outUserInfo =
2601 "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D"
2602 "%1E%1F%20!%22#$%&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklm"
2603 "nopqrstuvwxyz%7B%7C%7D~%7F";
2604 // {'%7C': '|', '%5B': '[', '%5D': ']', '%25': '%'}
2605 std::string outPath =
2606 "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D"
2607 "%1E%1F%20!%22#$%&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[%5C]%5E_%60abcdefghijklm"
2608 "nopqrstuvwxyz%7B|%7D~%7F";
2609 // hash, fragment {'%7C': '|', '%5B': '[', '%5D': ']', '%7B': '{', '%7D': '}', '%60': '`', '%25': '%'}
2610 std::string outFragment =
2611 "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D"
2612 "%1E%1F%20!%22#$%&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[%5C]%5E_`abcdefghijklm"
2613 "nopqrstuvwxyz{|}~%7F";
2614 // query {'%7C': '|', '%5B': '[', '%5D': ']', '%7B': '{', '%7D': '}', '%60': '`', '%5E': '^', '%25': '%'}
2615 std::string outQuery =
2616 "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D"
2617 "%1E%1F%20!%22#$%&'()*+,-./0123456789:;%3C=%3E?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[%5C]^_`abcdefghijklm"
2618 "nopqrstuvwxyz{|}~%7F";
2619
2620 std::string urlEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::URL_ENCODED_PERCENT_SIGN_CHARS);
2621 ASSERT_STREQ(urlEncode.c_str(), out.c_str());
2622 ASSERT_STREQ(
2623 OHOS::Url::EncodePercentEncoding(input, OHOS::Url::USERINFO_PERCENT_SIGN_CHARS).c_str(), outUserInfo.c_str());
2624 ASSERT_STREQ(OHOS::Url::EncodePercentEncoding(input, OHOS::Url::PATH_PERCENT_SIGN_CHARS).c_str(), outPath.c_str());
2625 ASSERT_STREQ(
2626 OHOS::Url::EncodePercentEncoding(input, OHOS::Url::FRAGMENT_PERCENT_SIGN_CHARS).c_str(), outFragment.c_str());
2627 ASSERT_STREQ(
2628 OHOS::Url::EncodePercentEncoding(input, OHOS::Url::QUERY_PERCENT_SIGN_CHARS).c_str(), outQuery.c_str());
2629 }
2630
2631 HWTEST_F(NativeEngineTest, testUrlHelper003, testing::ext::TestSize.Level0)
2632 {
2633 std::string input = "";
2634 char chars[] = { 0x1, 0x7, 0x8, 0xF, 0x25, 0x2F, 0x5B, 0x5D, 0x5E, 0x60, 0x6C, 0x7B, 0x7C, 0x7D, 0x7F, 0x8F, 0xC1,
2635 0xF1, 0xFF };
2636 for (uint8_t i = 0; i < sizeof(chars) / sizeof(char); i++) {
2637 input += chars[i];
2638 }
2639 std::string out = "%01%07%08%0F%25/%5B%5D%5E%60l%7B%7C%7D%7F%8F%C1%F1%FF";
2640 // username, password {'%25':'%'}
2641 std::string outUserInfo = "%01%07%08%0F%/%5B%5D%5E%60l%7B%7C%7D%7F%8F%C1%F1%FF";
2642 // {'%7C': '|', '%5B': '[', '%5D': ']', '%25': '%'}
2643 std::string outPath = "%01%07%08%0F%/[]%5E%60l%7B|%7D%7F%8F%C1%F1%FF";
2644 // hash, fragment {'%7C': '|', '%5B': '[', '%5D': ']', '%7B': '{', '%7D': '}', '%60': '`', '%25': '%'}
2645 std::string outFragment = "%01%07%08%0F%/[]%5E`l{|}%7F%8F%C1%F1%FF";
2646 // query {'%7C': '|', '%5B': '[', '%5D': ']', '%7B': '{', '%7D': '}', '%60': '`', '%5E': '^', '%25': '%'}
2647 std::string outQuery = "%01%07%08%0F%/[]^`l{|}%7F%8F%C1%F1%FF";
2648
2649 std::string urlEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::URL_ENCODED_PERCENT_SIGN_CHARS);
2650 ASSERT_STREQ(urlEncode.c_str(), out.c_str());
2651 ASSERT_STREQ(
2652 OHOS::Url::EncodePercentEncoding(input, OHOS::Url::USERINFO_PERCENT_SIGN_CHARS).c_str(), outUserInfo.c_str());
2653 ASSERT_STREQ(OHOS::Url::EncodePercentEncoding(input, OHOS::Url::PATH_PERCENT_SIGN_CHARS).c_str(), outPath.c_str());
2654 ASSERT_STREQ(
2655 OHOS::Url::EncodePercentEncoding(input, OHOS::Url::FRAGMENT_PERCENT_SIGN_CHARS).c_str(), outFragment.c_str());
2656 ASSERT_STREQ(
2657 OHOS::Url::EncodePercentEncoding(input, OHOS::Url::QUERY_PERCENT_SIGN_CHARS).c_str(), outQuery.c_str());
2658 }
2659
2660 HWTEST_F(NativeEngineTest, testUrlHelper004, testing::ext::TestSize.Level0)
2661 {
2662 std::string input = "";
2663 for (uint8_t i = 0x80; i != 0x00; i++) {
2664 input += static_cast<char>(i);
2665 }
2666 std::string out =
2667 "%80%81%82%83%84%85%86%87%88%89%8A%8B%8C%8D%8E%8F%90%91%92%93%94%95%96%97%98%99%9A%9B%9C%9D%9E%9F"
2668 "%A0%A1%A2%A3%A4%A5%A6%A7%A8%A9%AA%AB%AC%AD%AE%AF%B0%B1%B2%B3%B4%B5%B6%B7%B8%B9%BA%BB%BC%BD%BE%BF"
2669 "%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D7%D8%D9%DA%DB%DC%DD%DE%DF"
2670 "%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF%F0%F1%F2%F3%F4%F5%F6%F7%F8%F9%FA%FB%FC%FD%FE%FF";
2671
2672 std::string urlEncode = OHOS::Url::EncodePercentEncoding(input, OHOS::Url::URL_ENCODED_PERCENT_SIGN_CHARS);
2673 ASSERT_STREQ(urlEncode.c_str(), out.c_str());
2674 ASSERT_STREQ(OHOS::Url::EncodePercentEncoding(input, OHOS::Url::USERINFO_PERCENT_SIGN_CHARS).c_str(), out.c_str());
2675 ASSERT_STREQ(OHOS::Url::EncodePercentEncoding(input, OHOS::Url::PATH_PERCENT_SIGN_CHARS).c_str(), out.c_str());
2676 ASSERT_STREQ(OHOS::Url::EncodePercentEncoding(input, OHOS::Url::FRAGMENT_PERCENT_SIGN_CHARS).c_str(), out.c_str());
2677 ASSERT_STREQ(OHOS::Url::EncodePercentEncoding(input, OHOS::Url::QUERY_PERCENT_SIGN_CHARS).c_str(), out.c_str());
2678 }
2679
2680 HWTEST_F(NativeEngineTest, testUrlHelper005, testing::ext::TestSize.Level0)
2681 {
2682 std::string input = "abc~!@#$%7C%5B%5D%7B%7D%60%5E%()_+-=%7c";
2683 std::string decodeResult = OHOS::Url::DecodePercentEncoding(input);
2684 ASSERT_STREQ(decodeResult.c_str(), "abc~!@#$|[]{}`^%()_+-=|");
2685 std::string inputTwo = "abc~!@#$|[]{}`^()_+-=";
2686 std::string decodeResultTwo = OHOS::Url::DecodePercentEncoding(inputTwo);
2687 ASSERT_STREQ(decodeResultTwo.c_str(), "abc~!@#$|[]{}`^()_+-=");
2688 }
2689
2690 HWTEST_F(NativeEngineTest, testUrlHelper006, testing::ext::TestSize.Level0)
2691 {
2692 std::string input = "?foo=1&index=0&url=https%3A%2F%2Fssse?iz=67594&from=article.detail%26x-expires%3D17&ff=&cc";
2693 std::vector<OHOS::Url::KeyValue> params {};
2694 OHOS::Url::StringAnalyzing(input, params);
2695 ASSERT_EQ(params.size(), 6);
2696 ASSERT_STREQ(params[0].first.c_str(), "foo");
2697 ASSERT_STREQ(params[0].second.c_str(), "1");
2698 ASSERT_STREQ(params[1].first.c_str(), "index");
2699 ASSERT_STREQ(params[1].second.c_str(), "0");
2700 ASSERT_STREQ(params[2].first.c_str(), "url");
2701 ASSERT_STREQ(params[2].second.c_str(), "https://ssse?iz=67594");
2702 ASSERT_STREQ(params[3].first.c_str(), "from");
2703 ASSERT_STREQ(params[3].second.c_str(), "article.detail&x-expires=17");
2704 ASSERT_STREQ(params[4].first.c_str(), "ff");
2705 ASSERT_STREQ(params[4].second.c_str(), "");
2706 ASSERT_STREQ(params[5].first.c_str(), "cc");
2707 ASSERT_STREQ(params[5].second.c_str(), "");
2708 }
2709
2710 HWTEST_F(NativeEngineTest, testUrlHelper007, testing::ext::TestSize.Level0)
2711 {
2712 std::string input = "?bar=2&&&&&foo~!@$%^&*()_+=test+@$%";
2713 std::vector<OHOS::Url::KeyValue> params {};
2714 OHOS::Url::StringAnalyzing(input, params);
2715 ASSERT_EQ(params.size(), 7);
2716 ASSERT_STREQ(params[0].first.c_str(), "bar");
2717 ASSERT_STREQ(params[0].second.c_str(), "2");
2718 ASSERT_STREQ(params[1].first.c_str(), "");
2719 ASSERT_STREQ(params[1].second.c_str(), "");
2720 ASSERT_STREQ(params[2].first.c_str(), "");
2721 ASSERT_STREQ(params[2].second.c_str(), "");
2722 ASSERT_STREQ(params[3].first.c_str(), "");
2723 ASSERT_STREQ(params[3].second.c_str(), "");
2724 ASSERT_STREQ(params[4].first.c_str(), "");
2725 ASSERT_STREQ(params[4].second.c_str(), "");
2726 ASSERT_STREQ(params[5].first.c_str(), "foo~!@$%^");
2727 ASSERT_STREQ(params[5].second.c_str(), "");
2728 ASSERT_STREQ(params[6].first.c_str(), "*()_ ");
2729 ASSERT_STREQ(params[6].second.c_str(), "test @$%");
2730 }
2731
2732 // 0xxx xxxx 0x00 -0x7F decode, 0x80-0xFF not decode
2733 HWTEST_F(NativeEngineTest, testUrlHelper008, testing::ext::TestSize.Level0)
2734 {
2735 for (int i = 0x00; i <= 0xFF; i++) {
2736 auto tem = DecimalToPercentHexString(i);
2737 //%xx, char 0xxx xxxx
2738 if (i <= 0x7F) {
2739 ASSERT_STRNE(OHOS::Url::DecodePercentEncoding(tem).c_str(), tem.c_str());
2740 } else {
2741 ASSERT_STREQ(OHOS::Url::DecodePercentEncoding(tem).c_str(), tem.c_str());
2742 }
2743 }
2744 }
2745
2746 // 10xx xxxx xxxx xxxx , 0x8000-0xFFFF ,
2747 // 0xc080-0xc0BF, 0xDF80-0xDFBF decode
2748 HWTEST_F(NativeEngineTest, testUrlHelper009, testing::ext::TestSize.Level1)
2749 {
2750 for (int i = 0x80; i <= 0xFF; i++) {
2751 auto tem = DecimalToPercentHexString(i);
2752 for (int j = 0x00; j <= 0xFF; j++) {
2753 auto tem1 = tem + DecimalToPercentHexString(j);
2754 //%xx%xx, first char 110X XXXX - 1101 1111;//second char 10XX XXXX - 1011 1111
2755 if ((i >= 0xc0 && i <= 0xDF) && (j >= 0x80 && j <= 0xBF)) {
2756 // mean can be decode, 2 length
2757 ASSERT_EQ(OHOS::Url::DecodePercentEncoding(tem1).length(), 2);
2758 } else {
2759 // only part decode or not, 2 length
2760 ASSERT_NE(OHOS::Url::DecodePercentEncoding(tem1).length(), 2);
2761 }
2762 }
2763 }
2764 }
2765
2766 // 111x xxxx xxxx xxxx xxxx xxxx, 0xE00000-0xFFFF00
2767 HWTEST_F(NativeEngineTest, testUrlHelper010, testing::ext::TestSize.Level1)
2768 {
2769 for (int i = 0xE00000; i <= 0xFF0000; i++) {
2770 // 16 two byte, 8 one byte,get char from all byte
2771 auto tem3 = DecimalToPercentHexString((i >> 16)) + DecimalToPercentHexString((i >> 8) & 0xFF) +
2772 DecimalToPercentHexString(i & 0xFF);
2773 // std::cout<<"beigin"<<tem3.c_str()<<std::endl;
2774 //%xx%xx%xx,first char 1110 XXXX - 1110 1111; 0xE0-0xEF
2775 // second char 10XX XXXX - 1011 1111, third char 10XX XXXX - 1011 1111;0x80-0xBF
2776 if (((i & 0xFF0000) >= 0xE00000 && (i & 0xFF0000) <= 0xEF0000) &&
2777 ((i & 0x00FF00) >= 0x008000 && (i & 0x00FF00) <= 0x00BF00) &&
2778 ((i & 0x0000FF) >= 0x000080 && (i & 0x0000FF) <= 0x0000BF)) {
2779 // 3 legnth
2780 ASSERT_EQ(OHOS::Url::DecodePercentEncoding(tem3).length(), 3);
2781
2782 } else {
2783 // 3 legnth
2784 ASSERT_NE(OHOS::Url::DecodePercentEncoding(tem3).length(), 3);
2785 }
2786 }
2787 }
2788
2789 // 1111 0XXX xxxx xxxx xxxx xxxx xxxx xxxx
2790 // 0xF0-0xF7,
2791 HWTEST_F(NativeEngineTest, testUrlHelper011, testing::ext::TestSize.Level1)
2792 {
2793 // pick up part,for 0x00-0xFF to large, will run to long time
2794 int last[] = { 0x00, 0x1F, 0x20, 0x2F, 0x7F, 0x80, 0x81, 0xBF, 0xFF };
2795 for (int i = 0xF00000; i <= 0xFF0000; i++) {
2796 auto tem = DecimalToPercentHexString((i >> 16)) + DecimalToPercentHexString((i >> 8) & 0xFF) +
2797 DecimalToPercentHexString(i & 0xFF);
2798 for (int k1 = 0; k1 <= sizeof(last) / sizeof(int); k1++) {
2799 auto tem4 = tem + DecimalToPercentHexString(last[k1]);
2800 //%xx%xx%xx%xx,first char 1111 0XXX - 1111 0111;0xF0-0xF7
2801 // second char 10XX XXXX - 1011 1111;0x80-0xBF
2802 // third char 10XX XXXX - 1011 1111;0x80-0xBF
2803 // fourth char 10XX XXXX - 1011 1111;0x80-0xBF
2804 if (((i & 0xFF0000) >= 0xF00000 && (i & 0xFF0000) <= 0xF70000) &&
2805 ((i & 0x00FF00) >= 0x008000 && (i & 0x00FF00) <= 0x00BF00) &&
2806 ((i & 0x0000FF) >= 0x000080 && (i & 0x0000FF) <= 0x0000BF) && (last[k1] >= 0x80 && last[k1] <= 0xBF)) {
2807 ASSERT_EQ(OHOS::Url::DecodePercentEncoding(tem4).length(), 4);
2808 } else {
2809 ASSERT_NE(OHOS::Url::DecodePercentEncoding(tem4).length(), 4);
2810 }
2811 }
2812 }
2813 }
2814
2815 HWTEST_F(NativeEngineTest, testUrlHostname004, testing::ext::TestSize.Level0)
2816 {
2817 OHOS::Url::URL url("http://example.com/path");
2818 std::string output;
2819 napi_env env = (napi_env)engine_;
2820 DealNapiStrValue(env, url.GetHostname(env), output);
2821 ASSERT_STREQ(output.c_str(), "example.com");
2822 url.SetHostname("newhost.org");
2823 DealNapiStrValue(env, url.GetHostname(env), output);
2824 ASSERT_STREQ(output.c_str(), "newhost.org");
2825 }
2826
2827 HWTEST_F(NativeEngineTest, testUrlHostname005, testing::ext::TestSize.Level0)
2828 {
2829 OHOS::Url::URL url("http://[2001:db8::1]/file");
2830 std::string output;
2831 napi_env env = (napi_env)engine_;
2832 DealNapiStrValue(env, url.GetHostname(env), output);
2833 ASSERT_STREQ(output.c_str(), "[2001:db8::1]");
2834 url.SetHostname("new.ipv6.host");
2835 DealNapiStrValue(env, url.GetHostname(env), output);
2836 ASSERT_STREQ(output.c_str(), "new.ipv6.host");
2837 }
2838
2839 HWTEST_F(NativeEngineTest, testUrlSearch004, testing::ext::TestSize.Level0)
2840 {
2841 OHOS::Url::URL url("http://example.com?q=test");
2842 std::string output;
2843 napi_env env = (napi_env)engine_;
2844 DealNapiStrValue(env, url.GetSearch(env), output);
2845 ASSERT_STREQ(output.c_str(), "?q=test");
2846 url.SetSearch("filter=active");
2847 DealNapiStrValue(env, url.GetSearch(env), output);
2848 ASSERT_STREQ(output.c_str(), "?filter=active");
2849 }
2850
2851 HWTEST_F(NativeEngineTest, testUrlSearch005, testing::ext::TestSize.Level0)
2852 {
2853 OHOS::Url::URL url("https://example.com/#section");
2854 std::string output;
2855 napi_env env = (napi_env)engine_;
2856 DealNapiStrValue(env, url.GetSearch(env), output);
2857 ASSERT_STREQ(output.c_str(), "");
2858 url.SetSearch("debug=1&cache=false");
2859 DealNapiStrValue(env, url.GetSearch(env), output);
2860 ASSERT_STREQ(output.c_str(), "?debug=1&cache=false");
2861 }
2862
2863 HWTEST_F(NativeEngineTest, testUrlUsername004, testing::ext::TestSize.Level0)
2864 {
2865 OHOS::Url::URL url("ftp://john@example.com/file");
2866 std::string output;
2867 napi_env env = (napi_env)engine_;
2868 DealNapiStrValue(env, url.GetUsername(env), output);
2869 ASSERT_STREQ(output.c_str(), "john");
2870 url.SetUsername("admin_user");
2871 DealNapiStrValue(env, url.GetUsername(env), output);
2872 ASSERT_STREQ(output.c_str(), "admin_user");
2873 }
2874
2875 HWTEST_F(NativeEngineTest, testUrlUsername005, testing::ext::TestSize.Level0)
2876 {
2877 OHOS::Url::URL url("https://example.com/resource");
2878 std::string output;
2879 napi_env env = (napi_env)engine_;
2880 DealNapiStrValue(env, url.GetUsername(env), output);
2881 ASSERT_STREQ(output.c_str(), "");
2882 url.SetUsername("special#user@name");
2883 DealNapiStrValue(env, url.GetUsername(env), output);
2884 ASSERT_STREQ(output.c_str(), "special%23user%40name");
2885 }
2886
2887 HWTEST_F(NativeEngineTest, testUrlPassword004, testing::ext::TestSize.Level0)
2888 {
2889 OHOS::Url::URL url("https://user:pass123@example.com");
2890 std::string output;
2891 napi_env env = (napi_env)engine_;
2892 DealNapiStrValue(env, url.GetPassword(env), output);
2893 ASSERT_STREQ(output.c_str(), "pass123");
2894 url.SetPassword("new@secure!pwd");
2895 DealNapiStrValue(env, url.GetPassword(env), output);
2896 ASSERT_STREQ(output.c_str(), "new%40secure!pwd");
2897 }
2898
2899 HWTEST_F(NativeEngineTest, testUrlPassword005, testing::ext::TestSize.Level0)
2900 {
2901 OHOS::Url::URL url("http://example.com");
2902 std::string output;
2903 napi_env env = (napi_env)engine_;
2904 DealNapiStrValue(env, url.GetPassword(env), output);
2905 ASSERT_STREQ(output.c_str(), "");
2906 url.SetPassword("pwd:with:colons");
2907 DealNapiStrValue(env, url.GetPassword(env), output);
2908 ASSERT_STREQ(output.c_str(), "pwd%3Awith%3Acolons");
2909 }
2910
2911 HWTEST_F(NativeEngineTest, testUrlHost004, testing::ext::TestSize.Level0)
2912 {
2913 OHOS::Url::URL url("http://localhost:8080");
2914 std::string output;
2915 napi_env env = (napi_env)engine_;
2916 DealNapiStrValue(env, url.GetHost(env), output);
2917 ASSERT_STREQ(output.c_str(), "localhost:8080");
2918 url.SetHost("newdomain.com:9090");
2919 DealNapiStrValue(env, url.GetHost(env), output);
2920 ASSERT_STREQ(output.c_str(), "newdomain.com:9090");
2921 }
2922
2923 HWTEST_F(NativeEngineTest, testUrlHost005, testing::ext::TestSize.Level0)
2924 {
2925 OHOS::Url::URL url("https://[2001:db8:1::2]");
2926 std::string output;
2927 napi_env env = (napi_env)engine_;
2928 DealNapiStrValue(env, url.GetHost(env), output);
2929 ASSERT_STREQ(output.c_str(), "[2001:db8:1::2]");
2930 url.SetHost("xn--fiqs8s:443");
2931 DealNapiStrValue(env, url.GetHost(env), output);
2932 ASSERT_STREQ(output.c_str(), "xn--fiqs8s:443");
2933 }
2934
2935 HWTEST_F(NativeEngineTest, testUrlFragment001, testing::ext::TestSize.Level0)
2936 {
2937 OHOS::Url::URL url("http://example.com#section1");
2938 std::string output;
2939 napi_env env = (napi_env)engine_;
2940 DealNapiStrValue(env, url.GetFragment(env), output);
2941 ASSERT_STREQ(output.c_str(), "#section1");
2942 url.SetFragment("new_section");
2943 DealNapiStrValue(env, url.GetFragment(env), output);
2944 ASSERT_STREQ(output.c_str(), "#new_section");
2945 }
2946
2947 HWTEST_F(NativeEngineTest, testUrlFragment002, testing::ext::TestSize.Level0)
2948 {
2949 OHOS::Url::URL url("https://example.com");
2950 std::string output;
2951 napi_env env = (napi_env)engine_;
2952 DealNapiStrValue(env, url.GetFragment(env), output);
2953 ASSERT_STREQ(output.c_str(), "");
2954 url.SetFragment("中文锚点");
2955 DealNapiStrValue(env, url.GetFragment(env), output);
2956 ASSERT_TRUE(output.find("%E4%B8%AD%E6%96%87%E9%94%9A%E7%82%B9") != std::string::npos);
2957 }
2958
2959 HWTEST_F(NativeEngineTest, testUrlScheme001, testing::ext::TestSize.Level0)
2960 {
2961 OHOS::Url::URL url("https://secure.site");
2962 std::string output;
2963 napi_env env = (napi_env)engine_;
2964 DealNapiStrValue(env, url.GetScheme(env), output);
2965 ASSERT_STREQ(output.c_str(), "https:");
2966 url.SetScheme("ftp");
2967 DealNapiStrValue(env, url.GetScheme(env), output);
2968 ASSERT_STREQ(output.c_str(), "https:");
2969 }
2970
2971 HWTEST_F(NativeEngineTest, testUrlScheme002, testing::ext::TestSize.Level0)
2972 {
2973 OHOS::Url::URL url("custom-scheme://resource");
2974 std::string output;
2975 napi_env env = (napi_env)engine_;
2976 DealNapiStrValue(env, url.GetScheme(env), output);
2977 ASSERT_STREQ(output.c_str(), "custom-scheme:");
2978 url.SetScheme("new-protocol");
2979 DealNapiStrValue(env, url.GetScheme(env), output);
2980 ASSERT_STREQ(output.c_str(), "new-protocol");
2981 }
2982
2983 HWTEST_F(NativeEngineTest, testUrlPath001, testing::ext::TestSize.Level0)
2984 {
2985 OHOS::Url::URL url("http://example.com/old/path");
2986 std::string output;
2987 napi_env env = (napi_env)engine_;
2988 DealNapiStrValue(env, url.GetPath(env), output);
2989 ASSERT_STREQ(output.c_str(), "/old/path");
2990 url.SetPath("/new/resource");
2991 DealNapiStrValue(env, url.GetPath(env), output);
2992 ASSERT_STREQ(output.c_str(), "/new/resource");
2993 }
2994
2995 HWTEST_F(NativeEngineTest, testUrlPath002, testing::ext::TestSize.Level0)
2996 {
2997 OHOS::Url::URL url("file:///dir/file.txt");
2998 std::string output;
2999 napi_env env = (napi_env)engine_;
3000 DealNapiStrValue(env, url.GetPath(env), output);
3001 ASSERT_STREQ(output.c_str(), "/dir/file.txt");
3002 url.SetPath("/new/dir/../data.json");
3003 DealNapiStrValue(env, url.GetPath(env), output);
3004 ASSERT_STREQ(output.c_str(), "/new/data.json");
3005 }
3006
3007 HWTEST_F(NativeEngineTest, testUrlEmptyInput001, testing::ext::TestSize.Level0)
3008 {
3009 OHOS::Url::URL url("");
3010 std::string output;
3011 napi_env env = (napi_env)engine_;
3012 url.SetScheme("data");
3013 DealNapiStrValue(env, url.GetScheme(env), output);
3014 ASSERT_STREQ(output.c_str(), "data");
3015 DealNapiStrValue(env, url.GetHostname(env), output);
3016 ASSERT_STREQ(output.c_str(), "");
3017 }
3018
3019 HWTEST_F(NativeEngineTest, testUrlSpecialChars001, testing::ext::TestSize.Level0)
3020 {
3021 OHOS::Url::URL url("http://user:pwd@host.com");
3022 std::string output;
3023 napi_env env = (napi_env)engine_;
3024
3025 url.SetUsername("user:name@with");
3026 DealNapiStrValue(env, url.GetUsername(env), output);
3027 ASSERT_STREQ(output.c_str(), "user%3Aname%40with");
3028
3029 url.SetPassword("p@ss:w0rd#123");
3030 DealNapiStrValue(env, url.GetPassword(env), output);
3031 ASSERT_STREQ(output.c_str(), "p%40ss%3Aw0rd%23123");
3032 }
3033
3034 HWTEST_F(NativeEngineTest, testUrlFullUpdate001, testing::ext::TestSize.Level0)
3035 {
3036 OHOS::Url::URL url("http://old.com/oldpath?q=1#old");
3037 std::string output;
3038 napi_env env = (napi_env)engine_;
3039
3040 url.SetHostname("newhost.org");
3041 DealNapiStrValue(env, url.GetHostname(env), output);
3042 ASSERT_STREQ(output.c_str(), "newhost.org");
3043
3044 url.SetPath("/new/path/resource");
3045 DealNapiStrValue(env, url.GetPath(env), output);
3046 ASSERT_STREQ(output.c_str(), "/new/path/resource");
3047
3048 url.SetSearch("debug=true");
3049 DealNapiStrValue(env, url.GetSearch(env), output);
3050 ASSERT_STREQ(output.c_str(), "?debug=true");
3051
3052 url.SetFragment("new-section");
3053 DealNapiStrValue(env, url.GetFragment(env), output);
3054 ASSERT_STREQ(output.c_str(), "#new-section");
3055 }
3056
3057 HWTEST_F(NativeEngineTest, testUrlParamsAppend001, testing::ext::TestSize.Level0)
3058 {
3059 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3060 napi_env env = (napi_env)engine_;
3061 napi_value key = StrToNapiValue(env, "username");
3062 napi_value val = StrToNapiValue(env, "john_doe");
3063 params.Append(env, key, val);
3064
3065 napi_value query = StrToNapiValue(env, "username");
3066 std::string output;
3067 DealNapiStrValue(env, params.Get(env, query), output);
3068 ASSERT_STREQ(output.c_str(), "john_doe");
3069 }
3070
3071 HWTEST_F(NativeEngineTest, testUrlParamsDelete001, testing::ext::TestSize.Level0)
3072 {
3073 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3074 napi_env env = (napi_env)engine_;
3075 napi_value key = StrToNapiValue(env, "token");
3076 napi_value val = StrToNapiValue(env, "abc123");
3077 params.Append(env, key, val);
3078 bool value = false;
3079 napi_get_value_bool(env, params.IsHas(env, key), &value);
3080 ASSERT_TRUE(value);
3081 params.Delete(env, key);
3082 napi_get_value_bool(env, params.IsHas(env, key), &value);
3083 ASSERT_FALSE(value);
3084 }
3085
3086 HWTEST_F(NativeEngineTest, testUrlParamsGetAll001, testing::ext::TestSize.Level0)
3087 {
3088 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3089 napi_env env = (napi_env)engine_;
3090 napi_value key = StrToNapiValue(env, "color");
3091
3092 params.Append(env, key, StrToNapiValue(env, "red"));
3093 params.Append(env, key, StrToNapiValue(env, "green"));
3094 params.Append(env, key, StrToNapiValue(env, "blue"));
3095
3096 std::string output;
3097 DealNapiStrValue(env, params.Get(env, key), output);
3098 ASSERT_STREQ(output.c_str(), "red");
3099 }
3100
3101 HWTEST_F(NativeEngineTest, testUrlParamsSet001, testing::ext::TestSize.Level0)
3102 {
3103 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3104 napi_env env = (napi_env)engine_;
3105 napi_value key = StrToNapiValue(env, "page");
3106
3107 params.Append(env, key, StrToNapiValue(env, "1"));
3108 params.Set(env, key, StrToNapiValue(env, "2"));
3109
3110 std::string output;
3111 DealNapiStrValue(env, params.Get(env, key), output);
3112 ASSERT_STREQ(output.c_str(), "2");
3113 }
3114
3115 HWTEST_F(NativeEngineTest, testUrlParamsSort001, testing::ext::TestSize.Level0)
3116 {
3117 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3118 napi_env env = (napi_env)engine_;
3119
3120 params.Append(env, StrToNapiValue(env, "b"), StrToNapiValue(env, "2"));
3121 params.Append(env, StrToNapiValue(env, "a"), StrToNapiValue(env, "1"));
3122 params.Append(env, StrToNapiValue(env, "c"), StrToNapiValue(env, "3"));
3123 params.Sort();
3124
3125 std::string output;
3126 DealNapiStrValue(env, params.IterByKeys(env), output);
3127 ASSERT_STREQ(output.c_str(), "");
3128 }
3129
3130 HWTEST_F(NativeEngineTest, testUrlParamsIterByKeys001, testing::ext::TestSize.Level0)
3131 {
3132 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3133 napi_env env = (napi_env)engine_;
3134
3135 params.Append(env, StrToNapiValue(env, "first"), StrToNapiValue(env, "1"));
3136 params.Append(env, StrToNapiValue(env, "second"), StrToNapiValue(env, "2"));
3137
3138 std::string output;
3139 DealNapiStrValue(env, params.IterByKeys(env), output);
3140 ASSERT_STREQ(output.c_str(), "");
3141 }
3142
3143 HWTEST_F(NativeEngineTest, testUrlParamsIterByValues001, testing::ext::TestSize.Level0)
3144 {
3145 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3146 napi_env env = (napi_env)engine_;
3147
3148 params.Append(env, StrToNapiValue(env, "x"), StrToNapiValue(env, "10"));
3149 params.Append(env, StrToNapiValue(env, "y"), StrToNapiValue(env, "20"));
3150
3151 std::string output;
3152 DealNapiStrValue(env, params.IterByValues(env), output);
3153 ASSERT_STREQ(output.c_str(), "");
3154 }
3155
3156 HWTEST_F(NativeEngineTest, testUrlParamsEmpty001, testing::ext::TestSize.Level0)
3157 {
3158 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3159 napi_env env = (napi_env)engine_;
3160 napi_value key = StrToNapiValue(env, "empty");
3161
3162 bool value = false;
3163 napi_get_value_bool(env, params.IsHas(env, key), &value);
3164 ASSERT_FALSE(value);
3165
3166 std::string output;
3167 DealNapiStrValue(env, params.Get(env, key), output);
3168 ASSERT_STREQ(output.c_str(), "");
3169
3170 DealNapiStrValue(env, params.GetAll(env, key), output);
3171 ASSERT_STREQ(output.c_str(), "");
3172 }
3173
3174 HWTEST_F(NativeEngineTest, testUrlParamsSpecialChars001, testing::ext::TestSize.Level0)
3175 {
3176 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3177 napi_env env = (napi_env)engine_;
3178 napi_value key = StrToNapiValue(env, "query");
3179 napi_value value = StrToNapiValue(env, "a=b&c=d");
3180
3181 params.Append(env, key, value);
3182
3183 std::string output;
3184 DealNapiStrValue(env, params.Get(env, key), output);
3185 ASSERT_STREQ(output.c_str(), "a=b&c=d");
3186
3187 DealNapiStrValue(env, params.IterByValues(env), output);
3188 ASSERT_STREQ(output.c_str(), "a=b&c=d");
3189 }
3190
3191 HWTEST_F(NativeEngineTest, testUrlParamsParse001, testing::ext::TestSize.Level0)
3192 {
3193 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3194 napi_env env = (napi_env)engine_;
3195 std::string input1 = "key1";
3196 std::string input2 = "value1";
3197 std::string input3 = "key2";
3198 std::string input4 = "value2";
3199 std::vector<std::string> vec;
3200 vec.push_back(input1);
3201 vec.push_back(input2);
3202 vec.push_back(input3);
3203 vec.push_back(input4);
3204 params.SetArray(env, vec);
3205 std::string output;
3206 DealNapiStrValue(env, params.Get(env, StrToNapiValue(env, "key1")), output);
3207 ASSERT_STREQ(output.c_str(), "value1");
3208
3209 DealNapiStrValue(env, params.Get(env, StrToNapiValue(env, "key2")), output);
3210 ASSERT_STREQ(output.c_str(), "value2");
3211
3212 bool value = false;
3213 napi_get_value_bool(env, params.IsHas(env, StrToNapiValue(env, "key1")), &value);
3214 ASSERT_TRUE(value);
3215 }
3216
3217 HWTEST_F(NativeEngineTest, testUrlParamsDelete002, testing::ext::TestSize.Level0)
3218 {
3219 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3220 napi_env env = (napi_env)engine_;
3221 napi_value key = StrToNapiValue(env, "nonexistent");
3222
3223 params.Delete(env, key);
3224 bool value = false;
3225 napi_get_value_bool(env, params.IsHas(env, key), &value);
3226 ASSERT_FALSE(value);
3227 }
3228
3229 HWTEST_F(NativeEngineTest, testUrlParamsGetAll002, testing::ext::TestSize.Level0)
3230 {
3231 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3232 napi_env env = (napi_env)engine_;
3233 napi_value key = StrToNapiValue(env, "lang");
3234
3235 params.Append(env, key, StrToNapiValue(env, "en"));
3236 params.Append(env, key, StrToNapiValue(env, "zh"));
3237 params.Append(env, key, StrToNapiValue(env, "fr"));
3238
3239 std::string output;
3240 DealNapiStrValue(env, params.GetAll(env, key), output);
3241 ASSERT_STREQ(output.c_str(), "");
3242
3243 params.Set(env, key, StrToNapiValue(env, "jp"));
3244 DealNapiStrValue(env, params.GetAll(env, key), output);
3245 ASSERT_STREQ(output.c_str(), "");
3246 }
3247
3248 HWTEST_F(NativeEngineTest, testUrlParamsEmptyStrings001, testing::ext::TestSize.Level0)
3249 {
3250 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3251 napi_env env = (napi_env)engine_;
3252 napi_value emptyKey = StrToNapiValue(env, "");
3253 napi_value emptyVal = StrToNapiValue(env, "");
3254
3255 params.Append(env, emptyKey, emptyVal);
3256 bool value = false;
3257 napi_get_value_bool(env, params.IsHas(env, emptyKey), &value);
3258 ASSERT_TRUE(value);
3259
3260 std::string output;
3261 DealNapiStrValue(env, params.Get(env, emptyKey), output);
3262 ASSERT_STREQ(output.c_str(), "");
3263
3264 DealNapiStrValue(env, params.IterByKeys(env), output);
3265 ASSERT_STREQ(output.c_str(), "");
3266 }
3267
3268 HWTEST_F(NativeEngineTest, testUrlParamsOverride001, testing::ext::TestSize.Level0)
3269 {
3270 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3271 napi_env env = (napi_env)engine_;
3272 napi_value key = StrToNapiValue(env, "version");
3273
3274 params.Append(env, key, StrToNapiValue(env, "1.0"));
3275 params.Append(env, key, StrToNapiValue(env, "2.0"));
3276 params.Set(env, key, StrToNapiValue(env, "3.0"));
3277
3278 std::string output;
3279 DealNapiStrValue(env, params.Get(env, key), output);
3280 ASSERT_STREQ(output.c_str(), "3.0");
3281
3282 DealNapiStrValue(env, params.GetAll(env, key), output);
3283 ASSERT_STREQ(output.c_str(), "3.0");
3284 }
3285
3286 HWTEST_F(NativeEngineTest, testUrlParamsSort002, testing::ext::TestSize.Level0)
3287 {
3288 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3289 napi_env env = (napi_env)engine_;
3290
3291 params.Append(env, StrToNapiValue(env, "zebra"), StrToNapiValue(env, "animal"));
3292 params.Append(env, StrToNapiValue(env, "apple"), StrToNapiValue(env, "fruit"));
3293 params.Append(env, StrToNapiValue(env, "book"), StrToNapiValue(env, "object"));
3294
3295 params.Sort();
3296
3297 std::string output;
3298 DealNapiStrValue(env, params.IterByKeys(env), output);
3299 ASSERT_STREQ(output.c_str(), "");
3300
3301 DealNapiStrValue(env, params.IterByValues(env), output);
3302 ASSERT_STREQ(output.c_str(), "");
3303 }
3304
3305 HWTEST_F(NativeEngineTest, testUrlParamsUnicode001, testing::ext::TestSize.Level0)
3306 {
3307 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3308 napi_env env = (napi_env)engine_;
3309 napi_value key = StrToNapiValue(env, "城市");
3310 napi_value value = StrToNapiValue(env, "北京市");
3311
3312 params.Append(env, key, value);
3313
3314 std::string output;
3315 bool value1 = false;
3316 napi_get_value_bool(env, params.IsHas(env, key), &value1);
3317 ASSERT_TRUE(value1);
3318
3319 DealNapiStrValue(env, params.Get(env, key), output);
3320 ASSERT_STREQ(output.c_str(), "北京市");
3321
3322 DealNapiStrValue(env, params.IterByKeys(env), output);
3323 ASSERT_STREQ(output.c_str(), "北京市");
3324 }
3325
3326 HWTEST_F(NativeEngineTest, testUrlParamsDelete003, testing::ext::TestSize.Level0)
3327 {
3328 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3329 napi_env env = (napi_env)engine_;
3330 std::string input1 = "product";
3331 std::string input2 = "phone";
3332 std::string input3 = "product";
3333 std::string input4 = "laptop";
3334 std::string input5 = "product";
3335 std::string input6 = "tablet";
3336 std::vector<std::string> vec;
3337 vec.push_back(input1);
3338 vec.push_back(input2);
3339 vec.push_back(input3);
3340 vec.push_back(input4);
3341 vec.push_back(input5);
3342 vec.push_back(input6);
3343 params.SetArray(env, vec);
3344 napi_value key = StrToNapiValue(env, "product");
3345
3346 params.Delete(env, key);
3347
3348 std::string output;
3349 DealNapiStrValue(env, params.GetAll(env, key), output);
3350 ASSERT_STREQ(output.c_str(), "");
3351 }
3352
3353 HWTEST_F(NativeEngineTest, testUrlParamsParse002, testing::ext::TestSize.Level0)
3354 {
3355 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3356 napi_env env = (napi_env)engine_;
3357 std::string input1 = "key1";
3358 std::string input2 = "1";
3359 std::string input3 = "two";
3360 std::string input4 = "laptop";
3361 std::string input5 = "key1";
3362 std::string input6 = "2";
3363 std::vector<std::string> vec;
3364 vec.push_back(input1);
3365 vec.push_back(input2);
3366 vec.push_back(input3);
3367 vec.push_back(input4);
3368 vec.push_back(input5);
3369 vec.push_back(input6);
3370 params.SetArray(env, vec);
3371 napi_value key1 = StrToNapiValue(env, "key1");
3372
3373 std::string output;
3374 DealNapiStrValue(env, params.Get(env, key1), output);
3375 ASSERT_STREQ(output.c_str(), "1");
3376
3377 DealNapiStrValue(env, params.GetAll(env, key1), output);
3378 ASSERT_STREQ(output.c_str(), "1");
3379
3380 DealNapiStrValue(env, params.IterByKeys(env), output);
3381 ASSERT_STREQ(output.c_str(), "1");
3382 }
3383
3384 HWTEST_F(NativeEngineTest, testUrlParamsSet002, testing::ext::TestSize.Level0)
3385 {
3386 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3387 napi_env env = (napi_env)engine_;
3388 napi_value key = StrToNapiValue(env, "new_key");
3389
3390 bool value = false;
3391 napi_get_value_bool(env, params.IsHas(env, key), &value);
3392 ASSERT_FALSE(value);
3393 params.Set(env, key, StrToNapiValue(env, "new_value"));
3394 napi_get_value_bool(env, params.IsHas(env, key), &value);
3395 ASSERT_TRUE(value);
3396
3397 std::string output;
3398 DealNapiStrValue(env, params.Get(env, key), output);
3399 ASSERT_STREQ(output.c_str(), "new_value");
3400 }
3401
3402 HWTEST_F(NativeEngineTest, testUrlParamsComprehensive001, testing::ext::TestSize.Level0)
3403 {
3404 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3405 napi_env env = (napi_env)engine_;
3406
3407 napi_value keyA = StrToNapiValue(env, "a");
3408 params.Append(env, keyA, StrToNapiValue(env, "1"));
3409 params.Append(env, keyA, StrToNapiValue(env, "2"));
3410
3411 napi_value keyB = StrToNapiValue(env, "b");
3412 params.Set(env, keyB, StrToNapiValue(env, "3"));
3413
3414 bool value = false;
3415 napi_get_value_bool(env, params.IsHas(env, keyA), &value);
3416 ASSERT_TRUE(value);
3417 napi_get_value_bool(env, params.IsHas(env, keyB), &value);
3418 ASSERT_TRUE(value);
3419
3420 std::string output;
3421 DealNapiStrValue(env, params.GetAll(env, keyA), output);
3422 ASSERT_STREQ(output.c_str(), "");
3423
3424 DealNapiStrValue(env, params.IterByKeys(env), output);
3425 ASSERT_STREQ(output.c_str(), "");
3426
3427 DealNapiStrValue(env, params.IterByValues(env), output);
3428 ASSERT_STREQ(output.c_str(), "");
3429
3430 params.Delete(env, keyA);
3431 napi_get_value_bool(env, params.IsHas(env, keyA), &value);
3432 ASSERT_FALSE(value);
3433 napi_get_value_bool(env, params.IsHas(env, keyB), &value);
3434 ASSERT_TRUE(value);
3435
3436 params.Append(env, StrToNapiValue(env, "c"), StrToNapiValue(env, "4"));
3437 params.Append(env, StrToNapiValue(env, "a"), StrToNapiValue(env, "5"));
3438 params.Sort();
3439
3440 DealNapiStrValue(env, params.IterByKeys(env), output);
3441 ASSERT_STREQ(output.c_str(), "");
3442 }
3443
3444 HWTEST_F(NativeEngineTest, testUrlModule009, testing::ext::TestSize.Level0)
3445 {
3446 napi_env env = (napi_env)engine_;
3447 napi_value exports = nullptr;
3448 napi_create_object(env, &exports);
3449 OHOS::Url::Init(env, exports);
3450 napi_value urlClass = nullptr;
3451 napi_value constructorArgs[1] = { 0 };
3452 std::string input = "http://username:password@www.testut.com:99/path/path?query#fagment";
3453 napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
3454 napi_get_named_property(env, exports, "Url", &urlClass);
3455 napi_value instance = nullptr;
3456 napi_new_instance(env, urlClass, 1, constructorArgs, &instance);
3457
3458 std::string input1 = "http11:";
3459 napi_value newValue = nullptr;
3460 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3461 napi_set_named_property(env, instance, "protocol", newValue);
3462 napi_value urlProperty = nullptr;
3463 napi_get_named_property(env, instance, "protocol", &urlProperty);
3464 std::string res = GetStringUtf8(env, urlProperty);
3465 ASSERT_STREQ(res.c_str(), "http:");
3466
3467 input1 = "/pathda/fanah";
3468 newValue = nullptr;
3469 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3470 napi_set_named_property(env, instance, "pathname", newValue);
3471 urlProperty = nullptr;
3472 napi_get_named_property(env, instance, "pathname", &urlProperty);
3473 res = GetStringUtf8(env, urlProperty);
3474 ASSERT_STREQ(res.c_str(), "/pathda/fanah");
3475
3476 input1 = "168";
3477 newValue = nullptr;
3478 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3479 napi_set_named_property(env, instance, "port", newValue);
3480 urlProperty = nullptr;
3481 napi_get_named_property(env, instance, "port", &urlProperty);
3482 res = GetStringUtf8(env, urlProperty);
3483 ASSERT_STREQ(res.c_str(), "168");
3484
3485 napi_value constructorArgs1[1] = { 0 };
3486 napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs1[0]);
3487 napi_value hrefFn = nullptr;
3488 napi_get_named_property(env, instance, "href", &hrefFn);
3489 napi_value result1 = nullptr;
3490 napi_call_function(env, instance, hrefFn, 1, constructorArgs1, &result1);
3491
3492 urlProperty = nullptr;
3493 napi_get_named_property(env, instance, "port", &urlProperty);
3494 res = GetStringUtf8(env, urlProperty);
3495 ASSERT_STREQ(res.c_str(), "99");
3496 }
3497
3498 HWTEST_F(NativeEngineTest, testUrlModule010, testing::ext::TestSize.Level0)
3499 {
3500 napi_env env = (napi_env)engine_;
3501 napi_value exports = nullptr;
3502 napi_create_object(env, &exports);
3503 OHOS::Url::Init(env, exports);
3504 napi_value urlClass = nullptr;
3505 napi_value constructorArgs[1] = { 0 };
3506 std::string input = "http://username:password@www.test123.com:99/path/path?query#fagment";
3507 napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
3508 napi_get_named_property(env, exports, "Url", &urlClass);
3509 napi_value instance = nullptr;
3510 napi_new_instance(env, urlClass, 1, constructorArgs, &instance);
3511
3512 std::string input1 = "www.example123.com";
3513 napi_value newValue = nullptr;
3514 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3515 napi_set_named_property(env, instance, "hostname", newValue);
3516 napi_value urlProperty = nullptr;
3517 napi_get_named_property(env, instance, "hostname", &urlProperty);
3518 std::string res = GetStringUtf8(env, urlProperty);
3519 ASSERT_STREQ(res.c_str(), "www.example123.com");
3520
3521 input1 = "query1=banf";
3522 newValue = nullptr;
3523 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3524 napi_set_named_property(env, instance, "search", newValue);
3525 urlProperty = nullptr;
3526 napi_get_named_property(env, instance, "search", &urlProperty);
3527 res = GetStringUtf8(env, urlProperty);
3528 ASSERT_STREQ(res.c_str(), "?query1=banf");
3529
3530 input1 = "asfee1s";
3531 newValue = nullptr;
3532 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3533 napi_set_named_property(env, instance, "username", newValue);
3534 urlProperty = nullptr;
3535 napi_get_named_property(env, instance, "username", &urlProperty);
3536 res = GetStringUtf8(env, urlProperty);
3537 ASSERT_STREQ(res.c_str(), "asfee1s");
3538 }
3539
3540 HWTEST_F(NativeEngineTest, testUrlModule011, testing::ext::TestSize.Level0)
3541 {
3542 napi_env env = (napi_env)engine_;
3543 napi_value exports = nullptr;
3544 napi_create_object(env, &exports);
3545 OHOS::Url::Init(env, exports);
3546 napi_value urlClass = nullptr;
3547 napi_value constructorArgs[1] = { 0 };
3548 std::string input = "http://username:password@www.test776.com:155/path/path?query#fagment";
3549 napi_create_string_utf8(env, input.c_str(), input.size(), &constructorArgs[0]);
3550 napi_get_named_property(env, exports, "Url", &urlClass);
3551 napi_value instance = nullptr;
3552 napi_new_instance(env, urlClass, 1, constructorArgs, &instance);
3553
3554 std::string input1 = "pass123";
3555 napi_value newValue = nullptr;
3556 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3557 napi_set_named_property(env, instance, "password", newValue);
3558 napi_value urlProperty = nullptr;
3559 napi_get_named_property(env, instance, "password", &urlProperty);
3560 std::string res = GetStringUtf8(env, urlProperty);
3561 ASSERT_STREQ(res.c_str(), "pass123");
3562
3563 input1 = "www.test.com:117";
3564 newValue = nullptr;
3565 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3566 napi_set_named_property(env, instance, "host", newValue);
3567 urlProperty = nullptr;
3568 napi_get_named_property(env, instance, "host", &urlProperty);
3569 res = GetStringUtf8(env, urlProperty);
3570 ASSERT_STREQ(res.c_str(), "www.test.com:117");
3571
3572 input1 = "fagsafd";
3573 newValue = nullptr;
3574 napi_create_string_utf8(env, input1.c_str(), input1.size(), &newValue);
3575 napi_set_named_property(env, instance, "hash", newValue);
3576 urlProperty = nullptr;
3577 napi_get_named_property(env, instance, "hash", &urlProperty);
3578 res = GetStringUtf8(env, urlProperty);
3579 ASSERT_STREQ(res.c_str(), "#fagsafd");
3580 }
3581
3582 HWTEST_F(NativeEngineTest, testUrlFullUpdate002, testing::ext::TestSize.Level0)
3583 {
3584 OHOS::Url::URL url("http://test.com/newpath?q=1#old");
3585 std::string output;
3586 napi_env env = (napi_env)engine_;
3587
3588 url.SetHostname("newhost11.org");
3589 DealNapiStrValue(env, url.GetHostname(env), output);
3590 ASSERT_STREQ(output.c_str(), "newhost11.org");
3591
3592 url.SetPath("/new/path/resourceqq");
3593 DealNapiStrValue(env, url.GetPath(env), output);
3594 ASSERT_STREQ(output.c_str(), "/new/path/resourceqq");
3595
3596 url.SetSearch("kk=val1");
3597 DealNapiStrValue(env, url.GetSearch(env), output);
3598 ASSERT_STREQ(output.c_str(), "?kk=val1");
3599
3600 url.SetFragment("new-Fragment");
3601 DealNapiStrValue(env, url.GetFragment(env), output);
3602 ASSERT_STREQ(output.c_str(), "#new-Fragment");
3603 }
3604
3605 HWTEST_F(NativeEngineTest, testUrlParamsAppend002, testing::ext::TestSize.Level0)
3606 {
3607 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3608 napi_env env = (napi_env)engine_;
3609 napi_value key = StrToNapiValue(env, "kk1");
3610 napi_value val = StrToNapiValue(env, "valrr");
3611 params.Append(env, key, val);
3612
3613 napi_value query = StrToNapiValue(env, "kk1");
3614 std::string output;
3615 DealNapiStrValue(env, params.Get(env, query), output);
3616 ASSERT_STREQ(output.c_str(), "valrr");
3617 }
3618
3619 HWTEST_F(NativeEngineTest, testUrlParamsDelete004, testing::ext::TestSize.Level0)
3620 {
3621 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3622 napi_env env = (napi_env)engine_;
3623 napi_value key = StrToNapiValue(env, "token112");
3624 napi_value val = StrToNapiValue(env, "abc123");
3625 params.Append(env, key, val);
3626 bool value = false;
3627 napi_get_value_bool(env, params.IsHas(env, key), &value);
3628 ASSERT_TRUE(value);
3629 params.Delete(env, key);
3630 napi_get_value_bool(env, params.IsHas(env, key), &value);
3631 ASSERT_FALSE(value);
3632 }
3633
3634 HWTEST_F(NativeEngineTest, testUrlParamsGetAll003, testing::ext::TestSize.Level0)
3635 {
3636 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3637 napi_env env = (napi_env)engine_;
3638 napi_value key = StrToNapiValue(env, "strnumber");
3639
3640 params.Append(env, key, StrToNapiValue(env, "one"));
3641 params.Append(env, key, StrToNapiValue(env, "two"));
3642 params.Append(env, key, StrToNapiValue(env, "three"));
3643
3644 std::string output;
3645 DealNapiStrValue(env, params.Get(env, key), output);
3646 ASSERT_STREQ(output.c_str(), "one");
3647 }
3648
3649 HWTEST_F(NativeEngineTest, testUrlParamsSet003, testing::ext::TestSize.Level0)
3650 {
3651 OHOS::Url::URLSearchParams params = OHOS::Url::URLSearchParams();
3652 napi_env env = (napi_env)engine_;
3653 napi_value key = StrToNapiValue(env, "number");
3654
3655 params.Append(env, key, StrToNapiValue(env, "100"));
3656 params.Set(env, key, StrToNapiValue(env, "2000"));
3657
3658 std::string output;
3659 DealNapiStrValue(env, params.Get(env, key), output);
3660 ASSERT_STREQ(output.c_str(), "2000");
3661 }