wa-chat-server
Version:
Watson Assistant powered chat server
131 lines (130 loc) • 7.04 kB
JavaScript
;
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 });
exports.SchemaValidatorTest = void 0;
const index_1 = require("../../index");
const WAChatServerConfigMock_1 = require("../mock/WAChatServerConfigMock");
const ISessionConfig_1 = require("../../interface/ISessionConfig");
const SessionStorageFactoryMock_1 = require("../mock/SessionStorageFactoryMock");
class SchemaValidatorTest {
constructor() {
this.waChatServerConfig = new WAChatServerConfigMock_1.WAChatServerConfigMock();
}
defaultStorageTest() {
return __awaiter(this, void 0, void 0, function* () {
const waChatServer = new index_1.WAChatServer(this.waChatServerConfig);
it('default-no-config', () => __awaiter(this, void 0, void 0, function* () {
expect.assertions(1);
const sessionA = yield waChatServer.startSession('A');
const storageName = sessionA.config.storageName;
expect(storageName).toStrictEqual(ISessionConfig_1.SessionType.ProcessMemory);
}));
it('default-wrong-storage-name-config', () => __awaiter(this, void 0, void 0, function* () {
expect.assertions(1);
try {
yield waChatServer.startSession('A', { storageName: 'red' });
}
catch (error) {
expect(error).toBeInstanceOf(Error);
}
}));
});
}
oneCustomStorageTest() {
return __awaiter(this, void 0, void 0, function* () {
const mockStorage = 'mockStorage';
const waChatServer = new index_1.WAChatServer(this.waChatServerConfig);
waChatServer.addSessionStorageFactory(mockStorage, new SessionStorageFactoryMock_1.SessionStorageFactoryMock());
it('one-storage-no-config', () => __awaiter(this, void 0, void 0, function* () {
expect.assertions(1);
const sessionB = yield waChatServer.startSession('B');
const storageName = sessionB.config.storageName;
expect(storageName).toStrictEqual(mockStorage);
}));
it('one-storage-wrong-storage-name-config', () => __awaiter(this, void 0, void 0, function* () {
expect.assertions(1);
try {
yield waChatServer.startSession('B', { storageName: 'red' });
}
catch (error) {
expect(error).toBeInstanceOf(Error);
}
}));
it('one-storage-correct-storage-name-config', () => __awaiter(this, void 0, void 0, function* () {
expect.assertions(1);
const sessionB = yield waChatServer.startSession('B', { storageName: mockStorage });
const storageName = sessionB.config.storageName;
expect(storageName).toStrictEqual(mockStorage);
}));
});
}
twoCustomStoragesTest() {
return __awaiter(this, void 0, void 0, function* () {
const mockStorageA = 'mockStorageA';
const mockStorageB = 'mockStorageB';
const waChatServer = new index_1.WAChatServer(this.waChatServerConfig);
waChatServer.addSessionStorageFactory(mockStorageA, new SessionStorageFactoryMock_1.SessionStorageFactoryMock());
it('two-storages-same-name', () => __awaiter(this, void 0, void 0, function* () {
expect.assertions(1);
try {
waChatServer.addSessionStorageFactory(mockStorageA, new SessionStorageFactoryMock_1.SessionStorageFactoryMock());
}
catch (error) {
expect(error).toBeInstanceOf(Error);
}
}));
waChatServer.addSessionStorageFactory(mockStorageB, new SessionStorageFactoryMock_1.SessionStorageFactoryMock(), true);
it('two-storages-no-config', () => __awaiter(this, void 0, void 0, function* () {
expect.assertions(1);
const sessionA = yield waChatServer.startSession('A');
const storageName = sessionA.config.storageName;
expect(storageName).toStrictEqual(mockStorageB);
}));
it('two-storages-non-default', () => __awaiter(this, void 0, void 0, function* () {
expect.assertions(1);
const sessionB = yield waChatServer.startSession('B', { storageName: mockStorageA });
const storageName = sessionB.config.storageName;
expect(storageName).toStrictEqual(mockStorageA);
}));
});
}
singleUseStoragesTest() {
return __awaiter(this, void 0, void 0, function* () {
const mockStorageA = 'mockStorageA';
const mockStorageB = 'mockStorageB';
const waChatServer = new index_1.WAChatServer(this.waChatServerConfig);
waChatServer.addSessionStorageFactory(mockStorageA, new SessionStorageFactoryMock_1.SessionStorageFactoryMock({ allowForeignSessionIds: false }));
it('disable-foreign-session-ids-on-storage', () => __awaiter(this, void 0, void 0, function* () {
expect.assertions(1);
const sessionA = yield waChatServer.startSession('A');
const sessionId = sessionA.sessionId;
expect(sessionId.length).toStrictEqual(16);
}));
waChatServer.addSessionStorageFactory(mockStorageB, new SessionStorageFactoryMock_1.SessionStorageFactoryMock(), true);
it('disable-foreign-session-ids-on-session', () => __awaiter(this, void 0, void 0, function* () {
expect.assertions(1);
const sessionB = yield waChatServer.startSession('A', { allowForeignSessionIds: false });
const sessionId = sessionB.sessionId;
expect(sessionId.length).toStrictEqual(16);
}));
});
}
test() {
return __awaiter(this, void 0, void 0, function* () {
this.defaultStorageTest();
this.oneCustomStorageTest();
this.twoCustomStoragesTest();
this.singleUseStoragesTest();
});
}
}
exports.SchemaValidatorTest = SchemaValidatorTest;
new SchemaValidatorTest().test();