mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 07:58:45 +03:00
102 lines
4.1 KiB
JavaScript
102 lines
4.1 KiB
JavaScript
const { isFrozenUA, unfreezeUA } = require('@ua-parser-js/user-agent-helpers');
|
|
const { UAClientHints } = require('@ua-parser-js/ua-client-hints');
|
|
const assert = require('assert');
|
|
|
|
describe('isFrozenUA()', () => {
|
|
it('Returns whether a user agent is frozen', () => {
|
|
|
|
const regularWindowsUA = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Safari/537.36";
|
|
const freezedWindowsUA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36";
|
|
|
|
const regularMacUA = "";
|
|
const freezedMacUA = "";
|
|
|
|
const regularLinuxUA = "";
|
|
const freezedLinuxUA = "";
|
|
|
|
const regularCrOSUA = "";
|
|
const freezedCrOSUA = "";
|
|
|
|
const regularFuchsiaUA = "";
|
|
const freezedFuchsiaUA = "";
|
|
|
|
const regularMobileUA = "Mozilla/5.0 (Linux; Android 9; SM-A205U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Mobile Safari/537.36";
|
|
const freezedMobileUA = "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Mobile Safari/537.36";
|
|
|
|
const regularTabletUA = "Mozilla/5.0 (Linux; Android 9; SM-T810) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.1234.56 Safari/537.36";
|
|
const freezedTabletUA = "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.0.0 Safari/537.36";
|
|
|
|
assert.strictEqual(isFrozenUA(regularWindowsUA), false);
|
|
assert.strictEqual(isFrozenUA(freezedWindowsUA), true);
|
|
assert.strictEqual(isFrozenUA(regularMobileUA), false);
|
|
assert.strictEqual(isFrozenUA(freezedMobileUA), true);
|
|
assert.strictEqual(isFrozenUA(regularTabletUA), false);
|
|
assert.strictEqual(isFrozenUA(freezedTabletUA), true);
|
|
});
|
|
});
|
|
|
|
const headers = {
|
|
'sec-ch-ua' : '"Chromium";v="93", "Google Chrome";v="93", " Not;A Brand";v="99"',
|
|
'sec-ch-ua-full-version-list' : '"Chromium";v="93.0.1.2", "Google Chrome";v="93.0.1.2", " Not;A Brand";v="99.0.1.2"',
|
|
'sec-ch-ua-arch' : '"arm"',
|
|
'sec-ch-ua-bitness' : '"64"',
|
|
'sec-ch-ua-mobile' : '?1',
|
|
'sec-ch-ua-model' : '"Pixel 99"',
|
|
'sec-ch-ua-platform' : '"Linux"',
|
|
'sec-ch-ua-platform-version' : '"13"',
|
|
'user-agent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'
|
|
};
|
|
|
|
describe('unfreezeUA()', () => {
|
|
it('returns an unfreezed user-agent using real data from client hints HTTP headers (sec-ch-ua)', async () => {
|
|
const unfreezed = await unfreezeUA(headers);
|
|
assert.strictEqual(unfreezed, 'Mozilla/5.0 (X11; Linux arm64) AppleWebKit/537.36 (KHTML, like Gecko) Chromium/93.0.1.2 Chrome/93.0.1.2 Safari/537.36');
|
|
});
|
|
});
|
|
|
|
describe('Parse CH Headers', () => {
|
|
it('parse client hints HTTP headers (sec-ch-ua) into a client hints-like JavaScript object', () => {
|
|
assert.deepEqual(new UAClientHints().setUAData(headers).getUAData(['architecture', 'bitness']), {
|
|
"architecture": "arm",
|
|
"bitness": "64"
|
|
});
|
|
assert.deepEqual(new UAClientHints().setUAData(headers).getUAData(), {
|
|
"architecture": "arm",
|
|
"bitness": "64",
|
|
"brands": [
|
|
{
|
|
"brand": "Chromium",
|
|
"version": "93"
|
|
},
|
|
{
|
|
"brand": "Google Chrome",
|
|
"version": "93"
|
|
},
|
|
{
|
|
"brand": "Not;A Brand",
|
|
"version": "99"
|
|
}
|
|
],
|
|
"fullVersionList": [
|
|
{
|
|
"brand": "Chromium",
|
|
"version": "93.0.1.2"
|
|
},
|
|
{
|
|
"brand": "Google Chrome",
|
|
"version": "93.0.1.2"
|
|
},
|
|
{
|
|
"brand": "Not;A Brand",
|
|
"version": "99.0.1.2"
|
|
}
|
|
],
|
|
"formFactor": null,
|
|
"mobile": true,
|
|
"model": "Pixel 99",
|
|
"platform": "Linux",
|
|
"platformVersion": "13",
|
|
"wow64": null
|
|
});
|
|
});
|
|
}); |