Files
RSSHub/test/utils/rand-user-agent.js
Tony bafb3534e1 feat(utils): random user agent (#9449)
* feat(utils): random ua

* chore: bump rand-user-agent to 1.0.58(no more deps)
2022-04-12 17:51:07 +08:00

41 lines
1.7 KiB
JavaScript

const got = require('@/utils/got');
const config = require('@/config').value;
const nock = require('nock');
const randUserAgent = require('@/utils/rand-user-agent');
const mobileUa = require('@/utils/rand-user-agent')({ browser: 'mobile safari', os: 'ios', device: 'mobile' });
describe('rand-user-agent', () => {
it('chrome should not include headlesschrome', () => {
const uaArr = Array(100)
.fill()
.map(() => randUserAgent({ browser: 'chrome', os: 'windows' }));
const match = uaArr.find((e) => (e.includes('Chrome-Lighthouse') || e.includes('HeadlessChrome') ? true : false));
expect(match).toBeFalsy();
});
it('should has default random ua', async () => {
nock('https://rsshub.test')
.get('/test')
.reply(function () {
expect(this.req.headers['user-agent']).toBe(config.ua);
expect(this.req.headers['user-agent']).not.toBe(mobileUa);
expect(this.req.headers['user-agent']).not.toBe('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36');
return [200, ''];
});
await got('https://rsshub.test/test');
});
it('should match ua configurated', async () => {
const response1 = await got('https://www.whatsmyua.info/api/v1/ua');
expect(response1.data[0].ua.rawUa).toBe(config.ua);
const response2 = await got('https://www.whatsmyua.info/api/v1/ua', {
headers: {
'user-agent': mobileUa,
},
});
expect(response2.data[0].ua.rawUa).toBe(mobileUa);
expect(response2.data[0].ua.rawUa).not.toBe(config.ua);
});
});