mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-30 17:27:44 +03:00
[helpers] Add new method: UACHParser()
, parse client-hints HTTP headers into its JS API equivalent
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
const { isFrozenUA } = require('@ua-parser-js/helpers');
|
||||
const { isFrozenUA, unfreezeUA, UACHParser } = require('@ua-parser-js/helpers');
|
||||
const assert = require('assert');
|
||||
|
||||
describe('isFrozenUA', () => {
|
||||
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";
|
||||
@@ -32,4 +32,64 @@ describe('isFrozenUA', () => {
|
||||
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('UACHParser()', () => {
|
||||
it('parse client hints HTTP headers (sec-ch-ua) into a JavaScript object', () => {
|
||||
assert.deepEqual(UACHParser(headers), {
|
||||
"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"
|
||||
}
|
||||
],
|
||||
"mobile": true,
|
||||
"model": "Pixel 99",
|
||||
"platform": "Linux",
|
||||
"platformVersion": "13"
|
||||
});
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user