UNPKG

component-dbs-core

Version:

DTO objects shared among device backend

155 lines 8.66 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const dynamodb_1 = require("aws-sdk/clients/dynamodb"); const testing_1 = require("@nestjs/testing"); const uuid_1 = require("uuid"); const config_1 = require("@nestjs/config"); const deviceService_1 = require("./deviceService"); const config_2 = require("../common_services/config"); const deviceVerification_1 = require("./deviceVerification"); const deviceMetrics_1 = require("./deviceMetrics"); const common_services_1 = require("../common_services"); jest.mock('../common_services/dynamodb/dynamodbService'); describe('device service test suite', () => { let documentClient; let deviceService; let deviceVerification; beforeAll(() => __awaiter(void 0, void 0, void 0, function* () { documentClient = new dynamodb_1.DocumentClient({ endpoint: 'localhost:8001', sslEnabled: false, region: 'local-env', }); const moduleRef = yield testing_1.Test.createTestingModule({ imports: [ config_1.ConfigModule.forRoot({ isGlobal: true, }), ], providers: [ config_2.EnvironmentService, deviceService_1.DeviceService, deviceMetrics_1.DeviceMetrics, deviceVerification_1.DeviceVerification, common_services_1.DynamodbService, common_services_1.DynamodbUtils, common_services_1.AppSyncClient, common_services_1.AppSyncUtils ], }).compile(); deviceService = yield moduleRef.get(deviceService_1.DeviceService); deviceVerification = yield moduleRef.get(deviceVerification_1.DeviceVerification); })); it('should be able verify device uuid', () => __awaiter(void 0, void 0, void 0, function* () { const model = uuid_1.v4().slice(-16); const serial = uuid_1.v4().slice(-16); const deviceUuid = yield deviceService.getDeviceUuid({ model, serial }); expect(deviceUuid).not.toBeUndefined(); const verify = yield deviceVerification.isDeviceUuidValid(deviceUuid.id); expect(verify).toBeTruthy(); })); it('should response false if device uuid doesnt exit', () => __awaiter(void 0, void 0, void 0, function* () { const verify = yield deviceVerification.isDeviceUuidValid(uuid_1.v4()); expect(verify).toBeFalsy(); })); it('should be able to query device based on tokens', () => __awaiter(void 0, void 0, void 0, function* () { const model = uuid_1.v4().slice(-16); const serial = uuid_1.v4().slice(-16); const deviceUuid = yield deviceService.getDeviceUuid({ model, serial }); const accessToken = uuid_1.v4(); const refreshToken = uuid_1.v4(); const idToken = uuid_1.v4(); yield deviceService.saveDeviceTokens(deviceUuid.id, accessToken, refreshToken, idToken); const valid = yield deviceVerification.isDeviceTokenValid(deviceUuid.id, accessToken, refreshToken, idToken); expect(valid).toBeTruthy(); })); it('should response false if device token not found', () => __awaiter(void 0, void 0, void 0, function* () { const model = uuid_1.v4().slice(-16); const serial = uuid_1.v4().slice(-16); const deviceUuid = yield deviceService.getDeviceUuid({ model, serial }); const accessToken = uuid_1.v4(); const refreshToken = uuid_1.v4(); const idToken = uuid_1.v4(); yield deviceService.saveDeviceTokens(deviceUuid.id, accessToken, refreshToken, idToken); const valid = yield deviceVerification.isDeviceTokenValid(uuid_1.v4().slice(-16), accessToken, refreshToken, 'unknown id token'); expect(valid).toBeFalsy(); })); it('should be able to find token without idToken', () => __awaiter(void 0, void 0, void 0, function* () { const model = uuid_1.v4().slice(-16); const serial = uuid_1.v4().slice(-16); const deviceUuid = yield deviceService.getDeviceUuid({ model, serial }); const accessToken = uuid_1.v4(); const refreshToken = uuid_1.v4(); yield deviceService.saveDeviceTokens(deviceUuid.id, accessToken, refreshToken); const valid = yield deviceVerification.isDeviceTokenValid(deviceUuid.id, accessToken, refreshToken); expect(valid).toBeTruthy(); })); it('should be able to verify deviceUuid match accessToken', () => __awaiter(void 0, void 0, void 0, function* () { const model = uuid_1.v4().slice(-16); const serial = uuid_1.v4().slice(-16); const deviceUuid = yield deviceService.getDeviceUuid({ model, serial }); const accessToken = uuid_1.v4(); const refreshToken = uuid_1.v4(); yield deviceService.saveDeviceTokens(deviceUuid.id, accessToken, refreshToken); const valid = yield deviceVerification.isDeviceTokenValid(deviceUuid.id, accessToken); expect(valid).toBeTruthy(); })); it('should be able to detect if deviceUuid doesnt match accessToken', () => __awaiter(void 0, void 0, void 0, function* () { const model = uuid_1.v4().slice(-16); const serial = uuid_1.v4().slice(-16); const deviceUuid = yield deviceService.getDeviceUuid({ model, serial }); const accessToken = uuid_1.v4(); const refreshToken = uuid_1.v4(); yield deviceService.saveDeviceTokens(deviceUuid.id, accessToken, refreshToken); const valid = yield deviceVerification.isDeviceTokenValid(deviceUuid.id, 'wrong access token'); expect(valid).toBeFalsy(); })); it('should be able to check access token', () => __awaiter(void 0, void 0, void 0, function* () { const model = uuid_1.v4().slice(-16); const serial = uuid_1.v4().slice(-16); const deviceUuid = yield deviceService.getDeviceUuid({ model, serial }); yield deviceService.saveEntity(deviceUuid.id, 'entity-uuid'); yield deviceService.saveDeviceTokens(deviceUuid.id, 'access-token', 'refresh-token'); yield deviceVerification.checkAccessToken('access-token'); yield expect(deviceVerification.checkAccessToken('unknown')).rejects.toThrowError(Error); })); it('should be able to find token without idToken', () => __awaiter(void 0, void 0, void 0, function* () { const model = uuid_1.v4().slice(-16); const serial = uuid_1.v4().slice(-16); const deviceUuid = yield deviceService.getDeviceUuid({ model, serial }); const accessToken = uuid_1.v4(); const refreshToken = uuid_1.v4(); yield deviceService.saveDeviceTokens(deviceUuid.id, accessToken, refreshToken); const valid = yield deviceVerification.isDeviceTokenValid(deviceUuid.id, accessToken, refreshToken); expect(valid).toBeTruthy(); })); it('should return true for valid pin', () => __awaiter(void 0, void 0, void 0, function* () { const model = uuid_1.v4().slice(-16); const serial = uuid_1.v4().slice(-16); const pin = '1023'; const deviceUuid = yield deviceService.getDeviceUuid({ model, serial }); yield deviceService.saveDevicePin(deviceUuid.id, pin); const valid = yield deviceVerification.isDevicePinValid(pin, deviceUuid.id); expect(valid).toBeTruthy(); })); it('should return false for incorrect pin', () => __awaiter(void 0, void 0, void 0, function* () { const model = uuid_1.v4().slice(-16); const serial = uuid_1.v4().slice(-16); const pin = '1023'; const invalidPin = '1123'; const deviceUuid = yield deviceService.getDeviceUuid({ model, serial }); yield deviceService.saveDevicePin(deviceUuid.id, pin); const valid = yield deviceVerification.isDevicePinValid(invalidPin, deviceUuid.id); expect(valid).toBeFalsy(); })); }); //# sourceMappingURL=deviceVerification.spec.js.map