|
1 |
| -import { CurrentOS, OperatingSystem } from "./mod.ts"; |
| 1 | +import { CurrentOS, getOSFromUserAgent, getProductFromUserAgent, getVersionFromUserAgent, OperatingSystem } from "./mod.ts"; |
2 | 2 | import { CurrentProduct, CurrentRuntime, CurrentVersion, Product, Runtime } from "./mod.ts";
|
3 | 3 | import { assertEquals, assertNotEquals } from "@std/assert";
|
4 | 4 | import { test } from "@cross/test";
|
5 | 5 |
|
| 6 | +const UserAgentStrings = { |
| 7 | + chrome128OnWindows: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36", |
| 8 | + chrome118OnLinux: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", |
| 9 | + firefox129OnMacOS: "Mozilla/5.0 (Macintosh; Intel Mac OS X 14.6; rv:129.0) Gecko/20100101 Firefox/129.0", |
| 10 | + safari17OnIphone: "Mozilla/5.0 (iPhone; CPU iPhone OS 17_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1", |
| 11 | + safari17OnMacOS: "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_6_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15", |
| 12 | + safari5OnIos: "Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko ) Version/5.1 Mobile/9B176 Safari/7534.48.3", |
| 13 | +}; |
| 14 | + |
6 | 15 | test("Current runtime is correct (string)", () => {
|
7 | 16 | if ("Bun" in globalThis) {
|
8 | 17 | assertEquals("bun", CurrentRuntime);
|
@@ -45,3 +54,57 @@ test("Current version contains a dot", () => {
|
45 | 54 | test("Current operating system is supported", () => {
|
46 | 55 | assertNotEquals(OperatingSystem.Unsupported, CurrentOS);
|
47 | 56 | });
|
| 57 | +test("Chrome is detected", () => { |
| 58 | + assertEquals(getProductFromUserAgent(UserAgentStrings.chrome128OnWindows), Product.Chrome); |
| 59 | +}); |
| 60 | +test("Windows is detected from chrome ua", () => { |
| 61 | + assertEquals(getOSFromUserAgent(UserAgentStrings.chrome128OnWindows), OperatingSystem.Windows); |
| 62 | +}); |
| 63 | +test("Chrome version is detected from chrome ua", () => { |
| 64 | + assertEquals(getVersionFromUserAgent(UserAgentStrings.chrome128OnWindows), "128"); |
| 65 | +}); |
| 66 | +test("Chrome is detected", () => { |
| 67 | + assertEquals(getProductFromUserAgent(UserAgentStrings.chrome128OnWindows), Product.Chrome); |
| 68 | +}); |
| 69 | +test("Windows is detected from chrome ua", () => { |
| 70 | + assertEquals(getOSFromUserAgent(UserAgentStrings.chrome128OnWindows), OperatingSystem.Windows); |
| 71 | +}); |
| 72 | +test("Linux is detected from chrome ua", () => { |
| 73 | + assertEquals(getOSFromUserAgent(UserAgentStrings.chrome118OnLinux), OperatingSystem.Linux); |
| 74 | +}); |
| 75 | +test("Chrome version is detected from windows chrome ua", () => { |
| 76 | + assertEquals(getVersionFromUserAgent(UserAgentStrings.chrome128OnWindows), "128"); |
| 77 | +}); |
| 78 | +test("Chrome version is detected from linux chrome ua", () => { |
| 79 | + assertEquals(getVersionFromUserAgent(UserAgentStrings.chrome118OnLinux), "118"); |
| 80 | +}); |
| 81 | +test("Firefox is detected", () => { |
| 82 | + assertEquals(getProductFromUserAgent(UserAgentStrings.firefox129OnMacOS), Product.Firefox); |
| 83 | +}); |
| 84 | +test("MacOS is detected from Firefox user agent", () => { |
| 85 | + assertEquals(getOSFromUserAgent(UserAgentStrings.firefox129OnMacOS), OperatingSystem.macOS); |
| 86 | +}); |
| 87 | +test("Version is detected from Firefox user agent", () => { |
| 88 | + assertEquals(getVersionFromUserAgent(UserAgentStrings.firefox129OnMacOS), "129"); |
| 89 | +}); |
| 90 | +test("Safari is detected", () => { |
| 91 | + assertEquals(getProductFromUserAgent(UserAgentStrings.safari17OnIphone), Product.Safari); |
| 92 | +}); |
| 93 | +test("Ios is detected from Safari user agent", () => { |
| 94 | + assertEquals(getOSFromUserAgent(UserAgentStrings.safari17OnIphone), OperatingSystem.iOS); |
| 95 | +}); |
| 96 | +test("Version is detected from Safari user agent", () => { |
| 97 | + assertEquals(getVersionFromUserAgent(UserAgentStrings.safari17OnIphone), "17.5"); |
| 98 | +}); |
| 99 | +test("MacOS is detected from Safari user agent", () => { |
| 100 | + assertEquals(getOSFromUserAgent(UserAgentStrings.safari17OnMacOS), OperatingSystem.macOS); |
| 101 | +}); |
| 102 | +test("Version is detected from Safari user agent", () => { |
| 103 | + assertEquals(getVersionFromUserAgent(UserAgentStrings.safari17OnMacOS), "17.5"); |
| 104 | +}); |
| 105 | +test("MacOS is detected from older Safari user agent", () => { |
| 106 | + assertEquals(getOSFromUserAgent(UserAgentStrings.safari5OnIos), OperatingSystem.iOS); |
| 107 | +}); |
| 108 | +test("Version is detected from Safari user agent", () => { |
| 109 | + assertEquals(getVersionFromUserAgent(UserAgentStrings.safari5OnIos), "5.1"); |
| 110 | +}); |
0 commit comments