summaryrefslogtreecommitdiff
path: root/cli/tests/unit/url_search_params_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/unit/url_search_params_test.ts')
-rw-r--r--cli/tests/unit/url_search_params_test.ts356
1 files changed, 0 insertions, 356 deletions
diff --git a/cli/tests/unit/url_search_params_test.ts b/cli/tests/unit/url_search_params_test.ts
deleted file mode 100644
index c547ef938..000000000
--- a/cli/tests/unit/url_search_params_test.ts
+++ /dev/null
@@ -1,356 +0,0 @@
-// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
-import { assert, assertEquals } from "./test_util.ts";
-
-Deno.test(function urlSearchParamsWithMultipleSpaces() {
- const init = { str: "this string has spaces in it" };
- const searchParams = new URLSearchParams(init).toString();
- assertEquals(searchParams, "str=this+string+has+spaces+in+it");
-});
-
-Deno.test(function urlSearchParamsWithExclamation() {
- const init = [
- ["str", "hello, world!"],
- ];
- const searchParams = new URLSearchParams(init).toString();
- assertEquals(searchParams, "str=hello%2C+world%21");
-});
-
-Deno.test(function urlSearchParamsWithQuotes() {
- const init = [
- ["str", "'hello world'"],
- ];
- const searchParams = new URLSearchParams(init).toString();
- assertEquals(searchParams, "str=%27hello+world%27");
-});
-
-Deno.test(function urlSearchParamsWithBracket() {
- const init = [
- ["str", "(hello world)"],
- ];
- const searchParams = new URLSearchParams(init).toString();
- assertEquals(searchParams, "str=%28hello+world%29");
-});
-
-Deno.test(function urlSearchParamsWithTilde() {
- const init = [
- ["str", "hello~world"],
- ];
- const searchParams = new URLSearchParams(init).toString();
- assertEquals(searchParams, "str=hello%7Eworld");
-});
-
-Deno.test(function urlSearchParamsInitString() {
- const init = "c=4&a=2&b=3&%C3%A1=1";
- const searchParams = new URLSearchParams(init);
- assert(
- init === searchParams.toString(),
- "The init query string does not match",
- );
-});
-
-Deno.test(function urlSearchParamsInitStringWithPlusCharacter() {
- let params = new URLSearchParams("q=a+b");
- assertEquals(params.toString(), "q=a+b");
- assertEquals(params.get("q"), "a b");
-
- params = new URLSearchParams("q=a+b+c");
- assertEquals(params.toString(), "q=a+b+c");
- assertEquals(params.get("q"), "a b c");
-});
-
-Deno.test(function urlSearchParamsInitStringWithMalformedParams() {
- // These test cases are copied from Web Platform Tests
- // https://github.com/web-platform-tests/wpt/blob/54c6d64/url/urlsearchparams-constructor.any.js#L60-L80
- let params = new URLSearchParams("id=0&value=%");
- assert(params != null, "constructor returned non-null value.");
- assert(params.has("id"), 'Search params object has name "id"');
- assert(params.has("value"), 'Search params object has name "value"');
- assertEquals(params.get("id"), "0");
- assertEquals(params.get("value"), "%");
-
- params = new URLSearchParams("b=%2sf%2a");
- assert(params != null, "constructor returned non-null value.");
- assert(params.has("b"), 'Search params object has name "b"');
- assertEquals(params.get("b"), "%2sf*");
-
- params = new URLSearchParams("b=%2%2af%2a");
- assert(params != null, "constructor returned non-null value.");
- assert(params.has("b"), 'Search params object has name "b"');
- assertEquals(params.get("b"), "%2*f*");
-
- params = new URLSearchParams("b=%%2a");
- assert(params != null, "constructor returned non-null value.");
- assert(params.has("b"), 'Search params object has name "b"');
- assertEquals(params.get("b"), "%*");
-});
-
-Deno.test(function urlSearchParamsInitIterable() {
- const init = [
- ["a", "54"],
- ["b", "true"],
- ];
- const searchParams = new URLSearchParams(init);
- assertEquals(searchParams.toString(), "a=54&b=true");
-});
-
-Deno.test(function urlSearchParamsInitRecord() {
- const init = { a: "54", b: "true" };
- const searchParams = new URLSearchParams(init);
- assertEquals(searchParams.toString(), "a=54&b=true");
-});
-
-Deno.test(function urlSearchParamsInit() {
- const params1 = new URLSearchParams("a=b");
- assertEquals(params1.toString(), "a=b");
- const params2 = new URLSearchParams(params1);
- assertEquals(params2.toString(), "a=b");
-});
-
-Deno.test(function urlSearchParamsAppendSuccess() {
- const searchParams = new URLSearchParams();
- searchParams.append("a", "true");
- assertEquals(searchParams.toString(), "a=true");
-});
-
-Deno.test(function urlSearchParamsDeleteSuccess() {
- const init = "a=54&b=true";
- const searchParams = new URLSearchParams(init);
- searchParams.delete("b");
- assertEquals(searchParams.toString(), "a=54");
-});
-
-Deno.test(function urlSearchParamsGetAllSuccess() {
- const init = "a=54&b=true&a=true";
- const searchParams = new URLSearchParams(init);
- assertEquals(searchParams.getAll("a"), ["54", "true"]);
- assertEquals(searchParams.getAll("b"), ["true"]);
- assertEquals(searchParams.getAll("c"), []);
-});
-
-Deno.test(function urlSearchParamsGetSuccess() {
- const init = "a=54&b=true&a=true";
- const searchParams = new URLSearchParams(init);
- assertEquals(searchParams.get("a"), "54");
- assertEquals(searchParams.get("b"), "true");
- assertEquals(searchParams.get("c"), null);
-});
-
-Deno.test(function urlSearchParamsHasSuccess() {
- const init = "a=54&b=true&a=true";
- const searchParams = new URLSearchParams(init);
- assert(searchParams.has("a"));
- assert(searchParams.has("b"));
- assert(!searchParams.has("c"));
-});
-
-Deno.test(function urlSearchParamsSetReplaceFirstAndRemoveOthers() {
- const init = "a=54&b=true&a=true";
- const searchParams = new URLSearchParams(init);
- searchParams.set("a", "false");
- assertEquals(searchParams.toString(), "a=false&b=true");
-});
-
-Deno.test(function urlSearchParamsSetAppendNew() {
- const init = "a=54&b=true&a=true";
- const searchParams = new URLSearchParams(init);
- searchParams.set("c", "foo");
- assertEquals(searchParams.toString(), "a=54&b=true&a=true&c=foo");
-});
-
-Deno.test(function urlSearchParamsSortSuccess() {
- const init = "c=4&a=2&b=3&a=1";
- const searchParams = new URLSearchParams(init);
- searchParams.sort();
- assertEquals(searchParams.toString(), "a=2&a=1&b=3&c=4");
-});
-
-Deno.test(function urlSearchParamsForEachSuccess() {
- const init = [
- ["a", "54"],
- ["b", "true"],
- ];
- const searchParams = new URLSearchParams(init);
- let callNum = 0;
- searchParams.forEach((value, key, parent) => {
- assertEquals(searchParams, parent);
- assertEquals(value, init[callNum][1]);
- assertEquals(key, init[callNum][0]);
- callNum++;
- });
- assertEquals(callNum, init.length);
-});
-
-Deno.test(function urlSearchParamsMissingName() {
- const init = "=4";
- const searchParams = new URLSearchParams(init);
- assertEquals(searchParams.get(""), "4");
- assertEquals(searchParams.toString(), "=4");
-});
-
-Deno.test(function urlSearchParamsMissingValue() {
- const init = "4=";
- const searchParams = new URLSearchParams(init);
- assertEquals(searchParams.get("4"), "");
- assertEquals(searchParams.toString(), "4=");
-});
-
-Deno.test(function urlSearchParamsMissingEqualSign() {
- const init = "4";
- const searchParams = new URLSearchParams(init);
- assertEquals(searchParams.get("4"), "");
- assertEquals(searchParams.toString(), "4=");
-});
-
-Deno.test(function urlSearchParamsMissingPair() {
- const init = "c=4&&a=54&";
- const searchParams = new URLSearchParams(init);
- assertEquals(searchParams.toString(), "c=4&a=54");
-});
-
-Deno.test(function urlSearchParamsForShortEncodedChar() {
- const init = { linefeed: "\n", tab: "\t" };
- const searchParams = new URLSearchParams(init);
- assertEquals(searchParams.toString(), "linefeed=%0A&tab=%09");
-});
-
-// If pair does not contain exactly two items, then throw a TypeError.
-// ref https://url.spec.whatwg.org/#interface-urlsearchparams
-Deno.test(function urlSearchParamsShouldThrowTypeError() {
- let hasThrown = 0;
-
- try {
- new URLSearchParams([["1"]]);
- hasThrown = 1;
- } catch (err) {
- if (err instanceof TypeError) {
- hasThrown = 2;
- } else {
- hasThrown = 3;
- }
- }
-
- assertEquals(hasThrown, 2);
-
- try {
- new URLSearchParams([["1", "2", "3"]]);
- hasThrown = 1;
- } catch (err) {
- if (err instanceof TypeError) {
- hasThrown = 2;
- } else {
- hasThrown = 3;
- }
- }
-
- assertEquals(hasThrown, 2);
-});
-
-Deno.test(function urlSearchParamsAppendArgumentsCheck() {
- const methodRequireOneParam = ["delete", "getAll", "get", "has", "forEach"];
-
- const methodRequireTwoParams = ["append", "set"];
-
- methodRequireOneParam
- .concat(methodRequireTwoParams)
- .forEach((method: string) => {
- const searchParams = new URLSearchParams();
- let hasThrown = 0;
- try {
- // deno-lint-ignore no-explicit-any
- (searchParams as any)[method]();
- hasThrown = 1;
- } catch (err) {
- if (err instanceof TypeError) {
- hasThrown = 2;
- } else {
- hasThrown = 3;
- }
- }
- assertEquals(hasThrown, 2);
- });
-
- methodRequireTwoParams.forEach((method: string) => {
- const searchParams = new URLSearchParams();
- let hasThrown = 0;
- try {
- // deno-lint-ignore no-explicit-any
- (searchParams as any)[method]("foo");
- hasThrown = 1;
- } catch (err) {
- if (err instanceof TypeError) {
- hasThrown = 2;
- } else {
- hasThrown = 3;
- }
- }
- assertEquals(hasThrown, 2);
- });
-});
-
-// ref: https://github.com/web-platform-tests/wpt/blob/master/url/urlsearchparams-delete.any.js
-Deno.test(function urlSearchParamsDeletingAppendedMultiple() {
- const params = new URLSearchParams();
- params.append("first", (1 as unknown) as string);
- assert(params.has("first"));
- assertEquals(params.get("first"), "1");
- params.delete("first");
- assertEquals(params.has("first"), false);
- params.append("first", (1 as unknown) as string);
- params.append("first", (10 as unknown) as string);
- params.delete("first");
- assertEquals(params.has("first"), false);
-});
-
-// ref: https://github.com/web-platform-tests/wpt/blob/master/url/urlsearchparams-constructor.any.js#L176-L182
-Deno.test(function urlSearchParamsCustomSymbolIterator() {
- const params = new URLSearchParams();
- params[Symbol.iterator] = function* (): IterableIterator<[string, string]> {
- yield ["a", "b"];
- };
- const params1 = new URLSearchParams((params as unknown) as string[][]);
- assertEquals(params1.get("a"), "b");
-});
-
-Deno.test(
- function urlSearchParamsCustomSymbolIteratorWithNonStringParams() {
- const params = {};
- // deno-lint-ignore no-explicit-any
- (params as any)[Symbol.iterator] = function* (): IterableIterator<
- [number, number]
- > {
- yield [1, 2];
- };
- const params1 = new URLSearchParams((params as unknown) as string[][]);
- assertEquals(params1.get("1"), "2");
- },
-);
-
-// If a class extends URLSearchParams, override one method should not change another's behavior.
-Deno.test(
- function urlSearchParamsOverridingAppendNotChangeConstructorAndSet() {
- let overriddenAppendCalled = 0;
- class CustomSearchParams extends URLSearchParams {
- append(name: string, value: string) {
- ++overriddenAppendCalled;
- super.append(name, value);
- }
- }
- new CustomSearchParams("foo=bar");
- new CustomSearchParams([["foo", "bar"]]);
- new CustomSearchParams(new CustomSearchParams({ foo: "bar" }));
- new CustomSearchParams().set("foo", "bar");
- assertEquals(overriddenAppendCalled, 0);
- },
-);
-
-Deno.test(function urlSearchParamsOverridingEntriesNotChangeForEach() {
- class CustomSearchParams extends URLSearchParams {
- *entries(): IterableIterator<[string, string]> {
- yield* [];
- }
- }
- let loopCount = 0;
- const params = new CustomSearchParams({ foo: "bar" });
- params.forEach(() => void ++loopCount);
- assertEquals(loopCount, 1);
-});