UNPKG

bluelinky2

Version:

An unofficial nodejs API wrapper for Hyundai bluelink

156 lines (136 loc) 3.37 kB
/* eslint-disable */ import got from 'got'; import BlueLinky from '../src/index'; jest.mock('got'); const gotMock = got as any; const VEHICLE_MOCK_DATA = { enrolledVehicleDetails: [ { vehicleDetails: { nickname: 'JEST', vin: 'JEST_TESTING_1', regDate: 'JEST', brandIndicator: 'H', regId: 'H000000', gen: '2', name: 'JEST', }, }, { vehicleDetails: { nickname: 'JEST', vin: 'JEST_TESTING_2', regDate: 'JEST', brandIndicator: 'H', regId: 'H000000', gen: '2', name: 'JEST', }, }, ], }; describe('BlueLinky', () => { it('calls error even when bad creds', done => { gotMock.mockReturnValueOnce({ body: { error: { message: 'you did something wrong!', }, }, statusCode: 401, }); const client = new BlueLinky({ username: 'someone@gmai.com', password: '123', pin: '1234', brand: 'hyundai', region: 'US', }); client.on('error', error => { done(); }); }); }); describe('BlueLinky', () => { beforeEach(() => { (got as any) .mockReturnValueOnce({ body: { access_token: 'test', refresh_token: 'test', expires_in: 'test', }, statusCode: 200, }) .mockReturnValueOnce({ body: JSON.stringify(VEHICLE_MOCK_DATA), statusCode: 200, }); }); it('creates a client with valid config', () => { const client = new BlueLinky({ username: 'someone@gmail.com', password: 'hunter1', pin: '1234', brand: 'hyundai', region: 'US', }); expect(client).toBeDefined(); client.on('ready', () => { expect(client.getSession()).toBeDefined(); expect(client.getSession().accessToken).toEqual('test'); }); }); it('throws error when you pass invalid region', () => { expect(() => { const client = new BlueLinky({ username: 'someone@gmail.com', password: 'hunter1', pin: '1234', brand: 'hyundai', region: 'KR', }); }).toThrowError('Your region is not supported yet.'); }); it('ready event is called after login', done => { const client = new BlueLinky({ username: 'someone@gmail.com', password: 'hunter1', pin: '1234', brand: 'hyundai', region: 'US', }); client.on('ready', () => { done(); }); }); it('getVehicle throws error on bad input', done => { const client = new BlueLinky({ username: 'someone@gmail.com', password: 'hunter1', pin: '1234', brand: 'hyundai', region: 'US', }); client.on('ready', () => { expect(() => client.getVehicle('test')).toThrowError(); done(); }); }); it('getVehicle returns correct vehicle', done => { const client = new BlueLinky({ username: 'someone@gmai.com', password: 'hunter1', pin: '1234', brand: 'hyundai', region: 'US', }); client.on('ready', vehicles => { const veh1 = client.getVehicle('JEST_TESTING_1'); const veh2 = client.getVehicle('JEST_TESTING_2'); expect(veh1.vin()).toEqual('JEST_TESTING_1'); expect(veh2.vin()).toEqual('JEST_TESTING_2'); done(); }); }); });