boldsign
Version:
NodeJS client for boldsign
966 lines • 78.4 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
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 templateApi_1 = require("../../api/templateApi");
const brandingApi_1 = require("../../api/brandingApi");
const model_1 = require("../../model");
const fs = __importStar(require("fs"));
const config_1 = __importDefault(require("../config"));
describe('Template API Test suite', () => {
let brandingApi;
let templateApi;
let brandId;
let createdTemplateId;
let createdTemplateId1;
let createdTemplateId2;
let createdTemplateId3;
let createdTemplateId4;
beforeAll(() => {
brandId = null;
createdTemplateId = null;
createdTemplateId1 = null;
createdTemplateId2 = null;
createdTemplateId3 = null;
createdTemplateId4 = null;
const apiKey = config_1.default.apiKey;
const baseUrl = config_1.default.baseUrl;
if (!baseUrl || !apiKey) {
throw new Error("Environment variables 'HOST_URL' or 'API_KEY' are not set.");
}
templateApi = new templateApi_1.TemplateApi(baseUrl);
templateApi.setApiKey(apiKey);
brandingApi = new brandingApi_1.BrandingApi(baseUrl);
brandingApi.setApiKey(apiKey);
});
test('Test1:should create a brand successfully', () => __awaiter(void 0, void 0, void 0, function* () {
const brandName = "NodeSDK";
const brandLogo = fs.createReadStream("tests/documents/logo.jpg");
try {
const createBrandApiResponse = yield brandingApi.createBrand(brandName, brandLogo);
console.log("Brand created successfully:", createBrandApiResponse.brandId);
brandId = createBrandApiResponse.brandId;
expect(createBrandApiResponse).toBeDefined();
}
catch (error) {
console.log("Error occurred while creating the brand:", error);
expect(error).toBeUndefined();
}
}), 20000);
test('Test2: should create a template successfully with signer and signer email', () => __awaiter(void 0, void 0, void 0, function* () {
const signatureField = new model_1.FormField();
signatureField.fieldType = model_1.FormField.FieldTypeEnum.Signature;
signatureField.pageNumber = 1;
const bounds = new model_1.Rectangle();
bounds.x = 50;
bounds.y = 100;
bounds.width = 150;
bounds.height = 50;
signatureField.bounds = bounds;
const role = new model_1.TemplateRole();
role.index = 1;
role.name = "Signer";
role.defaultSignerName = "John Doe";
role.defaultSignerEmail = "johndoe@example.com";
role.signerOrder = 1;
role.signerType = model_1.TemplateRole.SignerTypeEnum.Signer;
role.formFields = [signatureField];
const createTemplateRequest = new model_1.CreateTemplateRequest();
createTemplateRequest.title = "Testing node sdk";
createTemplateRequest.description = "Testing integration test case";
createTemplateRequest.documentTitle = "Node sdk test case";
createTemplateRequest.documentMessage = "Please check and sign";
createTemplateRequest.roles = [role];
createTemplateRequest.enableReassign = true;
createTemplateRequest.enableSigningOrder = true;
createTemplateRequest.allowNewRoles = true;
createTemplateRequest.allowMessageEditing = true;
createTemplateRequest.allowNewFiles = true;
const documentFile = fs.createReadStream("tests/documents/agreement.pdf");
createTemplateRequest.files = [documentFile];
try {
const response = yield templateApi.createTemplate(createTemplateRequest);
console.log("Template created successfully:", response);
createdTemplateId = response.templateId;
console.log("Created Template ID: ", createdTemplateId);
}
catch (error) {
console.log("Error occurred while calling the API:", error.message);
expect(error.message).toBeUndefined();
}
}), 20000);
test('Test3:Create template with existing brand ID', () => __awaiter(void 0, void 0, void 0, function* () {
const signatureField = new model_1.FormField();
signatureField.fieldType = model_1.FormField.FieldTypeEnum.Signature;
signatureField.pageNumber = 1;
signatureField.bounds = { x: 50, y: 100, width: 150, height: 50 };
const role = new model_1.TemplateRole();
role.index = 1;
role.name = "Signer";
role.defaultSignerName = "John Doe";
role.defaultSignerEmail = "johndoe@example.com";
role.signerOrder = 1;
role.signerType = model_1.TemplateRole.SignerTypeEnum.Signer;
role.formFields = [signatureField];
const createTemplateRequest = new model_1.CreateTemplateRequest();
createTemplateRequest.title = "Template with Brand";
createTemplateRequest.description = "Created with brand ID";
createTemplateRequest.documentTitle = "Brand Template";
createTemplateRequest.documentMessage = "Please sign this";
createTemplateRequest.roles = [role];
createTemplateRequest.enableReassign = true;
createTemplateRequest.enableSigningOrder = true;
createTemplateRequest.allowNewRoles = true;
createTemplateRequest.allowMessageEditing = true;
createTemplateRequest.allowNewFiles = true;
createTemplateRequest.brandId = brandId;
createTemplateRequest.files = [fs.createReadStream("tests/documents/agreement.pdf")];
try {
const response = yield templateApi.createTemplate(createTemplateRequest);
console.log("Template created:", response.templateId);
}
catch (error) {
console.error("Error creating template:", error);
expect(error).toBeUndefined();
}
}), 20000);
test('Test4: should create a template with form field', () => __awaiter(void 0, void 0, void 0, function* () {
const signatureField = new model_1.FormField();
signatureField.fieldType = model_1.FormField.FieldTypeEnum.Signature;
signatureField.pageNumber = 1;
const bounds = new model_1.Rectangle();
bounds.x = 50;
bounds.y = 100;
bounds.width = 100;
bounds.height = 60;
signatureField.bounds = bounds;
const formFields = [signatureField];
const templateRole = new model_1.TemplateRole();
templateRole.index = 1;
templateRole.name = "Hr";
templateRole.defaultSignerName = "Divya";
templateRole.defaultSignerEmail = "divya.boopathy+8@syncfusion.com";
templateRole.signerOrder = 1;
templateRole.signerType = model_1.TemplateRole.SignerTypeEnum.Signer;
templateRole.locale = model_1.TemplateRole.LocaleEnum.En;
templateRole.formFields = formFields;
templateRole.allowRoleEdit = true;
templateRole.allowRoleDelete = true;
const roles = [templateRole];
const createTemplateRequest = new model_1.CreateTemplateRequest();
createTemplateRequest.enableReassign = true;
createTemplateRequest.allowNewRoles = true;
createTemplateRequest.enablePrintAndSign = false;
createTemplateRequest.documentMessage = "document message for signers";
createTemplateRequest.enableSigningOrder = false;
createTemplateRequest.useTextTags = false;
createTemplateRequest.title = "title of the template";
createTemplateRequest.allowMessageEditing = true;
createTemplateRequest.description = "testingDescription";
createTemplateRequest.documentTitle = "title of the document";
createTemplateRequest.allowNewFiles = true;
createTemplateRequest.roles = roles;
const documentFile = fs.createReadStream("tests/documents/agreement.pdf");
createTemplateRequest.files = [documentFile];
try {
const response = yield templateApi.createTemplate(createTemplateRequest);
console.log("Template created successfully:", response);
createdTemplateId1 = response.templateId;
console.log("Created Template ID:", createdTemplateId1);
expect(response).toBeDefined();
}
catch (error) {
console.error("Error occurred while calling the API:", error.message);
expect(error.message).toBeUndefined();
}
}), 20000);
test('Test5: should create a template with multiple roles successfully', () => __awaiter(void 0, void 0, void 0, function* () {
const signatureField = new model_1.FormField();
signatureField.fieldType = model_1.FormField.FieldTypeEnum.Signature;
signatureField.pageNumber = 1;
const bounds = new model_1.Rectangle();
bounds.x = 50;
bounds.y = 100;
bounds.width = 100;
bounds.height = 60;
signatureField.bounds = bounds;
const formFields = [signatureField];
const roles = [];
for (let i = 1; i <= 15; i++) {
const templateRole = new model_1.TemplateRole();
templateRole.index = i;
templateRole.name = `Role ${i}`;
templateRole.signerOrder = i;
templateRole.signerType = model_1.TemplateRole.SignerTypeEnum.Signer;
templateRole.locale = model_1.TemplateRole.LocaleEnum.En;
templateRole.formFields = formFields;
templateRole.allowRoleEdit = true;
templateRole.allowRoleDelete = true;
roles.push(templateRole);
}
const createTemplateRequest = new model_1.CreateTemplateRequest();
createTemplateRequest.enableReassign = true;
createTemplateRequest.allowNewRoles = true;
createTemplateRequest.enablePrintAndSign = false;
createTemplateRequest.documentMessage = "document message for signers";
createTemplateRequest.enableSigningOrder = true;
createTemplateRequest.useTextTags = false;
createTemplateRequest.title = "Template with 15 Roles";
createTemplateRequest.allowMessageEditing = true;
createTemplateRequest.description = "This is a template with 15 roles.";
createTemplateRequest.documentTitle = "Multi-role template";
createTemplateRequest.allowNewFiles = true;
createTemplateRequest.roles = roles;
const documentFile = fs.createReadStream("tests/documents/agreement.pdf");
createTemplateRequest.files = [documentFile];
try {
const response = yield templateApi.createTemplate(createTemplateRequest);
console.log("Template created successfully:", response);
createdTemplateId2 = response.templateId;
console.log("Created Template ID:", createdTemplateId2);
expect(response).toBeDefined();
}
catch (error) {
console.error("Error occurred while calling the API:", error.message);
expect(error.message).toBeUndefined();
}
}), 20000);
test('Test6: should create a template with multiple files successfully', () => __awaiter(void 0, void 0, void 0, function* () {
const signatureField = new model_1.FormField();
signatureField.fieldType = model_1.FormField.FieldTypeEnum.Signature;
signatureField.pageNumber = 1;
const bounds = new model_1.Rectangle();
bounds.x = 50;
bounds.y = 100;
bounds.width = 100;
bounds.height = 60;
signatureField.bounds = bounds;
const formFields = [signatureField];
const templateRole = new model_1.TemplateRole();
templateRole.index = 1;
templateRole.name = "Hr";
templateRole.defaultSignerName = "Divya";
templateRole.defaultSignerEmail = "divya.boopathy+25@syncfusion.com";
templateRole.signerOrder = 1;
templateRole.signerType = model_1.TemplateRole.SignerTypeEnum.Signer;
templateRole.locale = model_1.TemplateRole.LocaleEnum.En;
templateRole.formFields = formFields;
templateRole.allowRoleEdit = true;
templateRole.allowRoleDelete = true;
const roles = [templateRole];
const createTemplateRequest = new model_1.CreateTemplateRequest();
createTemplateRequest.enableReassign = true;
createTemplateRequest.allowNewRoles = true;
createTemplateRequest.enablePrintAndSign = false;
createTemplateRequest.documentMessage = "document message for signers";
createTemplateRequest.enableSigningOrder = false;
createTemplateRequest.useTextTags = false;
createTemplateRequest.title = "title of the template";
createTemplateRequest.allowMessageEditing = true;
createTemplateRequest.description = "testingDescription";
createTemplateRequest.documentTitle = "title of the document";
createTemplateRequest.allowNewFiles = true;
createTemplateRequest.roles = roles;
const files = [
fs.createReadStream("tests/documents/agreement.pdf"),
fs.createReadStream("tests/documents/agreement.pdf"),
fs.createReadStream("tests/documents/agreement.pdf")
];
createTemplateRequest.files = files;
try {
const response = yield templateApi.createTemplate(createTemplateRequest);
console.log("Template created successfully:", response);
createdTemplateId3 = response.templateId;
console.log("Created Template ID:", createdTemplateId3);
expect(response).toBeDefined();
}
catch (error) {
console.log("Error occurred while calling the API:", error.message);
expect(error.message).toBeUndefined();
}
}), 20000);
test('Test7: should create a template with image form field successfully', () => __awaiter(void 0, void 0, void 0, function* () {
const imageField = new model_1.FormField();
imageField.name = "image";
imageField.id = "Image1";
imageField.fieldType = model_1.FormField.FieldTypeEnum.Image;
imageField.font = model_1.FormField.FontEnum.Helvetica;
imageField.pageNumber = 1;
imageField.isRequired = true;
imageField.imageInfo = new model_1.ImageInfo();
imageField.imageInfo.title = "Image Test";
imageField.imageInfo.allowedFileExtensions = ".png";
imageField.imageInfo.description = "Image for testing";
const bounds = new model_1.Rectangle();
bounds.x = 50;
bounds.y = 50;
bounds.width = 100;
bounds.height = 150;
imageField.bounds = bounds;
const role = new model_1.TemplateRole();
role.index = 1;
role.name = "Signer";
role.signerType = model_1.TemplateRole.SignerTypeEnum.Signer;
role.defaultSignerEmail = "john.doe@example.com";
role.defaultSignerName = "John Doe";
role.signerOrder = 1;
role.formFields = [imageField];
const createTemplateRequest = new model_1.CreateTemplateRequest();
createTemplateRequest.title = "New Template";
createTemplateRequest.documentTitle = "node_test_template_with_image_field";
createTemplateRequest.description = "This is a new template.";
createTemplateRequest.files = [fs.createReadStream("tests/documents/agreement.pdf")];
createTemplateRequest.roles = [role];
createTemplateRequest.allowMessageEditing = true;
createTemplateRequest.allowNewRoles = true;
createTemplateRequest.allowNewFiles = true;
createTemplateRequest.enableReassign = true;
createTemplateRequest.enablePrintAndSign = false;
createTemplateRequest.enableSigningOrder = true;
try {
const response = yield templateApi.createTemplate(createTemplateRequest);
console.log("Template with image field created successfully:", response);
createdTemplateId4 = response.templateId;
console.log("Created Template ID (Image Field):", createdTemplateId4);
}
catch (error) {
console.error("Error occurred while creating template with image field:", error);
expect(error).toBeUndefined();
}
}), 20000);
test('Test8: should fail to create a template with duplicate role index', () => __awaiter(void 0, void 0, void 0, function* () {
var _a, _b, _c;
const role1 = new model_1.TemplateRole();
role1.index = 1;
role1.name = "Signer1";
role1.signerType = model_1.TemplateRole.SignerTypeEnum.Signer;
role1.signerOrder = 1;
role1.locale = model_1.TemplateRole.LocaleEnum.En;
role1.imposeAuthentication = model_1.TemplateRole.ImposeAuthenticationEnum.EmailOtp;
role1.deliveryMode = model_1.TemplateRole.DeliveryModeEnum.Email;
role1.allowFieldConfiguration = true;
role1.allowRoleEdit = true;
role1.allowRoleDelete = true;
const role2 = new model_1.TemplateRole();
role2.index = 2;
role2.name = "Reviewer1";
role2.signerType = model_1.TemplateRole.SignerTypeEnum.Reviewer;
role2.signerOrder = 2;
role2.locale = model_1.TemplateRole.LocaleEnum.En;
role2.imposeAuthentication = model_1.TemplateRole.ImposeAuthenticationEnum.None;
role2.deliveryMode = model_1.TemplateRole.DeliveryModeEnum.Email;
role2.allowFieldConfiguration = false;
role2.allowRoleEdit = true;
role2.allowRoleDelete = true;
const role3 = new model_1.TemplateRole();
role3.index = 2;
role3.name = "InPersonSigner1";
role3.signerType = model_1.TemplateRole.SignerTypeEnum.Reviewer;
role3.signerOrder = 3;
role3.locale = model_1.TemplateRole.LocaleEnum.En;
role3.imposeAuthentication = model_1.TemplateRole.ImposeAuthenticationEnum.AccessCode;
role3.deliveryMode = model_1.TemplateRole.DeliveryModeEnum.Email;
role3.allowFieldConfiguration = false;
role3.allowRoleEdit = true;
role3.allowRoleDelete = true;
const createTemplateRequest = new model_1.CreateTemplateRequest();
createTemplateRequest.title = "Duplicate Role Index Test";
createTemplateRequest.documentTitle = "node_test_template_duplicate_index";
createTemplateRequest.description = "Template with duplicate role index.";
createTemplateRequest.files = [
fs.createReadStream("tests/documents/agreement.pdf"),
fs.createReadStream("tests/documents/agreement.pdf")
];
createTemplateRequest.roles = [role1, role2, role3];
createTemplateRequest.allowMessageEditing = true;
createTemplateRequest.allowNewRoles = true;
createTemplateRequest.allowNewFiles = true;
createTemplateRequest.enableReassign = true;
createTemplateRequest.enablePrintAndSign = false;
createTemplateRequest.enableSigningOrder = true;
try {
const response = yield templateApi.createTemplate(createTemplateRequest);
console.error("Unexpected success, test should have failed due to duplicate role index.", response.body);
throw new Error("Test failed: Expected error due to duplicate role index.");
}
catch (error) {
console.log("Expected error occurred due to duplicate role index:", ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error.message);
expect((_b = error.response) === null || _b === void 0 ? void 0 : _b.status).toBe(400);
expect((_c = error.response) === null || _c === void 0 ? void 0 : _c.statusText).toBe("Bad Request");
}
}), 20000);
test('Test9: should fail to create template due to missing document title', () => __awaiter(void 0, void 0, void 0, function* () {
var _a, _b;
const signatureField = new model_1.FormField();
signatureField.fieldType = model_1.FormField.FieldTypeEnum.Signature;
signatureField.pageNumber = 1;
signatureField.bounds = { x: 50, y: 100, width: 150, height: 50 };
const role = new model_1.TemplateRole();
role.index = 1;
role.name = "Signer";
role.defaultSignerName = "John Doe";
role.defaultSignerEmail = "johndoe@example.com";
role.signerOrder = 1;
role.signerType = model_1.TemplateRole.SignerTypeEnum.Signer;
role.formFields = [signatureField];
const createTemplateRequest = new model_1.CreateTemplateRequest();
createTemplateRequest.title = "Missing Document Title Test";
createTemplateRequest.description = "Should fail due to missing document title";
createTemplateRequest.documentMessage = "Please check and sign";
createTemplateRequest.roles = [role];
createTemplateRequest.files = [fs.createReadStream("tests/documents/agreement.pdf")];
try {
yield templateApi.createTemplate(createTemplateRequest);
throw new Error("Test failed: API should have thrown an error due to missing document title.");
}
catch (error) {
console.log("Expected error received:", ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error.message);
expect(error.response).toBeDefined();
expect((_b = error.response) === null || _b === void 0 ? void 0 : _b.status).toBe(400);
expect(error.response.statusText).toBe("Bad Request");
}
}), 20000);
test('Test10: should fail to create template due to empty roles array', () => __awaiter(void 0, void 0, void 0, function* () {
var _a, _b;
const createTemplateRequest = new model_1.CreateTemplateRequest();
createTemplateRequest.title = "Template without roles";
createTemplateRequest.description = "This template should fail due to no roles";
createTemplateRequest.documentTitle = "Missing roles test case";
createTemplateRequest.documentMessage = "Please check and sign";
createTemplateRequest.roles = [];
const documentFile = fs.createReadStream("tests/documents/agreement.pdf");
createTemplateRequest.files = [documentFile];
try {
yield templateApi.createTemplate(createTemplateRequest);
throw new Error("Test failed: API should have thrown an error due to empty roles.");
}
catch (error) {
console.log("Expected error for empty roles array:", ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error.message);
expect(error.response).toBeDefined();
expect((_b = error.response) === null || _b === void 0 ? void 0 : _b.status).toBe(400);
expect(error.response.statusText).toBe("Bad Request");
}
}), 20000);
test('Test11: should fail to create a template with empty title', () => __awaiter(void 0, void 0, void 0, function* () {
var _a, _b;
const signatureField = new model_1.FormField();
signatureField.fieldType = model_1.FormField.FieldTypeEnum.Signature;
signatureField.pageNumber = 1;
const bounds = new model_1.Rectangle();
bounds.x = 50;
bounds.y = 100;
bounds.width = 150;
bounds.height = 50;
signatureField.bounds = bounds;
const role = new model_1.TemplateRole();
role.index = 1;
role.name = "Signer";
role.defaultSignerName = "John Doe";
role.defaultSignerEmail = "johndoe@example.com";
role.signerOrder = 1;
role.signerType = model_1.TemplateRole.SignerTypeEnum.Signer;
role.formFields = [signatureField];
const createTemplateRequest = new model_1.CreateTemplateRequest();
createTemplateRequest.title = "";
createTemplateRequest.description = "Testing integration test case";
createTemplateRequest.documentTitle = "Node sdk test case";
createTemplateRequest.documentMessage = "Please check and sign";
createTemplateRequest.roles = [role];
createTemplateRequest.enableReassign = true;
createTemplateRequest.enableSigningOrder = true;
createTemplateRequest.allowNewRoles = true;
createTemplateRequest.allowMessageEditing = true;
createTemplateRequest.allowNewFiles = true;
const documentFile = fs.createReadStream("tests/documents/agreement.pdf");
createTemplateRequest.files = [documentFile];
try {
yield templateApi.createTemplate(createTemplateRequest);
throw new Error("Test failed: API should have thrown an error due to empty title.");
}
catch (error) {
console.log("Expected error for empty title:", ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error.message);
expect(error.response).toBeDefined();
expect((_b = error.response) === null || _b === void 0 ? void 0 : _b.status).toBe(400);
expect(error.response.statusText).toBe("Bad Request");
}
}), 20000);
test('Test12: should fail to create a template with form field invalid signer email', () => __awaiter(void 0, void 0, void 0, function* () {
var _a;
const signatureField = new model_1.FormField();
signatureField.fieldType = model_1.FormField.FieldTypeEnum.Signature;
signatureField.pageNumber = 1;
const bounds = new model_1.Rectangle();
bounds.x = 50;
bounds.y = 100;
bounds.width = 100;
bounds.height = 60;
signatureField.bounds = bounds;
const formFields = [signatureField];
const templateRole = new model_1.TemplateRole();
templateRole.index = 1;
templateRole.name = "Hr";
templateRole.defaultSignerName = "Divya";
templateRole.defaultSignerEmail = "invalid-email";
templateRole.signerOrder = 1;
templateRole.signerType = model_1.TemplateRole.SignerTypeEnum.Signer;
templateRole.locale = model_1.TemplateRole.LocaleEnum.En;
templateRole.formFields = formFields;
templateRole.allowRoleEdit = true;
templateRole.allowRoleDelete = true;
const roles = [templateRole];
const createTemplateRequest = new model_1.CreateTemplateRequest();
createTemplateRequest.enableReassign = true;
createTemplateRequest.allowNewRoles = true;
createTemplateRequest.enablePrintAndSign = false;
createTemplateRequest.documentMessage = "document message for signers";
createTemplateRequest.enableSigningOrder = false;
createTemplateRequest.useTextTags = false;
createTemplateRequest.title = "title of the template";
createTemplateRequest.allowMessageEditing = true;
createTemplateRequest.description = "testingDescription";
createTemplateRequest.documentTitle = "title of the document";
createTemplateRequest.allowNewFiles = true;
createTemplateRequest.roles = roles;
const documentFile = fs.createReadStream("tests/documents/agreement.pdf");
createTemplateRequest.files = [documentFile];
try {
const response = yield templateApi.createTemplate(createTemplateRequest);
console.error("Unexpected success:", response);
throw new Error("Template creation should have failed due to invalid email");
}
catch (error) {
console.log("Expected error for invalid email:", ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error.message);
expect(error.response).toBeDefined();
expect(error.response.status).toBe(400);
expect(error.response.statusText).toBe("Bad Request");
}
}), 20000);
test('Test13:should edit a template successfully', () => __awaiter(void 0, void 0, void 0, function* () {
const editTemplateRequest = new model_1.EditTemplateRequest();
editTemplateRequest.title = "Updated NodesdkTesting";
editTemplateRequest.description = "Updated description for the template";
editTemplateRequest.documentMessage = "Updated document message for signers";
editTemplateRequest.enableReassign = true;
try {
const response = yield templateApi.editTemplate(createdTemplateId, editTemplateRequest);
console.log("Template edited successfully:", response);
}
catch (error) {
console.log("Error occurred while calling the API:", error.message);
expect(error.message).toBeUndefined();
}
}), 20000);
test('Test14:should fail to edit a template with invalid template ID', () => __awaiter(void 0, void 0, void 0, function* () {
const editTemplateRequest = new model_1.EditTemplateRequest();
editTemplateRequest.title = "Updated NodesdkTesting";
editTemplateRequest.description = "Updated description for the template";
editTemplateRequest.documentMessage = "Updated document message for signers";
editTemplateRequest.enableReassign = true;
const invalidTemplateId = "invalid-template-id";
try {
const response = yield templateApi.editTemplate(invalidTemplateId, editTemplateRequest);
console.error("Unexpected success response:", response);
throw new Error("Test failed, template edit should not succeed with invalid template ID");
}
catch (error) {
console.log("Error occurred while calling the API:", error.message);
}
}), 20000);
test('Test15: should fail to edit a template with empty title', () => __awaiter(void 0, void 0, void 0, function* () {
var _a;
const editTemplateRequest = new model_1.EditTemplateRequest();
editTemplateRequest.title = "";
editTemplateRequest.description = "Updated description for the template";
editTemplateRequest.documentMessage = "Updated document message for signers";
editTemplateRequest.enableReassign = true;
const validTemplateId = "valid-template-id";
try {
const response = yield templateApi.editTemplate(validTemplateId, editTemplateRequest);
console.error("Unexpected success response:", response);
throw new Error("Test failed, template edit should not succeed with empty title");
}
catch (error) {
console.log("Expected error occurred for empty title:", ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || error.message);
expect(error.response).toBeDefined();
expect(error.response.status).toBe(403);
expect(error.response.statusText).toBe("Forbidden");
}
}), 20000);
test('Test16:should add tag to template successfully', () => __awaiter(void 0, void 0, void 0, function* () {
const addTag = new model_1.TemplateTag();
addTag.templateId = createdTemplateId;
addTag.documentLabels = ["test", "api"];
addTag.templateLabels = ["test", "api"];
try {
const response = yield templateApi.addTag(addTag);
console.log("Tag added successfully:", response);
}
catch (error) {
console.log("Error occurred while calling the API:", error.message);
expect(error.message).toBeUndefined();
}
}), 20000);
test('Test17: should fail to add tag to template with invalid template ID', () => __awaiter(void 0, void 0, void 0, function* () {
const addTag = new model_1.TemplateTag();
addTag.templateId = "INVALID_TEMPLATE_ID";
addTag.documentLabels = ["test", "api"];
addTag.templateLabels = ["test", "api"];
try {
const response = yield templateApi.addTag(addTag);
console.error("Unexpected success response:", response);
throw new Error("Test failed, tag should not have been added with invalid template ID");
}
catch (error) {
console.log("Error occurred while calling the API:", error.message);
expect(error.message).toBeDefined();
}
}), 20000);
test('Test18: should fail to add tag to template with empty document labels and template labels', () => __awaiter(void 0, void 0, void 0, function* () {
const addTag = new model_1.TemplateTag();
addTag.templateId = createdTemplateId;
addTag.documentLabels = [];
addTag.templateLabels = [];
try {
const response = yield templateApi.addTag(addTag);
console.error("Unexpected success response:", response);
throw new Error("Test failed, tag should not have been added with empty document labels and template labels");
}
catch (error) {
console.log("Error occurred while calling the API:", error.message);
expect(error.message).toBeDefined();
}
}), 20000);
test('Test19: should delete tag from template successfully', () => __awaiter(void 0, void 0, void 0, function* () {
const deleteTag = new model_1.TemplateTag();
deleteTag.templateId = createdTemplateId;
deleteTag.documentLabels = ["test", "api"];
deleteTag.templateLabels = ["test", "api"];
try {
const response = yield templateApi.deleteTag(deleteTag);
console.log("Tag deleted successfully:", response);
}
catch (error) {
console.error("Error occurred while calling the API:", error.message);
expect(error.message).toBeUndefined();
}
}), 20000);
test('Test20: should fail to delete tag from template with invalid template ID', () => __awaiter(void 0, void 0, void 0, function* () {
const deleteTag = new model_1.TemplateTag();
deleteTag.templateId = "INVALID_TEMPLATE_ID";
deleteTag.documentLabels = ["test", "api"];
deleteTag.templateLabels = ["test", "api"];
try {
const response = yield templateApi.deleteTag(deleteTag);
console.error("Unexpected success response:", response);
throw new Error("Test failed, tag should not have been deleted with invalid template ID");
}
catch (error) {
console.log("Error occurred while calling the API:", error.message);
expect(error.message).toBeDefined();
}
}), 20000);
test('Test21: should fail to delete tag from template with valid template ID and empty labels', () => __awaiter(void 0, void 0, void 0, function* () {
const deleteTag = new model_1.TemplateTag();
deleteTag.templateId = createdTemplateId;
deleteTag.documentLabels = [];
deleteTag.templateLabels = [];
try {
const response = yield templateApi.deleteTag(deleteTag);
console.error("Unexpected success response:", response);
throw new Error("Test failed, tag should not have been deleted with empty labels");
}
catch (error) {
console.log("Error occurred while calling the API:", error.message);
expect(error.message).toBeDefined();
}
}), 20000);
test('Test22: should retrieve template properties successfully', () => __awaiter(void 0, void 0, void 0, function* () {
try {
const response = yield templateApi.getProperties(createdTemplateId);
console.log("Template Properties:", response);
expect(response).toBeDefined();
}
catch (error) {
console.log("Error occurred while calling the API:", error.message);
expect(error.message).toBeUndefined();
}
}), 20000);
test('Test23: should fail to retrieve template properties with invalid template ID', () => __awaiter(void 0, void 0, void 0, function* () {
const invalidTemplateId = "INVALID_TEMPLATE_ID";
try {
const response = yield templateApi.getProperties(invalidTemplateId);
console.error("Unexpected success response:", response);
throw new Error("Test failed, API should have thrown an error for invalid template ID");
}
catch (error) {
console.log("Error occurred while calling the API:", error.message);
}
}), 20000);
test('Test24: should fail to retrieve template properties with empty template', () => __awaiter(void 0, void 0, void 0, function* () {
const templateId = "";
try {
const response = yield templateApi.getProperties(templateId);
console.error("Unexpected success response:", response);
throw new Error("Test failed, API should have thrown an error for invalid template ID");
}
catch (error) {
console.log("Error occurred while calling the API:", error);
expect(error.response.status).toBe(400);
expect(error.response.statusText).toBe("Bad Request");
}
}), 20000);
test('Test25:should download template successfully', () => __awaiter(void 0, void 0, void 0, function* () {
try {
console.log("Created Template ID:", createdTemplateId1);
const response = yield templateApi.download(createdTemplateId);
console.log("Template downloaded successfully:", response);
expect(response).toBeDefined();
}
catch (error) {
console.log("Error occurred while calling the API:", error.message);
expect(error.message).toBeUndefined();
}
}), 20000);
test('Test26:should fail to download template with invalid template ID', () => __awaiter(void 0, void 0, void 0, function* () {
const invalidTemplateId = "invalid-template-id";
try {
const response = yield templateApi.download(invalidTemplateId);
console.error("Unexpected success response:", response);
throw new Error("Test failed, template download should not succeed with an invalid template ID");
}
catch (error) {
console.log("Error occurred while calling the API:", error.message);
expect(error.message).toBeDefined();
}
}), 20000);
test('Test27: should send document for signing using template', () => __awaiter(void 0, void 0, void 0, function* () {
const formField = new model_1.FormField();
formField.fieldType = model_1.FormField.FieldTypeEnum.Signature;
formField.pageNumber = 1;
const bounds = new model_1.Rectangle();
bounds.x = 100;
bounds.y = 50;
bounds.width = 100;
bounds.height = 100;
formField.bounds = bounds;
const role = new model_1.Role();
role.roleIndex = 50;
role.signerName = "Divya";
role.signerEmail = "divya.boopathy+20@syncfusion.com";
role.signerOrder = 1;
role.enableEmailOTP = false;
role.signerType = model_1.Role.SignerTypeEnum.Signer;
role.authenticationType = model_1.Role.AuthenticationTypeEnum.AccessCode;
role.authenticationCode = '123456';
role.authenticationSettings = {
authenticationFrequency: model_1.AuthenticationSettings.AuthenticationFrequencyEnum.EveryAccess
};
role.signerRole = "Manager";
role.privateMessage = "Please check and sign the document";
role.formFields = [formField];
const sendForSignFromTemplate = new model_1.SendForSignFromTemplateForm();
const files = fs.createReadStream("tests/documents/agreement.pdf");
sendForSignFromTemplate.files = [files];
sendForSignFromTemplate.title = "Invitation form";
sendForSignFromTemplate.message = "Kindly review and sign this.";
sendForSignFromTemplate.roles = [role];
sendForSignFromTemplate.disableEmails = false;
sendForSignFromTemplate.disableSMS = false;
sendForSignFromTemplate.hideDocumentId = true;
sendForSignFromTemplate.labels = ["Invitation", "Form", "Test"];
const reminderSettings = new model_1.ReminderSettings();
reminderSettings.reminderDays = 3;
reminderSettings.reminderCount = 5;
reminderSettings.enableAutoReminder = false;
sendForSignFromTemplate.reminderSettings = reminderSettings;
sendForSignFromTemplate.expiryValue = 60;
sendForSignFromTemplate.disableExpiryAlert = true;
sendForSignFromTemplate.enablePrintAndSign = true;
sendForSignFromTemplate.enableReassign = true;
sendForSignFromTemplate.enableSigningOrder = true;
try {
const response = yield templateApi.sendUsingTemplate(createdTemplateId, sendForSignFromTemplate);
console.log("Document sent for signing using template successfully:", response);
expect(response).toBeDefined();
}
catch (error) {
console.error("Error occurred while calling the API:", error.message);
expect(error.message).toBeUndefined();
}
}), 20000);
test('Test28:should send document for signing using template with multiple CCs', () => __awaiter(void 0, void 0, void 0, function* () {
const formField = new model_1.FormField();
formField.fieldType = model_1.FormField.FieldTypeEnum.Signature;
formField.pageNumber = 1;
const bounds = new model_1.Rectangle();
bounds.x = 100;
bounds.y = 100;
bounds.width = 100;
bounds.height = 50;
formField.bounds = bounds;
const role = new model_1.Role();
role.roleIndex = 50;
role.signerName = "Divya";
role.signerEmail = "divya.boopathy+23@syncfusion.com";
role.signerOrder = 1;
role.privateMessage = "Please check and sign the document.";
role.authenticationCode = "123456";
role.enableEmailOTP = false;
role.signerType = model_1.Role.SignerTypeEnum.Signer;
role.signerRole = "Hr";
role.formFields = [formField];
role.locale = model_1.Role.LocaleEnum.En;
const sendForSignFromTemplate = new model_1.SendForSignFromTemplateForm();
const files = fs.createReadStream("tests/documents/agreement.pdf");
sendForSignFromTemplate.files = [files];
sendForSignFromTemplate.title = "Invitation form";
sendForSignFromTemplate.message = "Kindly review and sign this.";
sendForSignFromTemplate.roles = [role];
sendForSignFromTemplate.disableEmails = true;
sendForSignFromTemplate.disableSMS = false;
sendForSignFromTemplate.hideDocumentId = false;
sendForSignFromTemplate.labels = ["Invitation"];
const ccEmails = [
{ emailAddress: "divya.boopathy+5@syncfusion.com" },
{ emailAddress: "divya.boopathy+8@syncfusion.com" },
{ emailAddress: "divya.boopathy+9@syncfusion.com" }
];
sendForSignFromTemplate.cc = ccEmails;
const reminderSettings = new model_1.ReminderSettings();
reminderSettings.reminderDays = 3;
reminderSettings.reminderCount = 5;
reminderSettings.enableAutoReminder = false;
sendForSignFromTemplate.reminderSettings = reminderSettings;
sendForSignFromTemplate.expiryDays = 180;
sendForSignFromTemplate.expiryValue = 60;
sendForSignFromTemplate.disableExpiryAlert = true;
sendForSignFromTemplate.enablePrintAndSign = true;
sendForSignFromTemplate.enableReassign = true;
sendForSignFromTemplate.enableSigningOrder = true;
sendForSignFromTemplate.roleRemovalIndices = [1, 2];
try {
const response = yield templateApi.sendUsingTemplate(createdTemplateId, sendForSignFromTemplate);
console.log("Document sent for signing using template successfully:", response);
expect(response).toBeDefined();
}
catch (error) {
console.error("Error occurred while calling the API:", error.message);
expect(error.message).toBeUndefined();
}
}), 20000);
test('Test29: should send document from template with file path', () => __awaiter(void 0, void 0, void 0, function* () {
const formField = new model_1.FormField();
formField.fieldType = model_1.FormField.FieldTypeEnum.Signature;
formField.pageNumber = 1;
const bounds = new model_1.Rectangle();
bounds.x = 100;
bounds.y = 50;
bounds.width = 100;
bounds.height = 100;
formField.bounds = bounds;
const role = new model_1.Role();
role.roleIndex = 50;
role.signerName = "Divya";
role.signerEmail = "divya.boopathy+20@syncfusion.com";
role.signerOrder = 1;
role.enableEmailOTP = false;
role.signerType = model_1.Role.SignerTypeEnum.Signer;
role.signerRole = "Manager";
role.privateMessage = "Please check and sign the document";
role.formFields = [formField];
const sendForSignFromTemplate = new model_1.SendForSignFromTemplateForm();
const fileStream = fs.createReadStream("tests/documents/agreement.pdf");
sendForSignFromTemplate.files = [fileStream];
sendForSignFromTemplate.title = "Invitation form";
sendForSignFromTemplate.message = "Kindly review and sign this.";
sendForSignFromTemplate.roles = [role];
sendForSignFromTemplate.disableEmails = false;
sendForSignFromTemplate.disableSMS = false;
sendForSignFromTemplate.hideDocumentId = true;
sendForSignFromTemplate.labels = ["Invitation", "Form", "Test"];
const reminderSettings = new model_1.ReminderSettings();
reminderSettings.reminderDays = 3;
reminderSettings.reminderCount = 5;
reminderSettings.enableAutoReminder = false;
sendForSignFromTemplate.reminderSettings = reminderSettings;
sendForSignFromTemplate.expiryValue = 60;
sendForSignFromTemplate.disableExpiryAlert = true;
sendForSignFromTemplate.enablePrintAndSign = true;
sendForSignFromTemplate.enableReassign = true;
sendForSignFromTemplate.enableSigningOrder = true;
try {
const response = yield templateApi.sendUsingTemplate(createdTemplateId, sendForSignFromTemplate);
console.log("Document sent for signing using template successfully:", response);
expect(response).toBeDefined();
}
catch (error) {
console.error("Error occurred while calling the API:", error);
expect(error).toBeUndefined();
}
}), 20000);
test('Test30: should fail to send document for signing using invalid template ID with valid fields', () => __awaiter(void 0, void 0, void 0, function* () {
const templateId = "INVALID_TEMPLATE_ID";
const formField = new model_1.FormField();
formField.fieldType = model_1.FormField.FieldTypeEnum.Signature;
formField.pageNumber = 1;
const bounds = new model_1.Rectangle();
bounds.x = 100;
bounds.y = 50;
bounds.width = 100;
bounds.height = 100;
formField.bounds = bounds;
const role = new model_1.Role();
role.roleIndex = 50;
role.signerName = "Divya";
role.signerEmail = "divya.boopathy+20@syncfusion.com";
role.signerOrder = 1;
role.enableEmailOTP = false;
role.signerType = model_1.Role.SignerTypeEnum.Signer;
role.signerRole = "Manager";
role.privateMessage = "Please check and sign the document";
role.formFields = [formField];
const sendForSignFromTemplate = new model_1.SendForSignFromTemplateForm();
const files =