UNPKG

ddd-tool-kit

Version:

A development tool kit for using Domain Driven Design in your Web API Node.js

58 lines (57 loc) 3.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ip_errors_1 = require("../../../implementations/value-objects/ip/ip.errors"); const session_entity_1 = require("../../../implementations/entities/session/session.entity"); const id_value_object_1 = require("../../../implementations/value-objects/id/id.value-object"); const ip_value_object_1 = require("../../../implementations/value-objects/ip/ip.value-object"); const session_errors_1 = require("../../../implementations/entities/session/session.errors"); const date_value_object_1 = require("../../../implementations/value-objects/date/date.value-object"); describe('user-session.entity.spec', () => { it('should be defined', () => { const expiresAt = date_value_object_1.DateValueObject.getDefault(); expiresAt.addDays(30); const initEntity = session_entity_1.SessionEntity.init({ expiresAt, ip: ip_value_object_1.IpValueObject.init({ value: '203.0.113.1' }).result, }); const entity = initEntity.result; expect(initEntity.isSuccess).toBeTruthy(); expect(entity).toBeInstanceOf(session_entity_1.SessionEntity); expect(entity.id).toBeInstanceOf(id_value_object_1.IdValueObject); expect(entity.ip).toBeInstanceOf(ip_value_object_1.IpValueObject); expect(entity.expiresAt).toBeInstanceOf(date_value_object_1.DateValueObject); expect(entity.loggedAt).toBeInstanceOf(date_value_object_1.DateValueObject); }); it('should fail if some required prop is not pass', () => { const initUserSession = session_entity_1.SessionEntity.init({}); expect(initUserSession.isFailure).toBeTruthy(); expect(initUserSession.result).toEqual(session_errors_1.INVALID_SESSION); }); it('should renew to 30 days', () => { const expiresAt = date_value_object_1.DateValueObject.getDefault(); const session = session_entity_1.SessionEntity.init({ expiresAt, ip: ip_value_object_1.IpValueObject.init({ value: '203.0.113.1' }).result, }).result; expect(session.expiresAt).toEqual(expiresAt); const oldSessionId = session.id; const renew = session.renew('203.0.113.1'); expect(renew.isSuccess).toBeTruthy(); const newSessionId = renew.result; const isDifferentSessionId = !newSessionId.equals(oldSessionId); expect(isDifferentSessionId).toBeTruthy(); const differenceInDays = session.expiresAt.differenceInDays(expiresAt); expect(differenceInDays).toBe(30); expect(session.expiresAt).not.toEqual(expiresAt); }); it('should fail renew if is invalid ip', () => { const expiresAt = date_value_object_1.DateValueObject.getDefault(); const session = session_entity_1.SessionEntity.init({ expiresAt, ip: ip_value_object_1.IpValueObject.init({ value: '203.0.113.1' }).result, }).result; const renew = session.renew('invalid ip'); expect(renew.isFailure).toBeTruthy(); expect(renew.result).toEqual(ip_errors_1.INVALID_IP); }); });