boldsign
Version:
NodeJS client for boldsign
114 lines (108 loc) • 5.07 kB
text/typescript
import { IdentityVerificationApi } from '../../api/identityVerificationApi';
import { DocumentApi } from '../../api/documentApi';
import {DocumentSigner,FormField,Rectangle,SendForSign,IdentityVerificationSettings,EmbeddedFileDetails,VerificationDataRequest,DownloadImageRequest} from '../../model';
import * as fs from 'fs';
import config from '../config';
describe('Document API Test Suite', () => {
let identityVerificationApi: IdentityVerificationApi;
let documentApi: DocumentApi;
let createdDocumentId;
beforeAll(() => {
createdDocumentId = null;
const apiKey = config.apiKey;
const baseUrl = config.baseUrl;
if (!apiKey || !baseUrl) {
throw new Error("Environment variables 'API_KEY' or 'HOST_URL' are not set.");
}
documentApi = new DocumentApi(baseUrl);
documentApi.setApiKey(apiKey);
identityVerificationApi = new IdentityVerificationApi(baseUrl);
identityVerificationApi.setApiKey(apiKey);
});
test('Test1:should send a document with identity verification', async () => {
try {
const signer = new DocumentSigner();
signer.name = 'Test Signer';
signer.emailAddress = 'sivaramani.sivaraj@syncfusion.com';
signer.signerOrder = 1;
signer.signerType = DocumentSigner.SignerTypeEnum.Signer;
signer.authenticationType = DocumentSigner.AuthenticationTypeEnum.IdVerification;
const formField = new FormField();
formField.name = 'Sign';
formField.fieldType = FormField.FieldTypeEnum.Signature;
formField.font = FormField.FontEnum.Helvetica;
formField.pageNumber = 1;
formField.isRequired = true;
const bounds = new Rectangle();
bounds.x = 50;
bounds.y = 50;
bounds.width = 200;
bounds.height = 50;
formField.bounds = bounds;
signer.formFields = [formField];
signer.privateMessage = 'This is a private message for signer';
const idVerificationSettings = new IdentityVerificationSettings();
idVerificationSettings.type = IdentityVerificationSettings.TypeEnum.EveryAccess;
idVerificationSettings.maximumRetryCount = 2;
const sendDocumentRequest = new SendForSign();
sendDocumentRequest.title = 'Document SDK API - ID Verification';
sendDocumentRequest.files = [fs.createReadStream('tests/documents/agreement.pdf')];
sendDocumentRequest.enablePrintAndSign = true;
sendDocumentRequest.signers = [signer];
sendDocumentRequest.message = 'Please verify your identity and sign this document';
const response = await documentApi.sendDocument(sendDocumentRequest);
expect(response.documentId).toBeDefined();
createdDocumentId = response.documentId;
console.log('Document sent with ID verification. Document ID:', createdDocumentId);
} catch (error) {
console.error('Error occurred while sending document with identity verification:', error);
expect(error).toBeUndefined();
}
}, 7000000);
test('Test2:should fail to create an embedded verification URL with invalid document ID', async () => {
const manualVerification: EmbeddedFileDetails = {
emailId: 'sivaramani.sivaraj@syncfusion.com',
countryCode: '+91',
phoneNumber: '8807799764',
redirectUrl: 'https://www.boldsign.com',
order: 1
};
try {
const response = await identityVerificationApi.createEmbeddedVerificationUrl(createdDocumentId, manualVerification);
fail('Expected 400 Bad Request error, but the API call succeeded.');
} catch (error: any) {
console.error(error);
expect(error).toBeDefined();
}
}, 700000);
test('Test3:should fail when requesting verification report with invalid or unauthorized data', async () => {
const requestData: VerificationDataRequest = {
emailId: 'sivaramani.sivaraj@syncfusion.com',
countryCode: '+91',
phoneNumber: '8807799764',
order: 1
};
try {
await identityVerificationApi.report(createdDocumentId, requestData);
fail('Expected 403 Forbidden error, but the API call succeeded.');
} catch (error: any) {
expect(error).toBeDefined();
}
}, 700000);
test('Test4:should fail invalid file ID in image download request', async () => {
const imageRequest: DownloadImageRequest = {
emailId: 'sivaramani.sivaraj@syncfusion.com',
countryCode: '+91',
phoneNumber: '8807799764',
fileId: 'invalid-file-id',
order: 1
};
try {
const imageResponse = await identityVerificationApi.image(createdDocumentId, imageRequest);
console.log('Unexpectedly received image response:', imageResponse);
fail('Expected 403 Forbidden error, but the API call succeeded.');
} catch (error: any) {
expect(error).toBeDefined();
}
}, 700000);
})