| 'use strict'; |
| // Flags: --expose-internals |
| |
| require('../common'); |
| const fixtures = require('../common/fixtures'); |
| const assert = require('node:assert'); |
| const { test } = require('node:test'); |
| const { dataURLProcessor } = require('internal/data_url'); |
| |
| // https://github.com/web-platform-tests/wpt/blob/7c79d998ff42e52de90290cb847d1b515b3b58f7/fetch/data-urls/processing.any.js |
| test('parsing data URLs', async () => { |
| const tests = require(fixtures.path('wpt/fetch/data-urls/resources/data-urls.json')); |
| |
| for (let i = 0; i < tests.length; i++) { |
| const input = tests[i][0]; |
| const expectedMimeType = tests[i][1]; |
| const expectedBody = expectedMimeType !== null ? new Uint8Array(tests[i][2]) : null; |
| |
| if (!URL.canParse(input)) { |
| assert.strictEqual(expectedMimeType, null); |
| } else if (expectedMimeType === null) { |
| assert.strictEqual(dataURLProcessor(URL.parse(input)), 'failure'); |
| } else { |
| const { mimeType, body } = dataURLProcessor(new URL(input)); |
| |
| assert.deepStrictEqual(expectedBody, body); |
| assert.deepStrictEqual(expectedMimeType, mimeType.toString()); |
| } |
| } |
| }); |