Skip to content
15 linesCodeBlameRaw
1import assert from "node:assert/strict";
2import { test } from "node:test";
3
4import { isPhone } from "./phone.ts";
5
6const headers = (values: Record<string, string>) => ({ get: (name: string) => values[name] ?? null });
7
8test("a phone is told by its client hint, else its user agent", () => {
9 assert.equal(isPhone(headers({ "sec-ch-ua-mobile": "?1" })), true);
10 assert.equal(isPhone(headers({ "sec-ch-ua-mobile": "?0", "user-agent": "iPhone" })), false);
11 assert.equal(isPhone(headers({ "user-agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X)" })), true);
12 assert.equal(isPhone(headers({ "user-agent": "Mozilla/5.0 (Linux; Android 15; Pixel 9) Mobile Safari" })), true);
13 assert.equal(isPhone(headers({ "user-agent": "Mozilla/5.0 (iPad; CPU OS 18_0)" })), false);
14 assert.equal(isPhone(headers({ "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_0)" })), false);
15});