UNPKG

wa-chat-server-mluvii

Version:

Mluvii adapter for the modules wa-chat-server

100 lines (99 loc) 4.31 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()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const querystring_1 = __importDefault(require("querystring")); const MluviiPublicAPI_1 = require("../../class/MluviiPublicAPI"); const LoggerMock_1 = require("../mock/LoggerMock"); const WatsonToMluviiConverterMock_1 = require("../mock/WatsonToMluviiConverterMock"); const SessionMock_1 = require("../mock/SessionMock"); const AxiosMock_1 = require("../mock/AxiosMock"); const WAChatServerMluviiConfigMock_1 = require("../mock/WAChatServerMluviiConfigMock"); class MluviiPublicAPITest { getApi(axios) { const log = new LoggerMock_1.LoggerMock(); const watsonToMluviiConverterClass = WatsonToMluviiConverterMock_1.WatsonToMluviiConverterMock; const config = new WAChatServerMluviiConfigMock_1.WAChatServerMluviiConfigMock(); const dependencies = { log, axios, watsonToMluviiConverterClass }; return new MluviiPublicAPI_1.MluviiPublicAPI(config, dependencies); } getTokenRequest() { return { method: 'post', url: 'TOKEN_URL', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, data: querystring_1.default.stringify({ response_type: 'token', grant_type: 'client_credentials', client_id: 'USER', client_secret: 'SECRET', }), }; } getTokenResponse() { return { data: { access_token: 'TOKEN', expires_in: 3600, }, }; } getMessageRequest(date, activity) { const timestamp = date.toISOString(); return { method: 'post', headers: { 'Content-Type': 'application/json', Authorization: 'Bearer TOKEN', }, url: 'SEND_MESSAGE_URL/ID/activity', data: Object.assign(Object.assign({ sessionId: 'SESSION_ID' }, activity), { timestamp }), }; } messageTest() { return __awaiter(this, void 0, void 0, function* () { it('message-with-more-parts', () => __awaiter(this, void 0, void 0, function* () { const activities = [{ a1: 'A1' }, { a2: 'A2' }]; const date = new Date('2020-01-10T00:00:00'); const time = date.getTime(); const calls = [ { request: this.getTokenRequest(), response: this.getTokenResponse(), }, ]; activities.forEach((activity, index) => { calls.push({ request: this.getMessageRequest(new Date(time + index), activity), response: {}, }); }); const axios = new AxiosMock_1.AxiosMock(calls); const api = this.getApi(axios.axios.bind(axios)); expect.assertions(3); yield api.getAccessToken(); // because of coverage const session = new SessionMock_1.SessionMock(); yield api.sendMessage('SESSION_ID', { activities }, session, date); axios.end(); })); }); } test() { return __awaiter(this, void 0, void 0, function* () { yield this.messageTest(); }); } } new MluviiPublicAPITest().test();