summaryrefslogtreecommitdiff
path: root/cli/tests/data_import_test.js
diff options
context:
space:
mode:
authorValentin Anger <syrupthinker@gryphno.de>2020-09-11 22:40:48 +0200
committerGitHub <noreply@github.com>2020-09-11 22:40:48 +0200
commite3319f34a6ece36eab3138eae83c8d0e18fcc07c (patch)
treec194f400d91d11b9a29416e1697d00d8cf2e3628 /cli/tests/data_import_test.js
parenta3282aa9ed749f2e80618c6e2f25047d9a2bb2d8 (diff)
feat(unstable): Support data: urls (#5157)
Diffstat (limited to 'cli/tests/data_import_test.js')
-rw-r--r--cli/tests/data_import_test.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/cli/tests/data_import_test.js b/cli/tests/data_import_test.js
new file mode 100644
index 000000000..bbbc67743
--- /dev/null
+++ b/cli/tests/data_import_test.js
@@ -0,0 +1,59 @@
+import { assertEquals } from "../../std/testing/asserts.ts";
+
+// export const value = 'Successful import'; export default value;
+import data1 from "data:application/javascript;base64,ZXhwb3J0IGNvbnN0IHZhbHVlID0gJ1N1Y2Nlc3NmdWwgaW1wb3J0JzsgZXhwb3J0IGRlZmF1bHQgdmFsdWU7";
+
+Deno.test("static base64 data url import", () => {
+ assertEquals(data1, "Successful import");
+});
+
+Deno.test("dynamic base64 data url import", async () => {
+ const data2 = await import(
+ // export const leet = 1337
+ "data:application/javascript;base64,ZXhwb3J0IGNvbnN0IGxlZXQgPSAxMzM3"
+ );
+ assertEquals(data2.leet, 1337);
+});
+
+Deno.test("dynamic percent-encoding data url import", async () => {
+ const data3 = await import(
+ // export const value = 42;
+ "data:application/javascript,export%20const%20value%20%3D%2042%3B"
+ );
+ assertEquals(data3.value, 42);
+});
+
+Deno.test("dynamic base64 typescript data url import", async () => {
+ const data2 = await import(
+ // export const leet: number = 1337;
+ "data:application/typescript;base64,ZXhwb3J0IGNvbnN0IGxlZXQ6IG51bWJlciA9IDEzMzc7"
+ );
+ assertEquals(data2.leet, 1337);
+});
+
+Deno.test("spawn worker with data url", async () => {
+ let resolve, timeout;
+ const promise = new Promise((res, rej) => {
+ resolve = res;
+ timeout = setTimeout(() => rej("Worker timed out"), 2000);
+ });
+
+ const worker = new Worker(
+ "data:application/javascript," +
+ encodeURIComponent("self.onmessage = () => self.postMessage('Worker');"),
+ { type: "module" },
+ );
+
+ worker.onmessage = (m) => {
+ if (m.data === "Worker") {
+ resolve();
+ }
+ };
+
+ worker.postMessage();
+
+ await promise;
+
+ clearTimeout(timeout);
+ worker.terminate();
+});