wa-chat-server-mluvii
Version:
Mluvii adapter for the modules wa-chat-server
100 lines (99 loc) • 4.31 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());
});
};
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();