tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

test_ua_parser.js (5060B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 // Test for user agent parser.
      7 
      8 const {
      9  parseUserAgent,
     10 } = require("resource://devtools/client/responsive/utils/ua.js");
     11 
     12 const TEST_DATA = [
     13  {
     14    userAgent:
     15      "Mozilla/5.0 (Android 4.4.3; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0",
     16    expectedBrowser: { name: "Firefox", version: "41" },
     17    expectedOS: { name: "Android", version: "4.4.3" },
     18  },
     19  {
     20    userAgent:
     21      "Mozilla/5.0 (Android 8.0.0; Mobile; rv:70.0) Gecko/70.0 Firefox/70.0",
     22    expectedBrowser: { name: "Firefox", version: "70" },
     23    expectedOS: { name: "Android", version: "8" },
     24  },
     25  {
     26    userAgent:
     27      "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/70.1",
     28    expectedBrowser: { name: "Firefox", version: "70.1" },
     29    expectedOS: { name: "Windows NT", version: "6.1" },
     30  },
     31  {
     32    userAgent:
     33      "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/70.0",
     34    expectedBrowser: { name: "Firefox", version: "70" },
     35    expectedOS: { name: "Mac OSX", version: "10.13" },
     36  },
     37  {
     38    userAgent:
     39      "Mozilla/5.0 (X11; Linux i586; rv:31.0) Gecko/20100101 Firefox/70.0",
     40    expectedBrowser: { name: "Firefox", version: "70" },
     41    expectedOS: { name: "Linux", version: null },
     42  },
     43  {
     44    userAgent:
     45      "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/13.2b11866 Mobile/16A366 Safari/605.1.15",
     46    expectedBrowser: { name: "Firefox", version: "13.2b11866" },
     47    expectedOS: { name: "iOS", version: "12" },
     48  },
     49  {
     50    userAgent:
     51      "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/12.0 Mobile/15A372 Safari/604.1",
     52    expectedBrowser: { name: "Safari", version: "12" },
     53    expectedOS: { name: "iOS", version: "12" },
     54  },
     55  {
     56    userAgent:
     57      "Mozilla/5.0 (iPad; CPU OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1",
     58    expectedBrowser: { name: "Safari", version: "14.1" },
     59    expectedOS: { name: "iPadOS", version: "14.7.1" },
     60  },
     61  {
     62    userAgent:
     63      "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.8 (KHTML, like Gecko) Version/9.1.2 Safari/601.7.7",
     64    expectedBrowser: { name: "Safari", version: "9.1" },
     65    expectedOS: { name: "Mac OSX", version: "10.11.6" },
     66  },
     67  {
     68    userAgent:
     69      "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 6P Build/OPP3.170518.006) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Mobile Safari/537.36",
     70    expectedBrowser: { name: "Chrome", version: "67" },
     71    expectedOS: { name: "Android", version: "8" },
     72  },
     73  {
     74    userAgent:
     75      "Mozilla/5.0 (Linux; Android 11; SAMSUNG SM-G973U) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/14.2 Chrome/87.0.4280.141 Mobile Safari/537.36",
     76    expectedBrowser: { name: "Chrome", version: "87" },
     77    expectedOS: { name: "Android", version: "11" },
     78  },
     79  {
     80    userAgent:
     81      "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/69.0.3497.105 Mobile/15E148 Safari/605.1",
     82    expectedBrowser: { name: "Chrome", version: "69" },
     83    expectedOS: { name: "iOS", version: "12" },
     84  },
     85  {
     86    userAgent:
     87      "Mozilla/5.0 (X11; CrOS x86_64 11895.118.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.159 Safari/537.36",
     88    expectedBrowser: { name: "Chrome", version: "74" },
     89    expectedOS: { name: "Chrome OS", version: "11895.118" },
     90  },
     91  {
     92    userAgent:
     93      "Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/14.14263",
     94    expectedBrowser: { name: "Edge", version: "14.14263" },
     95    expectedOS: { name: "Windows Phone", version: "10.0" },
     96  },
     97  {
     98    userAgent:
     99      "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 OPR/43.0.2442.991",
    100    expectedBrowser: { name: "Opera", version: "43" },
    101    expectedOS: { name: "Windows NT", version: "10.0" },
    102  },
    103  {
    104    userAgent:
    105      "Opera/9.80 (Linux armv7l) Presto/2.12.407 Version/12.51 , D50u-D1-UHD/V1.5.16-UHD (Vizio, D50u-D1, Wireless)",
    106    expectedBrowser: { name: "Opera", version: "9.80" },
    107    expectedOS: { name: "Linux", version: null },
    108  },
    109  {
    110    userAgent:
    111      "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)",
    112    expectedBrowser: { name: "IE", version: "6" },
    113    expectedOS: { name: "Windows NT", version: "5.1" },
    114  },
    115  {
    116    userAgent: "1080p Full HD Television",
    117    expectedBrowser: null,
    118    expectedOS: null,
    119  },
    120 ];
    121 
    122 add_task(async function () {
    123  for (const { userAgent, expectedBrowser, expectedOS } of TEST_DATA) {
    124    info(`Test for ${userAgent}`);
    125    const { browser, os } = parseUserAgent(userAgent);
    126    deepEqual(browser, expectedBrowser, "Parsed browser is correct");
    127    deepEqual(os, expectedOS, "Parsed OS is correct");
    128  }
    129 });