bluelinky2
Version:
An unofficial nodejs API wrapper for Hyundai bluelink
156 lines (136 loc) • 3.37 kB
text/typescript
/* 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();
});
});
});