218 lines
9.7 KiB
HTML
218 lines
9.7 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<script src="../../http/tests/inspector/resources/inspector-test.js"></script>
|
|
<script>
|
|
function test()
|
|
{
|
|
let suite = InspectorTest.createSyncSuite("MIMETypeUtilities");
|
|
|
|
suite.addTestCase({
|
|
name: "parseMIMEType",
|
|
test() {
|
|
function test(fullMimeType, expected) {
|
|
InspectorTest.newline();
|
|
InspectorTest.log(`Test ${JSON.stringify(fullMimeType)}`);
|
|
|
|
let {
|
|
type: expectedType,
|
|
boundary: expectedBoundary,
|
|
encoding: expectedEncoding,
|
|
} = expected;
|
|
|
|
let {
|
|
type: actualType,
|
|
boundary: actualBoundary,
|
|
encoding: actualEncoding,
|
|
} = parseMIMEType(fullMimeType);
|
|
|
|
InspectorTest.expectEqual(actualType, expectedType, `type should be: ${JSON.stringify(expectedType)}`);
|
|
InspectorTest.expectEqual(actualBoundary, expectedBoundary, `boundary should be: ${JSON.stringify(expectedBoundary)}`);
|
|
InspectorTest.expectEqual(actualEncoding, expectedEncoding, `encoding should be: ${JSON.stringify(expectedEncoding)}`);
|
|
}
|
|
|
|
test(null, {
|
|
type: null,
|
|
boundary: null,
|
|
encoding: null,
|
|
});
|
|
|
|
test("a", {
|
|
type: "a",
|
|
boundary: null,
|
|
encoding: null,
|
|
});
|
|
|
|
test("mime", {
|
|
type: "mime",
|
|
boundary: null,
|
|
encoding: null,
|
|
});
|
|
|
|
test("mime-dash", {
|
|
type: "mime-dash",
|
|
boundary: null,
|
|
encoding: null,
|
|
});
|
|
|
|
test("mime/slash", {
|
|
type: "mime/slash",
|
|
boundary: null,
|
|
encoding: null,
|
|
});
|
|
|
|
test("mime+plus", {
|
|
type: "mime+plus",
|
|
boundary: null,
|
|
encoding: null,
|
|
});
|
|
|
|
test("mime/slash+plus", {
|
|
type: "mime/slash+plus",
|
|
boundary: null,
|
|
encoding: null,
|
|
});
|
|
|
|
test("mime/slash ;", {
|
|
type: "mime/slash",
|
|
boundary: null,
|
|
encoding: null,
|
|
});
|
|
|
|
test("mime ; semicolon", {
|
|
type: "mime",
|
|
boundary: null,
|
|
encoding: null,
|
|
});
|
|
|
|
test("mime/generic ; a = b", {
|
|
type: "mime/generic",
|
|
boundary: null,
|
|
encoding: null,
|
|
});
|
|
|
|
test("mime/generic ; boundary = charset", {
|
|
type: "mime/generic",
|
|
boundary: "charset",
|
|
encoding: null,
|
|
});
|
|
|
|
test("mime/generic ; charset = boundary", {
|
|
type: "mime/generic",
|
|
boundary: null,
|
|
encoding: "boundary",
|
|
});
|
|
|
|
test("mime/generic ; boundary = foo ; charset = bar", {
|
|
type: "mime/generic",
|
|
boundary: "foo",
|
|
encoding: "bar",
|
|
});
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "fileExtensionForFilename",
|
|
test() {
|
|
InspectorTest.expectNull(WI.fileExtensionForFilename(null), `File extension for null filename should be null.`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForURL("test"), null, `File extension for filename without a period should be null.`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForURL("test."), null, `File extension for filename ending in a period should be null.`);
|
|
|
|
InspectorTest.expectEqual(WI.fileExtensionForFilename("foo.xyz"), "xyz", `File extension for "foo.xyz" should be "xyz".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForFilename("image.png"), "png", `File extension for "image.png" should be "png".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForFilename("image.gif"), "gif", `File extension for "image.png" should be "gif".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForFilename("script.js"), "js", `File extension for "script.js" should be "js".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForFilename("script.min.js"), "js", `File extension for "script.min.js" should be "js".`);
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "fileExtensionForURL",
|
|
test() {
|
|
InspectorTest.expectNull(WI.fileExtensionForURL(null), `File extension for null URL should be null.`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForURL("invalid-url"), null, `File extension for invalid URL should be null.`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForURL("https://example.com"), null, `File extension for URL without last path component should be null.`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForURL("https://example.com/"), null, `File extension for URL without last path component should be null.`);
|
|
|
|
InspectorTest.expectEqual(WI.fileExtensionForURL("https://example.com/test"), null, `File extension for URL with last path component without a period should be null.`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForURL("https://example.com/foo.bar/test"), null, `File extension for URL with last path component without a period should be null.`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForURL("https://example.com/test."), null, `File extension for URL with last path component ending in a period should be null.`);
|
|
|
|
InspectorTest.expectEqual(WI.fileExtensionForURL("https://example.com/foo.xyz"), "xyz", `File extension for "foo.xyz" should be "xyz".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForURL("https://example.com/image.png"), "png", `File extension for "image.png" should be "png".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForURL("https://example.com/image.gif"), "gif", `File extension for "image.png" should be "gif".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForURL("https://example.com/script.js"), "js", `File extension for "script.js" should be "js".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForURL("https://example.com/script.min.js"), "js", `File extension for "script.min.js" should be "js".`);
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "fileExtensionForMIMEType",
|
|
test() {
|
|
InspectorTest.expectEqual(WI.fileExtensionForMIMEType(null), null, `File extension for null mime type should be null.`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForMIMEType("invalid-mimetype"), null, `File extension for invalid mime type should be null.`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForMIMEType("application/unknown"), null, `File extension for unknown mime type should be null.`);
|
|
|
|
InspectorTest.expectEqual(WI.fileExtensionForMIMEType("image/jpeg"), "jpg", `File extension for "image/jpeg" should be "jpg".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForMIMEType("image/png"), "png", `File extension for "image/png" should be "png".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForMIMEType("image/gif"), "gif", `File extension for "image/gif" should be "gif".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForMIMEType("text/javascript"), "js", `File extension for "text/javascript" should be "js".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForMIMEType("application/json"), "json", `File extension for "application/json" should be "json".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForMIMEType("application/vnd.api+json"), "json", `File extension for "application/vnd.api+json" should be "json".`);
|
|
|
|
InspectorTest.expectEqual(WI.fileExtensionForMIMEType("application/xhtml+xml"), "xhtml", `File extension for "application/xhtml+xml" should be "xhtml".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForMIMEType("image/svg+xml"), "svg", `File extension for "image/svg+xml" should be "svg".`);
|
|
InspectorTest.expectEqual(WI.fileExtensionForMIMEType("text/foo+xml"), "xml", `File extension for "text/foo+xml" should be "xml".`);
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
suite.addTestCase({
|
|
name: "shouldTreatMIMETypeAsText",
|
|
test() {
|
|
function expectText(mimeType) {
|
|
InspectorTest.expectTrue(WI.shouldTreatMIMETypeAsText(mimeType), `"${mimeType}" should be treated as text.`);
|
|
}
|
|
function expectNotText(mimeType) {
|
|
InspectorTest.expectFalse(WI.shouldTreatMIMETypeAsText(mimeType), `"${mimeType}" should not be treated as text.`);
|
|
}
|
|
|
|
InspectorTest.expectFalse(WI.shouldTreatMIMETypeAsText(null), `null mime type should not be treated as text.`);
|
|
expectNotText("application/unknown");
|
|
|
|
expectText("text/plain");
|
|
expectText("text/javascript");
|
|
expectText("application/json");
|
|
expectText("application/vnd.api+json");
|
|
expectText("application/vnd.apple.mpegurl");
|
|
expectText("image/svg+xml");
|
|
expectText("text/x-coffeescript");
|
|
expectText("application/xml");
|
|
|
|
expectNotText("image/jpeg");
|
|
expectNotText("image/png");
|
|
expectNotText("image/gif");
|
|
expectNotText("font/woff");
|
|
expectNotText("video/mpeg");
|
|
expectNotText("audio/ogg");
|
|
expectNotText("application/pdf");
|
|
|
|
return true;
|
|
}
|
|
})
|
|
|
|
suite.runTestCasesAndFinish();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onLoad="runTest()">
|
|
</body>
|
|
</html>
|