Files
bun.sh/test/js/node/url/url-domain-ascii-unicode.test.js
2024-09-03 21:32:52 -07:00

102 lines
4.7 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { describe, expect, test } from "bun:test";
import url from "node:url";
const pairs = [
["ıíd", "xn--d-iga7r"],
["يٴ", "xn--mhb8f"],
["www.ϧƽəʐ.com", "www.xn--cja62apfr6c.com"],
["новини.com", "xn--b1amarcd.com"],
["名がドメイン.com", "xn--v8jxj3d1dzdz08w.com"],
["افغانستا.icom.museum", "xn--mgbaal8b0b9b2b.icom.museum"],
["الجزائر.icom.fake", "xn--lgbbat1ad8j.icom.fake"],
["भारत.org", "xn--h2brj9c.org"],
["افغانستا.icom.museum", "xn--mgbaal8b0b9b2b.icom.museum"],
["الجزائر.icom.museum", "xn--lgbbat1ad8j.icom.museum"],
["österreich.icom.museum", "xn--sterreich-z7a.icom.museum"],
["বাংলাদেশ.icom.museum", "xn--54b6eqazv8bc7e.icom.museum"],
["беларусь.icom.museum", "xn--80abmy0agn7e.icom.museum"],
["belgië.icom.museum", "xn--belgi-rsa.icom.museum"],
["българия.icom.museum", "xn--80abgvm6a7d2b.icom.museum"],
["تشادر.icom.museum", "xn--mgbfqim.icom.museum"],
["中国.icom.museum", "xn--fiqs8s.icom.museum"],
["القمر.icom.museum", "xn--mgbu4chg.icom.museum"],
["κυπρος.icom.museum", "xn--vxakcego.icom.museum"],
["českárepublika.icom.museum", "xn--eskrepublika-ebb62d.icom.museum"],
["مصر.icom.museum", "xn--wgbh1c.icom.museum"],
["ελλάδα.icom.museum", "xn--hxakic4aa.icom.museum"],
["magyarország.icom.museum", "xn--magyarorszg-t7a.icom.museum"],
["ísland.icom.museum", "xn--sland-ysa.icom.museum"],
["भारत.icom.museum", "xn--h2brj9c.icom.museum"],
["ايران.icom.museum", "xn--mgba3a4fra.icom.museum"],
["éire.icom.museum", "xn--ire-9la.icom.museum"],
["איקו״ם.ישראל.museum", "xn--4dbklr2c8d.xn--4dbrk0ce.museum"],
["日本.icom.museum", "xn--wgv71a.icom.museum"],
["الأردن.icom.museum", "xn--igbhzh7gpa.icom.museum"],
["қазақстан.icom.museum", "xn--80aaa0a6awh12ed.icom.museum"],
["한국.icom.museum", "xn--3e0b707e.icom.museum"],
["кыргызстан.icom.museum", "xn--80afmksoji0fc.icom.museum"],
["ລາວ.icom.museum", "xn--q7ce6a.icom.museum"],
["لبنان.icom.museum", "xn--mgbb7fjb.icom.museum"],
["македонија.icom.museum", "xn--80aaldqjmmi6x.icom.museum"],
["موريتانيا.icom.museum", "xn--mgbah1a3hjkrd.icom.museum"],
["méxico.icom.museum", "xn--mxico-bsa.icom.museum"],
["монголулс.icom.museum", "xn--c1aqabffc0aq.icom.museum"],
["المغرب.icom.museum", "xn--mgbc0a9azcg.icom.museum"],
["नेपाल.icom.museum", "xn--l2bey1c2b.icom.museum"],
["عمان.icom.museum", "xn--mgb9awbf.icom.museum"],
["قطر.icom.museum", "xn--wgbl6a.icom.museum"],
["românia.icom.museum", "xn--romnia-yta.icom.museum"],
["россия.иком.museum", "xn--h1alffa9f.xn--h1aegh.museum"],
["србијаицрнагора.иком.museum", "xn--80aaabm1ab4blmeec9e7n.xn--h1aegh.museum"],
["இலங்கை.icom.museum", "xn--xkc2al3hye2a.icom.museum"],
["españa.icom.museum", "xn--espaa-rta.icom.museum"],
["ไทย.icom.museum", "xn--o3cw4h.icom.museum"],
["تونس.icom.museum", "xn--pgbs0dh.icom.museum"],
["türkiye.icom.museum", "xn--trkiye-3ya.icom.museum"],
["украина.icom.museum", "xn--80aaxgrpt.icom.museum"],
["việtnam.icom.museum", "xn--vitnam-jk8b.icom.museum"],
[`${"a".repeat(64)}.com`, `${"a".repeat(64)}.com`],
[`${`${"a".repeat(64)}.`.repeat(4)}com`, `${`${"a".repeat(64)}.`.repeat(4)}com`],
["r4---sn-a5mlrn7s.gevideo.com", "r4---sn-a5mlrn7s.gevideo.com"],
["-sn-a5mlrn7s.gevideo.com", "-sn-a5mlrn7s.gevideo.com"],
["sn-a5mlrn7s-.gevideo.com", "sn-a5mlrn7s-.gevideo.com"],
["-sn-a5mlrn7s-.gevideo.com", "-sn-a5mlrn7s-.gevideo.com"],
["-sn--a5mlrn7s-.gevideo.com", "-sn--a5mlrn7s-.gevideo.com"],
];
const invalids = [
["@", ""],
["a@b", ""],
[null, null],
[undefined, undefined],
["2001:0db8:85a3:0000:0000:8a2e:0370:7334", ""],
];
describe("url.domainToASCII", () => {
for (const [domain, ascii] of pairs) {
test(`convert from '${domain}' to '${ascii}'`, () => {
const domainConvertedToASCII = url.domainToASCII(domain);
expect(domainConvertedToASCII).toEqual(ascii);
});
}
for (const [input, expected] of invalids) {
test(`-> '${input}' is '${expected}'`, () => {
expect(url.domainToASCII(input)).toEqual(expected);
});
}
});
describe("url.domainToUnicode", () => {
for (const [domain, ascii] of pairs) {
test(`convert from '${ascii}' to '${domain}'`, () => {
const asciiConvertedToUnicode = url.domainToUnicode(ascii);
expect(asciiConvertedToUnicode).toEqual(domain);
});
}
for (const [input, expected] of invalids) {
test(`-> '${input}' is '${expected}'`, () => {
expect(url.domainToASCII(input)).toEqual(expected);
});
}
});