Extremely Popular
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120// Copyright 2018-2022 the oak authors. All rights reserved. MIT license.
import { assertEquals, assertStrictEquals, assertThrows } from "./test_deps.ts";import { format, parse } from "./mediaTyper.ts";
const { test } = Deno;
test({ name: "format basic type", fn() { const actual = format({ type: "text", subtype: "html" }); assertStrictEquals(actual, "text/html"); },});
test({ name: "format type with suffic", fn() { // formatWithSuffix() { const actual = format({ type: "image", subtype: "svg", suffix: "xml" }); assertStrictEquals(actual, "image/svg+xml"); },});
test({ name: "format invalid type", fn() { assertThrows( () => { format({ type: "text/", subtype: "html" }); }, TypeError, "Invalid type", ); },});
test({ name: "format invalid sub type", fn() { assertThrows( () => { format({ type: "text", subtype: "html/" }); }, TypeError, "Invalid subtype", ); },});
test({ name: "format invalid suffix", fn() { assertThrows( () => { format({ type: "image", subtype: "svg", suffix: "xml\\" }); }, TypeError, "Invalid suffix", ); },});
test({ name: "parse basic type", fn() { const actual = parse("text/html"); assertEquals(actual.type, "text"); assertEquals(actual.subtype, "html"); assertEquals(actual.suffix, undefined); },});
test({ name: "parse with suffix", fn() { const actual = parse("image/svg+xml"); assertEquals(actual.type, "image"); assertEquals(actual.subtype, "svg"); assertEquals(actual.suffix, "xml"); },});
test({ name: "parse is case insensitive", fn() { const actual = parse("IMAGE/SVG+XML"); assertEquals(actual.type, "image"); assertEquals(actual.subtype, "svg"); assertEquals(actual.suffix, "xml"); },});
const invalidTypes = [ " ", "null", "undefined", "/", "text/;plain", 'text/"plain"', "text/p£ain", "text/(plain)", "text/@plain", "text/plain,wrong",];
for (const type of invalidTypes) { test({ name: `parse invalidType: "${type}"`, fn() { assertThrows( () => { parse(type); }, TypeError, "Invalid media type", ); }, });}