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
JavaScript
"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);
});
});