UNPKG

cecula

Version:

NodeJS library for sending A2P and P2P SMS over the Cecula API

163 lines (139 loc) 5.45 kB
var mocha = require("mocha"); var describe = mocha.describe; var it = mocha.it; const assert = require("chai").assert; const cecula = require("../cecula"); // Sandbox API Key const sandboxApiKey = "CCL.7F9S1OWgCO4O-QB.5z5CuTFgNzjldhI8TQO2IQRF"; const messageObject = { origin: "CECULA", message: "In the lab", recipients: [ "2349090000246" ] }; describe("A2P SMS", () => { it("Verifying that API Key property is defined but empty", function () { assert.isEmpty(cecula.apiKey, "API Key exists"); }); it("API Request made without API Key returns object with code and error property", function () { cecula.getA2PBalance((data) => { assert.hasAllKeys(data, ["code", "error"]); }); }); it("Checking balance without callback returns null", function () { assert.isNull(cecula.getA2PBalance()); }); it("Test for none-existent endpoint", function () { cecula._sendRequest("account/a2pbalance", {}, "GET", 1) .then((resp) => { assert.instanceOf(resp, Error); }); }); it("Cecula returns 401 when API key is not submitted", function () { cecula.getA2PBalance((data) => { assert.equal(data.code, 401); }); }); // Test with Sandbox API Key it("API Key is 44 characters long", function () { assert.lengthOf(sandboxApiKey, 44); }); it("Balance property is returned when correct API Key is provided", function () { cecula.apiKey = sandboxApiKey; cecula.getA2PBalance((data) => { assert.hasAllKeys(data, ["balance"]); }); }); it("Missing fields during A2P Message sending returns error object", function () { cecula.apiKey = sandboxApiKey; cecula.sendA2PSMS({}, (data) => { assert.hasAllKeys(data, ["error", "code"]); }); }); it("Missing fields during A2P Message sending returns error code CE1001", function () { cecula.apiKey = sandboxApiKey; cecula.sendA2PSMS({}, (data) => { assert.equal(data.code, "CE1001"); }); }); it("Empty fields during A2P Message sending returns error code CE1002", function () { cecula.apiKey = sandboxApiKey; cecula.sendA2PSMS({ origin: "", message: "", recipients: [] }, (data) => { assert.equal(data.code, "CE1002"); }); }); it("Sender Names longer than 11 characters return CE1003", function () { cecula.apiKey = sandboxApiKey; let tooLongOriginMsg = messageObject; tooLongOriginMsg.origin = "CECULA ALCHEMY"; cecula.sendA2PSMS(tooLongOriginMsg, (data) => { assert.equal(data.code, "CE1003"); }); }); it("A2P SMS Sender Names must be alphabets or alphanumeric else return CE1004", function () { cecula.apiKey = sandboxApiKey; let tooLongOriginMsg = messageObject; tooLongOriginMsg.origin = "19827634"; cecula.sendA2PSMS(tooLongOriginMsg, (data) => { assert.equal(data.code, "CE1004"); }); }); it("A2P SMS message cannot exceed 10 pages", function () { let letters = "abcdefghijklmnopqrstuvwxyz "; let message = ""; const letterLength = letters.length; do { message += letters.charAt(Math.random() * letterLength); } while (message.length < 1531); cecula.apiKey = sandboxApiKey; let tooLongOriginMsg = messageObject; tooLongOriginMsg.message = message; cecula.sendA2PSMS(tooLongOriginMsg, (data) => { assert.equal(data.code, "CE1005"); }); }); it("Send A2P SMS without callback", function () { cecula.apiKey = sandboxApiKey; messageObject.origin = "LAB"; messageObject.message = "Hello World"; assert.isNull(cecula.sendA2PSMS(messageObject)); }); it("A2P SMS message is successfully sent", function () { cecula.apiKey = sandboxApiKey; messageObject.origin = "LAB"; messageObject.message = "Hello World"; cecula.sendA2PSMS(messageObject, (data) => { assert.hasAllKeys(data, ["status", "reference", "sentTo", "invalid", "declined", "declineReason", "code"]); }); }); }); describe("Sync Cloud", function () { it("Checking balance without callback returns null", function () { assert.isNull(cecula.getSyncCloudBalance()); }); it("Balance property is returned when correct API Key is provided", function () { cecula.apiKey = sandboxApiKey; cecula.getSyncCloudBalance({ "identity": "2349090000246" }, (data) => { assert.hasAllKeys(data, ["balance"]); }); }); it("Send P2P SMS without callback", function () { cecula.apiKey = sandboxApiKey; messageObject.origin = "2349090000246"; messageObject.message = "Hello World"; assert.isNull(cecula.sendP2PSMS(messageObject)); }); it("P2P SMS message is successfully sent", function () { cecula.apiKey = sandboxApiKey; messageObject.origin = "2349090000246"; messageObject.message = "Hello World"; cecula.sendP2PSMS(messageObject, (data) => { assert.hasAllKeys(data, ["status", "reference", "sentTo", "invalid", "declined", "declineReason", "code"]); }); }); });