mirror of
https://github.com/shaka-project/shaka-player.git
synced 2026-06-16 16:16:40 +03:00
64896d70b0
This reflects changes in Google's policy on JavaScript license headers, which should be smaller to avoid increasing the size of the binary unnecessarily. This also updates the company name from "Google, Inc" to "Google LLC". Change-Id: I3f8b9ed3700b6351f43173d50c94d35c333e82b4
88 lines
2.9 KiB
JavaScript
88 lines
2.9 KiB
JavaScript
/** @license
|
|
* Copyright 2016 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
describe('DataUriPlugin', () => {
|
|
const retryParameters = shaka.net.NetworkingEngine.defaultRetryParameters();
|
|
|
|
it('supports MIME types', async () => {
|
|
await testSucceeds('data:text/plain,Hello', 'text/plain', 'Hello');
|
|
});
|
|
|
|
it('supports URI encoded text', async () => {
|
|
await testSucceeds(
|
|
'data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E',
|
|
'text/html',
|
|
'<h1>Hello, World!</h1>');
|
|
});
|
|
|
|
it('supports base64 encoded text', async () => {
|
|
await testSucceeds(
|
|
'data:;base64,SGVsbG8sIFdvcmxkIQ%3D%3D', '', 'Hello, World!');
|
|
});
|
|
|
|
it('supports extra colin', async () => {
|
|
await testSucceeds('data:,Hello:', '', 'Hello:');
|
|
});
|
|
|
|
it('supports extra semi-colin', async () => {
|
|
await testSucceeds('data:,Hello;', '', 'Hello;');
|
|
});
|
|
|
|
it('supports extra comma', async () => {
|
|
await testSucceeds('data:,Hello,', '', 'Hello,');
|
|
});
|
|
|
|
it('fails for empty URI', async () => {
|
|
await testFails('', shaka.util.Error.Code.MALFORMED_DATA_URI);
|
|
});
|
|
|
|
it('fails for non-data URIs', async () => {
|
|
await testFails(
|
|
'http://google.com/', shaka.util.Error.Code.MALFORMED_DATA_URI);
|
|
});
|
|
|
|
it('fails for decoding errors', async () => {
|
|
await testFails('data:Bad%', shaka.util.Error.Code.MALFORMED_DATA_URI);
|
|
});
|
|
|
|
it('fails if missing comma', async () => {
|
|
await testFails('data:Bad', shaka.util.Error.Code.MALFORMED_DATA_URI);
|
|
});
|
|
|
|
async function testSucceeds(uri, contentType, text) {
|
|
// An arbitrary request type.
|
|
const requestType = shaka.net.NetworkingEngine.RequestType.SEGMENT;
|
|
// A dummy progress callback.
|
|
const progressUpdated = (elapsedMs, bytes, bytesRemaining) => {};
|
|
const request =
|
|
shaka.net.NetworkingEngine.makeRequest([uri], retryParameters);
|
|
const response = await shaka.net.DataUriPlugin.parse(
|
|
uri, request, requestType, progressUpdated).promise;
|
|
expect(response).toBeTruthy();
|
|
expect(response.uri).toBe(uri);
|
|
expect(response.data).toBeTruthy();
|
|
expect(response.headers['content-type']).toBe(contentType);
|
|
const data =
|
|
shaka.util.StringUtils.fromBytesAutoDetect(response.data);
|
|
expect(data).toBe(text);
|
|
}
|
|
|
|
async function testFails(uri, code) {
|
|
// An arbitrary request type.
|
|
const requestType = shaka.net.NetworkingEngine.RequestType.SEGMENT;
|
|
// A dummy progress callback.
|
|
const progressUpdated = (elapsedMs, bytes, bytesRemaining) => {};
|
|
const request =
|
|
shaka.net.NetworkingEngine.makeRequest([uri], retryParameters);
|
|
const expected = shaka.test.Util.jasmineError(new shaka.util.Error(
|
|
shaka.util.Error.Severity.CRITICAL, shaka.util.Error.Category.NETWORK,
|
|
code, uri));
|
|
await expectAsync(
|
|
shaka.net.DataUriPlugin.parse(
|
|
uri, request, requestType, progressUpdated).promise)
|
|
.toBeRejectedWith(expected);
|
|
}
|
|
});
|