voluptasmollitia
Version:
Monorepo for the Firebase JavaScript SDK
100 lines (85 loc) • 4.3 kB
text/typescript
/**
* @license
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { expect } from 'chai';
import { _getBrowserName, BrowserName } from './browser';
describe('core/util/_getBrowserName', () => {
it('should recognize Opera', () => {
const userAgent =
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36 OPR/36.0.2130.74';
expect(_getBrowserName(userAgent)).to.eq(BrowserName.OPERA);
});
it('should recognize IE', () => {
const userAgent =
'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C)';
expect(_getBrowserName(userAgent)).to.eq(BrowserName.IE);
});
it('should recognize Edge', () => {
const userAgent =
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240';
expect(_getBrowserName(userAgent)).to.eq(BrowserName.EDGE);
});
it('should recognize Firefox', () => {
const userAgent =
'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0';
expect(_getBrowserName(userAgent)).to.eq(BrowserName.FIREFOX);
});
it('should recognize Silk', () => {
const userAgent =
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Silk/44.1.54 like Chrome/44.0.2403.63 Safari/537.36';
expect(_getBrowserName(userAgent)).to.eq(BrowserName.SILK);
});
it('should recognize Safari', () => {
const userAgent =
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11-4) AppleWebKit/601.5.17 (KHTML, like Gecko) Version/9.1 Safari/601.5.17';
expect(_getBrowserName(userAgent)).to.eq(BrowserName.SAFARI);
});
it('should recognize Chrome', () => {
const userAgent =
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36';
expect(_getBrowserName(userAgent)).to.eq(BrowserName.CHROME);
});
it('should recognize Android', () => {
const userAgent =
'Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30';
expect(_getBrowserName(userAgent)).to.eq(BrowserName.ANDROID);
});
it('should recognize Blackberry', () => {
const userAgent =
'Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+';
expect(_getBrowserName(userAgent)).to.eq(BrowserName.BLACKBERRY);
});
it('should recognize IE Mobile', () => {
const userAgent =
'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0;Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)';
expect(_getBrowserName(userAgent)).to.eq(BrowserName.IEMOBILE);
});
it('should recognize WebOS', () => {
const userAgent =
'Mozilla/5.0 (webOS/1.3; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Desktop/1.0';
expect(_getBrowserName(userAgent)).to.eq(BrowserName.WEBOS);
});
it('should recognize an unlisted browser', () => {
const userAgent =
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Awesome/2.0.012';
expect(_getBrowserName(userAgent)).to.eq('Awesome');
});
it('should default to Other', () => {
const userAgent =
'Mozilla/5.0 (iPhone; CPU iPhone OS 8_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12D508 [FBAN/FBIOS;FBAV/27.0.0.10.12;FBBV/8291884;FBDV/iPhone7,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/8.2;FBSS/3; FBCR/vodafoneIE;FBID/phone;FBLC/en_US;FBOP/5]';
expect(_getBrowserName(userAgent)).to.eq(BrowserName.OTHER);
});
});