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