boldsign 1.0.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.openapi-generator/FILES +157 -156
- package/.openapi-generator/VERSION +1 -1
- package/.openapi-generator-ignore +23 -23
- package/LICENSE +21 -21
- package/README.md +307 -306
- package/api/apis.ts +163 -163
- package/api/brandingApi.ts +1193 -1183
- package/api/contactsApi.ts +772 -772
- package/api/customFieldApi.ts +817 -817
- package/api/documentApi.ts +2953 -2953
- package/api/identityVerificationApi.ts +586 -586
- package/api/index.ts +36 -36
- package/api/planApi.ts +274 -274
- package/api/senderIdentitiesApi.ts +898 -898
- package/api/teamsApi.ts +661 -661
- package/api/templateApi.ts +1915 -1915
- package/api/userApi.ts +968 -968
- package/api.ts +3 -3
- package/boldsign-2.0.0.tgz +0 -0
- package/dist/api/apis.d.ts +1 -1
- package/dist/api/apis.js +1 -1
- package/dist/api/brandingApi.d.ts +2 -2
- package/dist/api/brandingApi.js +10 -4
- package/dist/api/brandingApi.js.map +1 -1
- package/dist/model/auditTrail.d.ts +3 -1
- package/dist/model/auditTrail.js +2 -0
- package/dist/model/auditTrail.js.map +1 -1
- package/dist/model/collaborationSettings.d.ts +17 -0
- package/dist/model/collaborationSettings.js +33 -0
- package/dist/model/collaborationSettings.js.map +1 -0
- package/dist/model/createTemplateRequest.d.ts +1 -1
- package/dist/model/createTemplateRequest.js +5 -5
- package/dist/model/createTemplateRequest.js.map +1 -1
- package/dist/model/documentFiles.d.ts +1 -0
- package/dist/model/documentFiles.js +5 -0
- package/dist/model/documentFiles.js.map +1 -1
- package/dist/model/documentFormFields.d.ts +4 -0
- package/dist/model/documentFormFields.js +15 -0
- package/dist/model/documentFormFields.js.map +1 -1
- package/dist/model/documentSigner.d.ts +1 -0
- package/dist/model/documentSigner.js +5 -0
- package/dist/model/documentSigner.js.map +1 -1
- package/dist/model/documentSignerDetails.d.ts +1 -0
- package/dist/model/documentSignerDetails.js +5 -0
- package/dist/model/documentSignerDetails.js.map +1 -1
- package/dist/model/embeddedCreateTemplateRequest.d.ts +1 -1
- package/dist/model/embeddedCreateTemplateRequest.js +5 -5
- package/dist/model/embeddedCreateTemplateRequest.js.map +1 -1
- package/dist/model/embeddedDocumentRequest.d.ts +1 -1
- package/dist/model/embeddedDocumentRequest.js +5 -5
- package/dist/model/embeddedDocumentRequest.js.map +1 -1
- package/dist/model/embeddedMergeTemplateFormRequest.d.ts +1 -1
- package/dist/model/embeddedMergeTemplateFormRequest.js +5 -5
- package/dist/model/embeddedMergeTemplateFormRequest.js.map +1 -1
- package/dist/model/embeddedSendTemplateFormRequest.d.ts +1 -1
- package/dist/model/embeddedSendTemplateFormRequest.js +5 -5
- package/dist/model/embeddedSendTemplateFormRequest.js.map +1 -1
- package/dist/model/formField.d.ts +2 -0
- package/dist/model/formField.js +5 -0
- package/dist/model/formField.js.map +1 -1
- package/dist/model/index.d.ts +2 -1
- package/dist/model/index.js +6 -3
- package/dist/model/index.js.map +1 -1
- package/dist/model/mergeAndSendForSignForm.d.ts +1 -1
- package/dist/model/mergeAndSendForSignForm.js +5 -5
- package/dist/model/mergeAndSendForSignForm.js.map +1 -1
- package/dist/model/sendForSign.d.ts +1 -1
- package/dist/model/sendForSign.js +5 -5
- package/dist/model/sendForSign.js.map +1 -1
- package/dist/model/sendForSignFromTemplateForm.d.ts +1 -1
- package/dist/model/sendForSignFromTemplateForm.js +5 -5
- package/dist/model/sendForSignFromTemplateForm.js.map +1 -1
- package/dist/model/templateFormFields.d.ts +2 -0
- package/dist/model/templateFormFields.js +5 -0
- package/dist/model/templateFormFields.js.map +1 -1
- package/dist/model/textTagDefinition.d.ts +2 -0
- package/dist/model/textTagDefinition.js +5 -0
- package/dist/model/textTagDefinition.js.map +1 -1
- package/dist/model/viewBrandDetails.d.ts +1 -0
- package/dist/model/viewBrandDetails.js +5 -0
- package/dist/model/viewBrandDetails.js.map +1 -1
- package/dist/tests/config.d.ts +5 -0
- package/dist/tests/config.js +43 -0
- package/dist/tests/config.js.map +1 -0
- package/dist/tests/integration/BrandingApiTest.spec.d.ts +1 -0
- package/dist/tests/integration/BrandingApiTest.spec.js +310 -0
- package/dist/tests/integration/BrandingApiTest.spec.js.map +1 -0
- package/dist/tests/integration/ContactsApiTest.spec.d.ts +1 -0
- package/dist/tests/integration/ContactsApiTest.spec.js +249 -0
- package/dist/tests/integration/ContactsApiTest.spec.js.map +1 -0
- package/dist/tests/integration/CustomFieldApiTest.spec.d.ts +1 -0
- package/dist/tests/integration/CustomFieldApiTest.spec.js +289 -0
- package/dist/tests/integration/CustomFieldApiTest.spec.js.map +1 -0
- package/dist/tests/integration/DocumentApiTest.spec.d.ts +1 -0
- package/dist/tests/integration/DocumentApiTest.spec.js +1710 -0
- package/dist/tests/integration/DocumentApiTest.spec.js.map +1 -0
- package/dist/tests/integration/IdentityVerificationApiTest.spec.d.ts +1 -0
- package/dist/tests/integration/IdentityVerificationApiTest.spec.js +160 -0
- package/dist/tests/integration/IdentityVerificationApiTest.spec.js.map +1 -0
- package/dist/tests/integration/TemplateApiTest.spec.d.ts +1 -0
- package/dist/tests/integration/TemplateApiTest.spec.js +1518 -0
- package/dist/tests/integration/TemplateApiTest.spec.js.map +1 -0
- package/dist/tests/integration/planApiTest.spec.d.ts +1 -0
- package/dist/tests/integration/planApiTest.spec.js +41 -0
- package/dist/tests/integration/planApiTest.spec.js.map +1 -0
- package/dist/tests/integration/senderIdentity.spec.d.ts +1 -0
- package/dist/tests/integration/senderIdentity.spec.js +481 -0
- package/dist/tests/integration/senderIdentity.spec.js.map +1 -0
- package/dist/tests/integration/teamsApiTest.spec.d.ts +1 -0
- package/dist/tests/integration/teamsApiTest.spec.js +230 -0
- package/dist/tests/integration/teamsApiTest.spec.js.map +1 -0
- package/dist/tests/integration/usersApiTest.spec.d.ts +1 -0
- package/dist/tests/integration/usersApiTest.spec.js +290 -0
- package/dist/tests/integration/usersApiTest.spec.js.map +1 -0
- package/dist/tests/performance/performanceApiTest.spec.d.ts +1 -0
- package/dist/tests/performance/performanceApiTest.spec.js +368 -0
- package/dist/tests/performance/performanceApiTest.spec.js.map +1 -0
- package/dist/tests/unit/brandingApi.spec.d.ts +1 -0
- package/dist/tests/unit/brandingApi.spec.js +174 -0
- package/dist/tests/unit/brandingApi.spec.js.map +1 -0
- package/dist/tests/unit/contactsApi.spec.d.ts +1 -0
- package/dist/tests/unit/contactsApi.spec.js +154 -0
- package/dist/tests/unit/contactsApi.spec.js.map +1 -0
- package/dist/tests/unit/customFieldApi.spec.d.ts +1 -0
- package/dist/tests/unit/customFieldApi.spec.js +140 -0
- package/dist/tests/unit/customFieldApi.spec.js.map +1 -0
- package/dist/tests/unit/documentApi.spec.d.ts +1 -0
- package/dist/tests/unit/documentApi.spec.js +476 -0
- package/dist/tests/unit/documentApi.spec.js.map +1 -0
- package/dist/tests/unit/planApi.spec.d.ts +1 -0
- package/dist/tests/unit/planApi.spec.js +69 -0
- package/dist/tests/unit/planApi.spec.js.map +1 -0
- package/dist/tests/unit/senderIdentitiesApi.spec.d.ts +1 -0
- package/dist/tests/unit/senderIdentitiesApi.spec.js +148 -0
- package/dist/tests/unit/senderIdentitiesApi.spec.js.map +1 -0
- package/dist/tests/unit/teamApi.spec.d.ts +1 -0
- package/dist/tests/unit/teamApi.spec.js +116 -0
- package/dist/tests/unit/teamApi.spec.js.map +1 -0
- package/dist/tests/unit/templateApi.spec.d.ts +1 -0
- package/dist/tests/unit/templateApi.spec.js +285 -0
- package/dist/tests/unit/templateApi.spec.js.map +1 -0
- package/dist/tests/unit/userApi.spec.d.ts +1 -0
- package/dist/tests/unit/userApi.spec.js +163 -0
- package/dist/tests/unit/userApi.spec.js.map +1 -0
- package/docs/AccessCodeDetail.md +19 -19
- package/docs/AccessCodeDetails.md +13 -13
- package/docs/Added.md +13 -13
- package/docs/Address.md +16 -16
- package/docs/AttachmentInfo.md +14 -14
- package/docs/AuditTrail.md +21 -21
- package/docs/AuthenticationSettings.md +11 -11
- package/docs/Base64File.md +12 -12
- package/docs/BehalfDocument.md +27 -27
- package/docs/BehalfDocumentRecords.md +12 -12
- package/docs/BehalfOf.md +12 -12
- package/docs/BillingViewModel.md +11 -11
- package/docs/BrandCreated.md +11 -11
- package/docs/BrandCustomFieldDetails.md +16 -16
- package/docs/BrandingApi.md +260 -258
- package/docs/BrandingMessage.md +11 -11
- package/docs/BrandingRecords.md +11 -11
- package/docs/ChangeRecipient.md +18 -18
- package/docs/CollaborationSettings.md +14 -0
- package/docs/ConditionalRule.md +13 -13
- package/docs/ContactCreated.md +12 -12
- package/docs/ContactDetails.md +15 -15
- package/docs/ContactPageDetails.md +13 -13
- package/docs/ContactsApi.md +176 -176
- package/docs/ContactsDetails.md +16 -16
- package/docs/ContactsList.md +12 -12
- package/docs/CreateContactResponse.md +11 -11
- package/docs/CreateSenderIdentityRequest.md +16 -16
- package/docs/CreateTeamRequest.md +11 -11
- package/docs/CreateTemplateRequest.md +35 -35
- package/docs/CreateUser.md +14 -14
- package/docs/CustomDomainSettings.md +12 -12
- package/docs/CustomFieldApi.md +174 -174
- package/docs/CustomFieldCollection.md +11 -11
- package/docs/CustomFieldMessage.md +12 -12
- package/docs/CustomFormField.md +43 -43
- package/docs/Date.md +13 -13
- package/docs/DeleteCustomFieldReply.md +11 -11
- package/docs/Document.md +26 -26
- package/docs/DocumentApi.md +756 -756
- package/docs/DocumentCC.md +11 -11
- package/docs/DocumentCcDetails.md +12 -12
- package/docs/DocumentCreated.md +11 -11
- package/docs/DocumentExpirySettings.md +16 -16
- package/docs/DocumentFiles.md +14 -13
- package/docs/DocumentFormFields.md +52 -49
- package/docs/DocumentInfo.md +14 -14
- package/docs/DocumentProperties.md +50 -50
- package/docs/DocumentReassign.md +13 -13
- package/docs/DocumentRecords.md +12 -12
- package/docs/DocumentSenderDetail.md +14 -14
- package/docs/DocumentSigner.md +32 -31
- package/docs/DocumentSignerDetails.md +38 -37
- package/docs/DocumentTags.md +12 -12
- package/docs/DownloadImageRequest.md +16 -16
- package/docs/EditSenderIdentityRequest.md +14 -14
- package/docs/EditTemplateRequest.md +29 -29
- package/docs/EditableDateFieldSettings.md +13 -13
- package/docs/EmbeddedCreateTemplateRequest.md +46 -46
- package/docs/EmbeddedCustomFieldCreated.md +11 -11
- package/docs/EmbeddedDocumentRequest.md +55 -55
- package/docs/EmbeddedFileDetails.md +16 -16
- package/docs/EmbeddedFileLink.md +11 -11
- package/docs/EmbeddedMergeTemplateFormRequest.md +56 -56
- package/docs/EmbeddedSendCreated.md +12 -12
- package/docs/EmbeddedSendTemplateFormRequest.md +53 -53
- package/docs/EmbeddedSigningLink.md +11 -11
- package/docs/EmbeddedTemplateCreated.md +12 -12
- package/docs/EmbeddedTemplateEditRequest.md +21 -21
- package/docs/EmbeddedTemplateEdited.md +11 -11
- package/docs/Error.md +12 -12
- package/docs/ErrorResult.md +11 -11
- package/docs/ExistingFormField.md +15 -15
- package/docs/ExtendExpiry.md +14 -14
- package/docs/FileInfo.md +14 -14
- package/docs/Font.md +18 -18
- package/docs/FormField.md +51 -50
- package/docs/FormGroup.md +15 -15
- package/docs/FormulaFieldSettings.md +12 -12
- package/docs/IdDocument.md +21 -21
- package/docs/IdReport.md +14 -14
- package/docs/IdVerification.md +18 -18
- package/docs/IdentityVerificationApi.md +109 -109
- package/docs/IdentityVerificationSettings.md +16 -16
- package/docs/ImageInfo.md +13 -13
- package/docs/MergeAndSendForSignForm.md +46 -46
- package/docs/ModificationDetails.md +12 -12
- package/docs/NotificationSettings.md +22 -22
- package/docs/PageDetails.md +16 -16
- package/docs/PhoneNumber.md +12 -12
- package/docs/PlanApi.md +38 -38
- package/docs/PrefillField.md +12 -12
- package/docs/PrefillFieldRequest.md +12 -12
- package/docs/ProblemDetails.md +15 -15
- package/docs/RecipientChangeLog.md +12 -12
- package/docs/RecipientNotificationSettings.md +22 -22
- package/docs/Rectangle.md +14 -14
- package/docs/ReminderMessage.md +13 -13
- package/docs/ReminderSettings.md +13 -13
- package/docs/RemoveAuthentication.md +14 -14
- package/docs/Removed.md +13 -13
- package/docs/RevokeDocument.md +12 -12
- package/docs/Role.md +33 -33
- package/docs/Roles.md +33 -33
- package/docs/SendForSign.md +45 -45
- package/docs/SendForSignFromTemplateForm.md +43 -43
- package/docs/SenderIdentitiesApi.md +209 -209
- package/docs/SenderIdentityCreated.md +11 -11
- package/docs/SenderIdentityList.md +12 -12
- package/docs/SenderIdentityViewModel.md +19 -19
- package/docs/SignerAuthenticationSettings.md +12 -12
- package/docs/Size.md +12 -12
- package/docs/TeamCreated.md +11 -11
- package/docs/TeamDocumentRecords.md +12 -12
- package/docs/TeamListResponse.md +12 -12
- package/docs/TeamPageDetails.md +12 -12
- package/docs/TeamResponse.md +15 -15
- package/docs/TeamUpdateRequest.md +12 -12
- package/docs/TeamUsers.md +16 -16
- package/docs/Teams.md +14 -14
- package/docs/TeamsApi.md +141 -141
- package/docs/Template.md +29 -29
- package/docs/TemplateApi.md +484 -484
- package/docs/TemplateCC.md +12 -12
- package/docs/TemplateCreated.md +11 -11
- package/docs/TemplateFormFields.md +51 -50
- package/docs/TemplateProperties.md +37 -37
- package/docs/TemplateRecords.md +12 -12
- package/docs/TemplateRole.md +28 -28
- package/docs/TemplateSenderDetail.md +12 -12
- package/docs/TemplateSenderDetails.md +13 -13
- package/docs/TemplateSharedTemplateDetail.md +12 -12
- package/docs/TemplateSignerDetails.md +27 -27
- package/docs/TemplateTag.md +14 -14
- package/docs/TextTagDefinition.md +41 -40
- package/docs/TextTagOffset.md +12 -12
- package/docs/UpdateUser.md +14 -14
- package/docs/UpdateUserMetaData.md +12 -12
- package/docs/UserApi.md +240 -240
- package/docs/UserPageDetails.md +12 -12
- package/docs/UserProperties.md +21 -21
- package/docs/UserRecords.md +12 -12
- package/docs/UsersDetails.md +21 -21
- package/docs/Validation.md +13 -13
- package/docs/VerificationDataRequest.md +15 -15
- package/docs/ViewBrandDetails.md +35 -34
- package/docs/ViewCustomFieldDetails.md +17 -17
- package/examples/DocumentProperties.ts +14 -14
- package/examples/brandCreate.ts +28 -28
- package/examples/brandDelete.ts +14 -14
- package/examples/brandGet.ts +14 -14
- package/examples/brandList.ts +13 -13
- package/examples/brandResetDefault.ts +14 -14
- package/examples/brandUpdate.ts +20 -20
- package/examples/contactCreate.ts +25 -25
- package/examples/contactDelete.ts +14 -14
- package/examples/contactGet.ts +14 -14
- package/examples/contactList.ts +15 -15
- package/examples/contactUpdate.ts +25 -25
- package/examples/customFieldCreate.ts +27 -27
- package/examples/customFieldDelete.ts +14 -14
- package/examples/customFieldEdit.ts +29 -29
- package/examples/customFieldEmbeddedCreateUrl.ts +18 -18
- package/examples/customFieldList.ts +14 -14
- package/examples/documentAddAuthentication.ts +19 -19
- package/examples/documentAddTags.ts +18 -18
- package/examples/documentChangeAccessCode.ts +19 -19
- package/examples/documentChangeRecipients.ts +21 -21
- package/examples/documentDelete.ts +15 -15
- package/examples/documentDeleteTags.ts +18 -18
- package/examples/documentDownload.ts +15 -15
- package/examples/documentDownloadAttachment.ts +16 -16
- package/examples/documentDownloadAuditTrial.ts +15 -15
- package/examples/documentEmbeddedRequestLink.ts +48 -48
- package/examples/documentEmbeddedSignLink.ts +22 -22
- package/examples/documentExtendExpiry.ts +19 -19
- package/examples/documentList.ts +18 -18
- package/examples/documentListBehalf.ts +14 -14
- package/examples/documentListTeam.ts +14 -14
- package/examples/documentPrefillFieldCheckBox.ts +22 -22
- package/examples/documentPrefillFieldDropDown.ts +22 -22
- package/examples/documentPrefillFieldEditableDate.ts +22 -22
- package/examples/documentPrefillFieldImage.ts +22 -22
- package/examples/documentPrefillFieldRadioButton.ts +22 -22
- package/examples/documentPrefillFieldTextBox.ts +22 -22
- package/examples/documentRemoveAuthentication.ts +18 -18
- package/examples/documentRevoke.ts +18 -18
- package/examples/documentSend.ts +46 -46
- package/examples/documentSendOnBehalf.ts +52 -52
- package/examples/documentSendReminder.ts +19 -19
- package/examples/embeddedManualVerification.ts +22 -22
- package/examples/identityVerificationImage.ts +23 -23
- package/examples/identityVerificationReport.ts +21 -21
- package/examples/listTemplate.ts +15 -15
- package/examples/plan.ts +13 -13
- package/examples/senderIdentityCreate.ts +20 -20
- package/examples/senderIdentityDelete.ts +14 -14
- package/examples/senderIdentityList.ts +15 -15
- package/examples/senderIdentityRerequest.ts +14 -14
- package/examples/senderIdentityResendInvitation.ts +14 -14
- package/examples/senderIdentityUpdate.ts +19 -19
- package/examples/teamCreate.ts +17 -17
- package/examples/teamGet.ts +14 -14
- package/examples/teamList.ts +15 -15
- package/examples/teamUpdate.ts +18 -18
- package/examples/templateAddTag.ts +19 -19
- package/examples/templateCreate.ts +28 -28
- package/examples/templateDelete.ts +14 -14
- package/examples/templateDeleteTag.ts +19 -19
- package/examples/templateDetails.ts +14 -14
- package/examples/templateDownload.ts +14 -14
- package/examples/templateEdit.ts +21 -21
- package/examples/templateEmbeddedCreate.ts +28 -28
- package/examples/templateEmbeddedEdit.ts +23 -23
- package/examples/templateEmbeddedRequestLink.ts +33 -33
- package/examples/templateMergerEmbeddedRequestUrl.ts +36 -36
- package/examples/templateSendDocument.ts +59 -59
- package/examples/templateSendDocumentUsingMultipleTemplate.ts +39 -39
- package/examples/userCreate.ts +19 -19
- package/examples/userGet.ts +14 -14
- package/examples/userInvitationCancel.ts +14 -14
- package/examples/userList.ts +15 -15
- package/examples/userResendInvitation.ts +14 -14
- package/examples/userUpdateRole.ts +18 -18
- package/git_push.sh +57 -57
- package/model/accessCodeDetail.ts +91 -91
- package/model/accessCodeDetails.ts +44 -44
- package/model/added.ts +43 -43
- package/model/address.ts +61 -61
- package/model/attachmentInfo.ts +49 -49
- package/model/auditTrail.ts +177 -175
- package/model/authenticationSettings.ts +40 -40
- package/model/base64File.ts +37 -37
- package/model/behalfDocument.ts +142 -142
- package/model/behalfDocumentRecords.ts +39 -39
- package/model/behalfOf.ts +37 -37
- package/model/billingViewModel.ts +31 -31
- package/model/brandCreated.ts +31 -31
- package/model/brandCustomFieldDetails.ts +62 -62
- package/model/brandingMessage.ts +31 -31
- package/model/brandingRecords.ts +32 -32
- package/model/changeRecipient.ts +74 -74
- package/model/collaborationSettings.ts +49 -0
- package/model/conditionalRule.ts +43 -43
- package/model/contactCreated.ts +37 -37
- package/model/contactDetails.ts +56 -56
- package/model/contactPageDetails.ts +43 -43
- package/model/contactsDetails.ts +62 -62
- package/model/contactsList.ts +39 -39
- package/model/createContactResponse.ts +32 -32
- package/model/createSenderIdentityRequest.ts +62 -62
- package/model/createTeamRequest.ts +31 -31
- package/model/createTemplateRequest.ts +181 -181
- package/model/createUser.ts +56 -56
- package/model/customDomainSettings.ts +37 -37
- package/model/customFieldCollection.ts +32 -32
- package/model/customFieldMessage.ts +37 -37
- package/model/customFormField.ts +275 -275
- package/model/deleteCustomFieldReply.ts +31 -31
- package/model/document.ts +135 -135
- package/model/documentCC.ts +31 -31
- package/model/documentCcDetails.ts +37 -37
- package/model/documentCreated.ts +31 -31
- package/model/documentExpirySettings.ts +69 -69
- package/model/documentFiles.ts +49 -43
- package/model/documentFormFields.ts +311 -292
- package/model/documentInfo.ts +90 -90
- package/model/documentProperties.ts +316 -316
- package/model/documentReassign.ts +43 -43
- package/model/documentRecords.ts +39 -39
- package/model/documentSenderDetail.ts +49 -49
- package/model/documentSigner.ts +221 -215
- package/model/documentSignerDetails.ts +265 -259
- package/model/documentTags.ts +37 -37
- package/model/downloadImageRequest.ts +61 -61
- package/model/editSenderIdentityRequest.ts +50 -50
- package/model/editTemplateRequest.ts +144 -144
- package/model/editableDateFieldSettings.ts +43 -43
- package/model/embeddedCreateTemplateRequest.ts +271 -271
- package/model/embeddedCustomFieldCreated.ts +31 -31
- package/model/embeddedDocumentRequest.ts +337 -337
- package/model/embeddedFileDetails.ts +61 -61
- package/model/embeddedFileLink.ts +31 -31
- package/model/embeddedMergeTemplateFormRequest.ts +343 -343
- package/model/embeddedSendCreated.ts +37 -37
- package/model/embeddedSendTemplateFormRequest.ts +324 -324
- package/model/embeddedSigningLink.ts +31 -31
- package/model/embeddedTemplateCreated.ts +37 -37
- package/model/embeddedTemplateEditRequest.ts +115 -115
- package/model/embeddedTemplateEdited.ts +31 -31
- package/model/errorResult.ts +31 -31
- package/model/existingFormField.ts +55 -55
- package/model/extendExpiry.ts +49 -49
- package/model/fileInfo.ts +49 -49
- package/model/font.ts +89 -89
- package/model/formField.ts +327 -320
- package/model/formGroup.ts +63 -63
- package/model/formulaFieldSettings.ts +37 -37
- package/model/idDocument.ts +93 -93
- package/model/idReport.ts +50 -50
- package/model/idVerification.ts +73 -73
- package/model/identityVerificationSettings.ts +75 -75
- package/model/imageInfo.ts +43 -43
- package/model/index.ts +546 -543
- package/model/mergeAndSendForSignForm.ts +261 -261
- package/model/modelDate.ts +43 -43
- package/model/modelError.ts +37 -37
- package/model/models.ts +244 -244
- package/model/modificationDetails.ts +37 -37
- package/model/notificationSettings.ts +97 -97
- package/model/pageDetails.ts +61 -61
- package/model/phoneNumber.ts +37 -37
- package/model/prefillField.ts +37 -37
- package/model/prefillFieldRequest.ts +38 -38
- package/model/problemDetails.ts +55 -55
- package/model/recipientChangeLog.ts +39 -39
- package/model/recipientNotificationSettings.ts +97 -97
- package/model/rectangle.ts +49 -49
- package/model/reminderMessage.ts +44 -44
- package/model/reminderSettings.ts +43 -43
- package/model/removeAuthentication.ts +50 -50
- package/model/removed.ts +43 -43
- package/model/revokeDocument.ts +37 -37
- package/model/role.ts +229 -229
- package/model/roles.ts +225 -225
- package/model/sendForSign.ts +255 -255
- package/model/sendForSignFromTemplateForm.ts +242 -242
- package/model/senderIdentityCreated.ts +31 -31
- package/model/senderIdentityList.ts +39 -39
- package/model/senderIdentityViewModel.ts +80 -80
- package/model/signerAuthenticationSettings.ts +37 -37
- package/model/size.ts +37 -37
- package/model/teamCreated.ts +31 -31
- package/model/teamDocumentRecords.ts +39 -39
- package/model/teamListResponse.ts +39 -39
- package/model/teamPageDetails.ts +37 -37
- package/model/teamResponse.ts +56 -56
- package/model/teamUpdateRequest.ts +37 -37
- package/model/teamUsers.ts +73 -73
- package/model/teams.ts +49 -49
- package/model/template.ts +159 -159
- package/model/templateCC.ts +37 -37
- package/model/templateCreated.ts +31 -31
- package/model/templateFormFields.ts +304 -297
- package/model/templateProperties.ts +202 -202
- package/model/templateRecords.ts +39 -39
- package/model/templateRole.ts +195 -195
- package/model/templateSenderDetail.ts +37 -37
- package/model/templateSenderDetails.ts +43 -43
- package/model/templateSharedTemplateDetail.ts +43 -43
- package/model/templateSignerDetails.ts +160 -160
- package/model/templateTag.ts +49 -49
- package/model/textTagDefinition.ts +255 -248
- package/model/textTagOffset.ts +37 -37
- package/model/updateUser.ts +60 -60
- package/model/updateUserMetaData.ts +37 -37
- package/model/userPageDetails.ts +37 -37
- package/model/userProperties.ts +91 -91
- package/model/userRecords.ts +39 -39
- package/model/usersDetails.ts +91 -91
- package/model/validation.ts +52 -52
- package/model/verificationDataRequest.ts +55 -55
- package/model/viewBrandDetails.ts +183 -177
- package/model/viewCustomFieldDetails.ts +68 -68
- package/package.json +52 -52
- package/tests/config.ts +20 -0
- package/tests/documents/agreement.pdf +0 -0
- package/tests/documents/logo.jpg +0 -0
- package/tests/integration/BrandingApiTest.spec.ts +254 -0
- package/tests/integration/ContactsApiTest.spec.ts +222 -0
- package/tests/integration/CustomFieldApiTest.spec.ts +231 -0
- package/tests/integration/DocumentApiTest.spec.ts +1624 -0
- package/tests/integration/IdentityVerificationApiTest.spec.ts +114 -0
- package/tests/integration/TemplateApiTest.spec.ts +1420 -0
- package/tests/integration/planApiTest.spec.ts +26 -0
- package/tests/integration/senderIdentity.spec.ts +397 -0
- package/tests/integration/teamsApiTest.spec.ts +226 -0
- package/tests/integration/usersApiTest.spec.ts +251 -0
- package/tests/performance/performanceApiTest.spec.ts +362 -0
- package/tests/unit/brandingApi.spec.ts +163 -0
- package/tests/unit/contactsApi.spec.ts +143 -0
- package/tests/unit/customFieldApi.spec.ts +123 -0
- package/tests/unit/documentApi.spec.ts +545 -0
- package/tests/unit/planApi.spec.ts +34 -0
- package/tests/unit/senderIdentitiesApi.spec.ts +148 -0
- package/tests/unit/teamApi.spec.ts +94 -0
- package/tests/unit/templateApi.spec.ts +307 -0
- package/tests/unit/userApi.spec.ts +162 -0
- package/tsconfig.json +24 -24
|
@@ -0,0 +1,1624 @@
|
|
|
1
|
+
import { DocumentApi } from '../../api/documentApi';
|
|
2
|
+
import { BrandingApi } from '../../api/brandingApi';
|
|
3
|
+
import { AccessCodeDetail, AccessCodeDetails, AuthenticationSettings, DocumentCC, DocumentSigner, DocumentTags, EmbeddedDocumentRequest, ExtendExpiry, FormField, Rectangle, ReminderMessage, ReminderSettings, RemoveAuthentication, RevokeDocument, SendForSign } from '../../model';
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import config from '../config';
|
|
6
|
+
|
|
7
|
+
function imageToBase64(imagePath) {
|
|
8
|
+
const imageBuffer = fs.readFileSync(imagePath);
|
|
9
|
+
const imageType = imagePath.substring(imagePath.lastIndexOf('.') + 1);
|
|
10
|
+
return `data:image/${imageType};base64,${imageBuffer.toString('base64')}`;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
describe('Document API Test Suite', () => {
|
|
14
|
+
let brandingApi:BrandingApi;
|
|
15
|
+
let documentApi:DocumentApi;
|
|
16
|
+
let brandId;
|
|
17
|
+
let createdDocumentId;
|
|
18
|
+
let sendDocumentOnBehalfId:any
|
|
19
|
+
let senderEmail;
|
|
20
|
+
const generateRandomEmail = () => {
|
|
21
|
+
const randomNum = Math.floor(1000 + Math.random() * 9000);
|
|
22
|
+
return `sdktesting${randomNum}@syncfusion.com`;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
beforeAll(() => {
|
|
26
|
+
createdDocumentId = null;
|
|
27
|
+
sendDocumentOnBehalfId = null;
|
|
28
|
+
senderEmail = null;
|
|
29
|
+
const apiKey = config.apiKey;
|
|
30
|
+
const baseUrl = config.baseUrl;
|
|
31
|
+
if (!apiKey || !baseUrl) {
|
|
32
|
+
throw new Error("Environment variables 'API_KEY' or 'HOST_URL' are not set.");
|
|
33
|
+
}
|
|
34
|
+
documentApi = new DocumentApi(baseUrl);
|
|
35
|
+
documentApi.setApiKey(apiKey);
|
|
36
|
+
brandingApi = new BrandingApi(baseUrl);
|
|
37
|
+
brandingApi.setApiKey(apiKey);
|
|
38
|
+
});
|
|
39
|
+
test('Test1: should fetch sender email details', async () => {
|
|
40
|
+
try {
|
|
41
|
+
const page = 1;
|
|
42
|
+
const pageSize = 10;
|
|
43
|
+
const listDocumentsResponse = await documentApi.listDocuments(
|
|
44
|
+
page, undefined, undefined, undefined,undefined, pageSize, undefined, undefined, undefined, undefined, undefined, undefined, undefined
|
|
45
|
+
);
|
|
46
|
+
senderEmail = listDocumentsResponse?.result?.[0]?.senderDetail?.emailAddress;
|
|
47
|
+
console.log("Sender email fetched:", senderEmail ?? 'Not available');
|
|
48
|
+
expect(listDocumentsResponse.result).toBeDefined();
|
|
49
|
+
} catch (error:any) {
|
|
50
|
+
console.error("Error occurred while fetching sender details:", error.message);
|
|
51
|
+
expect(error.message).toBeUndefined();
|
|
52
|
+
}
|
|
53
|
+
},20000);
|
|
54
|
+
test('Test2: should create a brand successfully with audit trail', async () => {
|
|
55
|
+
const brandName = "NodeSDK";
|
|
56
|
+
const brandLogo = fs.createReadStream("tests/documents/logo.jpg");
|
|
57
|
+
const backgroundColor = "Blue";
|
|
58
|
+
const buttonColor = "Black";
|
|
59
|
+
const buttonTextColor = "White";
|
|
60
|
+
const emailDisplayName = "{SenderName} from Syncfusion";
|
|
61
|
+
const auditTrail = "true";
|
|
62
|
+
const disclaimerTitle = "Important Disclaimer";
|
|
63
|
+
try {
|
|
64
|
+
const createBrandApiResponse = await brandingApi.createBrand(
|
|
65
|
+
brandName,
|
|
66
|
+
brandLogo,
|
|
67
|
+
backgroundColor,
|
|
68
|
+
buttonColor,
|
|
69
|
+
buttonTextColor,
|
|
70
|
+
emailDisplayName,
|
|
71
|
+
auditTrail,
|
|
72
|
+
disclaimerTitle
|
|
73
|
+
);
|
|
74
|
+
console.log("Brand created successfully:", createBrandApiResponse.brandId);
|
|
75
|
+
brandId = createBrandApiResponse.brandId;
|
|
76
|
+
expect(createBrandApiResponse).toBeDefined();
|
|
77
|
+
} catch (error) {
|
|
78
|
+
console.log("Error occurred while creating the brand:", error);
|
|
79
|
+
expect(error).toBeUndefined();
|
|
80
|
+
}
|
|
81
|
+
}, 20000);
|
|
82
|
+
test('Test3: should send a document for signing successfully with existing brand ID and one signer', async () => {
|
|
83
|
+
try {
|
|
84
|
+
const signer1 = new DocumentSigner();
|
|
85
|
+
signer1.name = 'Test Signer';
|
|
86
|
+
signer1.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
87
|
+
signer1.signerOrder = 1;
|
|
88
|
+
signer1.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
89
|
+
signer1.authenticationType = DocumentSigner.AuthenticationTypeEnum.AccessCode;
|
|
90
|
+
signer1.authenticationCode = '123456';
|
|
91
|
+
signer1.authenticationSettings = {
|
|
92
|
+
authenticationFrequency: AuthenticationSettings.AuthenticationFrequencyEnum.EveryAccess
|
|
93
|
+
};
|
|
94
|
+
const formField1 = new FormField();
|
|
95
|
+
formField1.name = 'Sign';
|
|
96
|
+
formField1.fieldType = FormField.FieldTypeEnum.Signature;
|
|
97
|
+
formField1.font = FormField.FontEnum.Helvetica;
|
|
98
|
+
formField1.pageNumber = 1;
|
|
99
|
+
formField1.isRequired = true;
|
|
100
|
+
formField1.bounds = new Rectangle();
|
|
101
|
+
signer1.formFields = [formField1];
|
|
102
|
+
signer1.privateMessage = 'This is a private message for signer';
|
|
103
|
+
const sendDocumentRequest = new SendForSign();
|
|
104
|
+
sendDocumentRequest.title = 'Document SDK API';
|
|
105
|
+
sendDocumentRequest.files = [fs.createReadStream('tests/documents/agreement.pdf')];
|
|
106
|
+
sendDocumentRequest.enablePrintAndSign = true;
|
|
107
|
+
sendDocumentRequest.signers = [signer1];
|
|
108
|
+
sendDocumentRequest.brandId = brandId;
|
|
109
|
+
sendDocumentRequest.message = 'Please sign this document';
|
|
110
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
111
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
112
|
+
const createdDocumentId = sendDocumentResponse.documentId;
|
|
113
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
114
|
+
} catch (error) {
|
|
115
|
+
console.error('Error occurred while sending document for signing:', error);
|
|
116
|
+
expect(error).toBeUndefined();
|
|
117
|
+
}
|
|
118
|
+
}, 20000);
|
|
119
|
+
test('Test4: should send a document for signing successfully', async () => {
|
|
120
|
+
try {
|
|
121
|
+
const signer1 = new DocumentSigner();
|
|
122
|
+
signer1.name = 'Test Signer';
|
|
123
|
+
signer1.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
124
|
+
signer1.signerOrder = 1;
|
|
125
|
+
signer1.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
126
|
+
signer1.authenticationType = DocumentSigner.AuthenticationTypeEnum.AccessCode;
|
|
127
|
+
signer1.authenticationCode = '123456';
|
|
128
|
+
signer1.authenticationSettings = {
|
|
129
|
+
authenticationFrequency: AuthenticationSettings.AuthenticationFrequencyEnum.OncePerDocument
|
|
130
|
+
};
|
|
131
|
+
const formField1 = new FormField();
|
|
132
|
+
formField1.name = 'Sign';
|
|
133
|
+
formField1.fieldType = FormField.FieldTypeEnum.Signature;
|
|
134
|
+
formField1.font = FormField.FontEnum.Helvetica;
|
|
135
|
+
formField1.pageNumber = 1;
|
|
136
|
+
formField1.isRequired = true;
|
|
137
|
+
formField1.bounds = new Rectangle();
|
|
138
|
+
signer1.formFields = [formField1];
|
|
139
|
+
signer1.privateMessage = 'This is private message for signer';
|
|
140
|
+
const signer2 = new DocumentSigner();
|
|
141
|
+
signer2.name = 'Test Reviewer';
|
|
142
|
+
signer2.emailAddress = 'mohammedmushraf.abuthakir+5@syncfusion.com';
|
|
143
|
+
signer2.signerOrder = 2;
|
|
144
|
+
signer2.signerType = DocumentSigner.SignerTypeEnum.Reviewer;
|
|
145
|
+
signer2.authenticationType = DocumentSigner.AuthenticationTypeEnum.EmailOtp;
|
|
146
|
+
signer2.privateMessage = 'This is private message for Reviewer';
|
|
147
|
+
const sendDocumentRequest = new SendForSign();
|
|
148
|
+
sendDocumentRequest.title = 'Document SDK API';
|
|
149
|
+
sendDocumentRequest.files = [
|
|
150
|
+
fs.createReadStream('tests/documents/agreement.pdf'),
|
|
151
|
+
];
|
|
152
|
+
sendDocumentRequest.enablePrintAndSign = true;
|
|
153
|
+
sendDocumentRequest.signers = [signer1, signer2];
|
|
154
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
155
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
156
|
+
createdDocumentId = sendDocumentResponse.documentId;
|
|
157
|
+
console.log('Created Document ID:', createdDocumentId);
|
|
158
|
+
} catch (error:any) {
|
|
159
|
+
console.error('Error occurred while sending document for signing:', error.message);
|
|
160
|
+
expect(error.message).toBeUndefined();
|
|
161
|
+
}
|
|
162
|
+
},20000);
|
|
163
|
+
test('Test5: should send a document for signing successfully with inperson signer', async () => {
|
|
164
|
+
try {
|
|
165
|
+
console.log("Sender email fetched:", senderEmail );
|
|
166
|
+
const signer1 = new DocumentSigner();
|
|
167
|
+
signer1.name = 'Test Signer';
|
|
168
|
+
signer1.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
169
|
+
signer1.signerOrder = 1;
|
|
170
|
+
signer1.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
171
|
+
signer1.authenticationType = DocumentSigner.AuthenticationTypeEnum.AccessCode;
|
|
172
|
+
signer1.authenticationCode = '123456';
|
|
173
|
+
signer1.authenticationSettings = {
|
|
174
|
+
authenticationFrequency: AuthenticationSettings.AuthenticationFrequencyEnum.UntilSignCompleted
|
|
175
|
+
};
|
|
176
|
+
const formField1 = new FormField();
|
|
177
|
+
formField1.name = 'Sign';
|
|
178
|
+
formField1.fieldType = FormField.FieldTypeEnum.Signature;
|
|
179
|
+
formField1.font = FormField.FontEnum.Helvetica;
|
|
180
|
+
formField1.pageNumber = 1;
|
|
181
|
+
formField1.isRequired = true;
|
|
182
|
+
formField1.bounds = new Rectangle();
|
|
183
|
+
signer1.formFields = [formField1];
|
|
184
|
+
signer1.privateMessage = 'This is private message for signer';
|
|
185
|
+
signer1.recipientNotificationSettings = {
|
|
186
|
+
signatureRequest: true,
|
|
187
|
+
declined: true,
|
|
188
|
+
revoked: true,
|
|
189
|
+
signed: true,
|
|
190
|
+
completed: true,
|
|
191
|
+
expired: true,
|
|
192
|
+
reassigned: true,
|
|
193
|
+
deleted: true,
|
|
194
|
+
reminders: true,
|
|
195
|
+
editRecipient: true
|
|
196
|
+
};
|
|
197
|
+
const signer2 = new DocumentSigner();
|
|
198
|
+
signer2.name = 'Test Reviewer';
|
|
199
|
+
signer2.emailAddress = 'mohammedmushraf.abuthakir+5@syncfusion.com';
|
|
200
|
+
signer2.signerOrder = 2;
|
|
201
|
+
signer2.signerType = DocumentSigner.SignerTypeEnum.Reviewer;
|
|
202
|
+
signer2.authenticationType = DocumentSigner.AuthenticationTypeEnum.EmailOtp;
|
|
203
|
+
signer2.authenticationSettings = {
|
|
204
|
+
authenticationFrequency: AuthenticationSettings.AuthenticationFrequencyEnum.None
|
|
205
|
+
};
|
|
206
|
+
signer2.privateMessage = 'This is private message for Reviewer';
|
|
207
|
+
signer2.phoneNumber = {
|
|
208
|
+
countryCode: '+91',
|
|
209
|
+
number: '6381261236'
|
|
210
|
+
};
|
|
211
|
+
signer2.deliveryMode = DocumentSigner.DeliveryModeEnum.EmailAndSms;
|
|
212
|
+
const signer3 = new DocumentSigner();
|
|
213
|
+
signer3.name = 'Test In-Person Signer';
|
|
214
|
+
signer3.emailAddress = 'mohammedmushraf.abuthakir+4@syncfusion.com';
|
|
215
|
+
signer3.signerOrder = 3;
|
|
216
|
+
signer3.signerType = DocumentSigner.SignerTypeEnum.InPersonSigner;
|
|
217
|
+
signer3.hostEmail = senderEmail;
|
|
218
|
+
signer3.authenticationType = DocumentSigner.AuthenticationTypeEnum.EmailOtp;
|
|
219
|
+
const formField2 = new FormField();
|
|
220
|
+
formField2.name = 'Sign';
|
|
221
|
+
formField2.fieldType = FormField.FieldTypeEnum.Signature;
|
|
222
|
+
formField2.font = FormField.FontEnum.Helvetica;
|
|
223
|
+
formField2.pageNumber = 1;
|
|
224
|
+
formField2.isRequired = true;
|
|
225
|
+
formField2.bounds = new Rectangle();
|
|
226
|
+
signer3.formFields = [formField2];
|
|
227
|
+
const sendDocumentRequest = new SendForSign();
|
|
228
|
+
sendDocumentRequest.title = 'Document SDK API';
|
|
229
|
+
sendDocumentRequest.files = [fs.createReadStream('tests/documents/agreement.pdf')];
|
|
230
|
+
sendDocumentRequest.enablePrintAndSign = true;
|
|
231
|
+
sendDocumentRequest.hideDocumentId = true;
|
|
232
|
+
sendDocumentRequest.enableReassign = false;
|
|
233
|
+
sendDocumentRequest.signers = [signer1, signer2, signer3];
|
|
234
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
235
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
236
|
+
const createdDocumentId = sendDocumentResponse.documentId;
|
|
237
|
+
console.log('Created Document ID:', createdDocumentId);
|
|
238
|
+
} catch (error) {
|
|
239
|
+
console.error('Error occurred while sending document for signing:', error);
|
|
240
|
+
expect(error).toBeUndefined();
|
|
241
|
+
}
|
|
242
|
+
}, 20000);
|
|
243
|
+
test('Test6: should send a document with multiple CCs successfully', async () => {
|
|
244
|
+
try {
|
|
245
|
+
const files = [
|
|
246
|
+
fs.createReadStream('tests/documents/agreement.pdf'),
|
|
247
|
+
];
|
|
248
|
+
const formFields: FormField[] = [];
|
|
249
|
+
const signatureField = new FormField();
|
|
250
|
+
signatureField.pageNumber = 1;
|
|
251
|
+
signatureField.bounds = new Rectangle();
|
|
252
|
+
signatureField.bounds.x = 100;
|
|
253
|
+
signatureField.bounds.y = 100;
|
|
254
|
+
signatureField.bounds.width = 100;
|
|
255
|
+
signatureField.bounds.height = 50;
|
|
256
|
+
formFields.push(signatureField);
|
|
257
|
+
const signers: DocumentSigner[] = [];
|
|
258
|
+
const signer1 = new DocumentSigner();
|
|
259
|
+
signer1.name = 'Mohammed';
|
|
260
|
+
signer1.emailAddress = 'mohammedmushraf.abuthakir+88@syncfusion.com';
|
|
261
|
+
signer1.signerRole = 'SIGNER';
|
|
262
|
+
signer1.formFields = formFields;
|
|
263
|
+
signers.push(signer1);
|
|
264
|
+
const signer2 = new DocumentSigner();
|
|
265
|
+
signer2.name = 'Mohammed';
|
|
266
|
+
signer2.emailAddress = 'mohammedmushraf.abuthakir+80@syncfusion.com';
|
|
267
|
+
signer2.signerRole = 'SIGNER';
|
|
268
|
+
signer2.formFields = formFields;
|
|
269
|
+
signers.push(signer2);
|
|
270
|
+
const ccList: DocumentCC[] = [];
|
|
271
|
+
for (let i = 1; i <= 20; i++) {
|
|
272
|
+
const cc = new DocumentCC();
|
|
273
|
+
cc.emailAddress = `mohammedmushraf.abuthakir+${i + 2}@syncfusion.com`;
|
|
274
|
+
ccList.push(cc);
|
|
275
|
+
}
|
|
276
|
+
const sendDocumentRequest = new SendForSign();
|
|
277
|
+
sendDocumentRequest.title = 'Agreement Document';
|
|
278
|
+
sendDocumentRequest.files = files;
|
|
279
|
+
sendDocumentRequest.signers = signers;
|
|
280
|
+
sendDocumentRequest.cc = ccList;
|
|
281
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
282
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
283
|
+
const hasSyncfusionCC = ccList.some(cc => cc.emailAddress.includes('@syncfusion.com'));
|
|
284
|
+
const createdDocumentId = sendDocumentResponse.documentId;
|
|
285
|
+
console.log('Document sent successfully with document ID:', createdDocumentId);
|
|
286
|
+
} catch (error:any) {
|
|
287
|
+
console.error('Error occurred while sending document for signing:', error.message);
|
|
288
|
+
expect(error.message).toBeUndefined();
|
|
289
|
+
}
|
|
290
|
+
}, 20000);
|
|
291
|
+
test('Test7: should send a document with multiple files for signing successfully', async () => {
|
|
292
|
+
try {
|
|
293
|
+
const files = [
|
|
294
|
+
fs.createReadStream('tests/documents/agreement.pdf'),
|
|
295
|
+
fs.createReadStream('tests/documents/agreement.pdf'),
|
|
296
|
+
fs.createReadStream('tests/documents/agreement.pdf'),
|
|
297
|
+
fs.createReadStream('tests/documents/agreement.pdf'),
|
|
298
|
+
];
|
|
299
|
+
const formFields: FormField[] = [];
|
|
300
|
+
const signatureField = new FormField();
|
|
301
|
+
signatureField.pageNumber = 1;
|
|
302
|
+
signatureField.bounds = new Rectangle();
|
|
303
|
+
signatureField.bounds.x = 100;
|
|
304
|
+
signatureField.bounds.y = 100;
|
|
305
|
+
signatureField.bounds.width = 100;
|
|
306
|
+
signatureField.bounds.height = 50;
|
|
307
|
+
formFields.push(signatureField);
|
|
308
|
+
const signers: DocumentSigner[] = [];
|
|
309
|
+
const signer1 = new DocumentSigner();
|
|
310
|
+
signer1.name = 'Signer1';
|
|
311
|
+
signer1.emailAddress = 'mohammedmushraf.abuthakir+5@syncfusion.com';
|
|
312
|
+
signer1.formFields = formFields;
|
|
313
|
+
signers.push(signer1);
|
|
314
|
+
const signer2 = new DocumentSigner();
|
|
315
|
+
signer2.name = 'Signer2';
|
|
316
|
+
signer2.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
317
|
+
signer2.formFields = formFields;
|
|
318
|
+
signers.push(signer2);
|
|
319
|
+
const sendDocumentRequest = new SendForSign();
|
|
320
|
+
sendDocumentRequest.title = 'Agreement with Multiple Files';
|
|
321
|
+
sendDocumentRequest.files = files;
|
|
322
|
+
sendDocumentRequest.signers = signers;
|
|
323
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
324
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
325
|
+
const createdDocumentId = sendDocumentResponse.documentId;
|
|
326
|
+
console.log('Created Document ID:', createdDocumentId);
|
|
327
|
+
} catch (error:any) {
|
|
328
|
+
console.error('Error occurred while sending document for signing:', error.message);
|
|
329
|
+
expect(error.message).toBeUndefined();
|
|
330
|
+
}
|
|
331
|
+
},20000);
|
|
332
|
+
test('Test8: should send a document with many signers successfully', async () => {
|
|
333
|
+
try {
|
|
334
|
+
const files = [
|
|
335
|
+
fs.createReadStream('tests/documents/agreement.pdf'),
|
|
336
|
+
];
|
|
337
|
+
const formFields: FormField[] = [];
|
|
338
|
+
const signatureField = new FormField();
|
|
339
|
+
signatureField.pageNumber = 1;
|
|
340
|
+
signatureField.bounds = new Rectangle();
|
|
341
|
+
signatureField.bounds.x = 100;
|
|
342
|
+
signatureField.bounds.y = 100;
|
|
343
|
+
signatureField.bounds.width = 100;
|
|
344
|
+
signatureField.bounds.height = 50;
|
|
345
|
+
formFields.push(signatureField);
|
|
346
|
+
const signers: DocumentSigner[] = [];
|
|
347
|
+
for (let i = 0; i < 15; i++) {
|
|
348
|
+
const signer = new DocumentSigner();
|
|
349
|
+
signer.name = `Signer${i}`;
|
|
350
|
+
signer.emailAddress = `mohammedmushraf.abuthakir+${i}@syncfusion.com`;
|
|
351
|
+
signer.formFields = formFields;
|
|
352
|
+
signers.push(signer);
|
|
353
|
+
}
|
|
354
|
+
const sendDocumentRequest = new SendForSign();
|
|
355
|
+
sendDocumentRequest.title = 'Agreement';
|
|
356
|
+
sendDocumentRequest.files = files;
|
|
357
|
+
sendDocumentRequest.signers = signers;
|
|
358
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
359
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
360
|
+
console.log('Created Document ID:', sendDocumentResponse.documentId);
|
|
361
|
+
} catch (error:any) {
|
|
362
|
+
console.error('Error occurred while sending document for signing:', error.message);
|
|
363
|
+
expect(error.message).toBeUndefined();
|
|
364
|
+
}
|
|
365
|
+
},20000);
|
|
366
|
+
test('Test9: should fail to create document with no signers', async () => {
|
|
367
|
+
try {
|
|
368
|
+
const sendForSign = {
|
|
369
|
+
title: 'Agreement',
|
|
370
|
+
files: [
|
|
371
|
+
fs.createReadStream('tests/documents/agreement.pdf'),
|
|
372
|
+
],
|
|
373
|
+
signers: [],
|
|
374
|
+
};
|
|
375
|
+
const response = await documentApi.sendDocument(sendForSign);
|
|
376
|
+
console.error('Expected error for missing signers, but document was created:', response);
|
|
377
|
+
} catch (error:any) {
|
|
378
|
+
console.error('Error occurred while creating document:', error.message);
|
|
379
|
+
expect(error.message).toBeDefined();
|
|
380
|
+
}
|
|
381
|
+
},20000);
|
|
382
|
+
test('Test10: should fail to send a document for signing with an empty email address', async () => {
|
|
383
|
+
try {
|
|
384
|
+
const signer1 = new DocumentSigner();
|
|
385
|
+
signer1.name = 'Test Signer';
|
|
386
|
+
signer1.emailAddress = '';
|
|
387
|
+
signer1.signerOrder = 1;
|
|
388
|
+
signer1.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
389
|
+
signer1.authenticationType = DocumentSigner.AuthenticationTypeEnum.AccessCode;
|
|
390
|
+
signer1.authenticationCode = '123456';
|
|
391
|
+
const formField1 = new FormField();
|
|
392
|
+
formField1.name = 'Sign';
|
|
393
|
+
formField1.fieldType = FormField.FieldTypeEnum.Signature;
|
|
394
|
+
formField1.font = FormField.FontEnum.Helvetica;
|
|
395
|
+
formField1.pageNumber = 1;
|
|
396
|
+
formField1.isRequired = true;
|
|
397
|
+
formField1.bounds = new Rectangle();
|
|
398
|
+
signer1.formFields = [formField1];
|
|
399
|
+
signer1.privateMessage = 'This is private message for signer';
|
|
400
|
+
const sendDocumentRequest = new SendForSign();
|
|
401
|
+
sendDocumentRequest.title = 'Document SDK API';
|
|
402
|
+
sendDocumentRequest.files = [
|
|
403
|
+
fs.createReadStream('tests/documents/agreement.pdf'),
|
|
404
|
+
];
|
|
405
|
+
sendDocumentRequest.enablePrintAndSign = true;
|
|
406
|
+
sendDocumentRequest.signers = [signer1];
|
|
407
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
408
|
+
console.log('Created Document ID:', createdDocumentId);
|
|
409
|
+
} catch (error:any) {
|
|
410
|
+
console.error('Error occurred while sending document for signing:', error.message);
|
|
411
|
+
expect(error.message).toBeDefined();
|
|
412
|
+
}
|
|
413
|
+
},20000);
|
|
414
|
+
test('Test11: should fail to send a document for signing with an invalid email address', async () => {
|
|
415
|
+
try {
|
|
416
|
+
const signer1 = new DocumentSigner();
|
|
417
|
+
signer1.name = 'Signer';
|
|
418
|
+
signer1.emailAddress = 'invalid-email.com';
|
|
419
|
+
signer1.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
420
|
+
const signer2 = new DocumentSigner();
|
|
421
|
+
signer2.name = 'Signer1';
|
|
422
|
+
signer2.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
423
|
+
signer2.signerOrder = 2;
|
|
424
|
+
signer2.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
425
|
+
const formField1 = new FormField();
|
|
426
|
+
formField1.name = 'Sign';
|
|
427
|
+
formField1.fieldType = FormField.FieldTypeEnum.Signature;
|
|
428
|
+
formField1.font = FormField.FontEnum.Helvetica;
|
|
429
|
+
formField1.pageNumber = 1;
|
|
430
|
+
formField1.isRequired = true;
|
|
431
|
+
formField1.bounds = new Rectangle();
|
|
432
|
+
signer1.formFields = [formField1];
|
|
433
|
+
signer2.formFields = [formField1];
|
|
434
|
+
const sendDocumentRequest = new SendForSign();
|
|
435
|
+
sendDocumentRequest.title = 'Agreement';
|
|
436
|
+
sendDocumentRequest.files = [
|
|
437
|
+
fs.createReadStream('tests/documents/agreement.pdf'),
|
|
438
|
+
];
|
|
439
|
+
sendDocumentRequest.enablePrintAndSign = true;
|
|
440
|
+
sendDocumentRequest.signers = [signer1, signer2];
|
|
441
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
442
|
+
expect(sendDocumentResponse).toBeUndefined();
|
|
443
|
+
} catch (error:any) {
|
|
444
|
+
console.error('Error occurred while sending document for signing:', error.message);
|
|
445
|
+
expect(error.message).toBeDefined();
|
|
446
|
+
}
|
|
447
|
+
},20000);
|
|
448
|
+
test('Test12: should retrieve embedded sign link successfully', async () => {
|
|
449
|
+
try {
|
|
450
|
+
const documentId = createdDocumentId;
|
|
451
|
+
const signerEmail = "mohammedmushraf.abuthakir+6@syncfusion.com";
|
|
452
|
+
const countryCode = "+91";
|
|
453
|
+
const phoneNumber = "";
|
|
454
|
+
const signLinkValidTill = new Date("2025-03-03T00:00:00+00:00");
|
|
455
|
+
const redirectUrl = "https://www.syncfusion.com/";
|
|
456
|
+
const response = await documentApi.getEmbeddedSignLink(
|
|
457
|
+
documentId,
|
|
458
|
+
signerEmail,
|
|
459
|
+
countryCode,
|
|
460
|
+
phoneNumber,
|
|
461
|
+
signLinkValidTill,
|
|
462
|
+
redirectUrl
|
|
463
|
+
);
|
|
464
|
+
expect(response.signLink).toBeDefined();
|
|
465
|
+
} catch (error:any) {
|
|
466
|
+
console.error('Error occurred while getting the embedded signing link:', error.message);
|
|
467
|
+
expect(error.message).toBeUndefined();
|
|
468
|
+
}
|
|
469
|
+
},20000);
|
|
470
|
+
test('Test13: should fail to retrieve embedded sign link with invalid document id', async () => {
|
|
471
|
+
try {
|
|
472
|
+
const signerEmail = "divya.boopathy+30@syncfusion.com";
|
|
473
|
+
const countryCode = "+91";
|
|
474
|
+
const phoneNumber = "";
|
|
475
|
+
const signLinkValidTill = new Date("2023-01-01T00:00:00+00:00");
|
|
476
|
+
const redirectUrl = "https://www.syncfusion.com/";
|
|
477
|
+
const invalidDocumentId = "invalid-document-id";
|
|
478
|
+
const response = await documentApi.getEmbeddedSignLink(
|
|
479
|
+
invalidDocumentId,
|
|
480
|
+
signerEmail,
|
|
481
|
+
countryCode,
|
|
482
|
+
phoneNumber,
|
|
483
|
+
signLinkValidTill,
|
|
484
|
+
redirectUrl
|
|
485
|
+
);
|
|
486
|
+
console.error('Test failed: Response should not have succeeded with invalid document ID');
|
|
487
|
+
expect(response).toBeUndefined();
|
|
488
|
+
} catch (error:any) {
|
|
489
|
+
console.error('Error occurred while getting the embedded signing link:', error.message);
|
|
490
|
+
expect(error.message).toBeDefined();
|
|
491
|
+
}
|
|
492
|
+
},20000);
|
|
493
|
+
test('Test14: should fail to retrieve embedded sign link with invalid email id', async () => {
|
|
494
|
+
try {
|
|
495
|
+
const documentId =createdDocumentId;
|
|
496
|
+
const invalidSignerEmail = "invalid-emailid";
|
|
497
|
+
const countryCode = "+91";
|
|
498
|
+
const phoneNumber = "";
|
|
499
|
+
const signLinkValidTill = new Date("2025-03-03T00:00:00+00:00");
|
|
500
|
+
const redirectUrl = "https://www.syncfusion.com/";
|
|
501
|
+
const response = await documentApi.getEmbeddedSignLink(
|
|
502
|
+
documentId,
|
|
503
|
+
invalidSignerEmail,
|
|
504
|
+
countryCode,
|
|
505
|
+
phoneNumber,
|
|
506
|
+
signLinkValidTill,
|
|
507
|
+
redirectUrl
|
|
508
|
+
);
|
|
509
|
+
console.error('Test failed: Response should not have succeeded with invalid email ID');
|
|
510
|
+
} catch (error:any) {
|
|
511
|
+
console.error('Error occurred while getting the embedded signing link:', error.message);
|
|
512
|
+
expect(error.message).toBeDefined();
|
|
513
|
+
}
|
|
514
|
+
},20000);
|
|
515
|
+
test('Test15: should throw an error for list document invalid page number and page size', async () => {
|
|
516
|
+
const page = -1;
|
|
517
|
+
const invalidPageSize = 250;
|
|
518
|
+
try {
|
|
519
|
+
await documentApi.listDocuments(page,undefined,undefined,undefined,undefined,invalidPageSize,undefined,undefined,undefined,undefined,undefined,undefined,undefined);
|
|
520
|
+
throw new Error("Expected an ApiException to be thrown due to invalid page number or page size.");
|
|
521
|
+
} catch (error:any) {
|
|
522
|
+
console.error("Error occurred while calling the API:", error.message);
|
|
523
|
+
expect(error.message).toBeDefined();
|
|
524
|
+
}
|
|
525
|
+
},20000);
|
|
526
|
+
test('Test16:should fetch behalf documents successfully', async () => {
|
|
527
|
+
const page = 1;
|
|
528
|
+
try {
|
|
529
|
+
const behalfDocumentResponse = await documentApi.behalfDocuments(page);
|
|
530
|
+
console.log("Behalf Documents fetched successfully:", behalfDocumentResponse);
|
|
531
|
+
expect(behalfDocumentResponse.result).toBeDefined;
|
|
532
|
+
} catch (error:any) {
|
|
533
|
+
console.error("Error occurred while calling the API:", error.message);
|
|
534
|
+
expect(error.message).toBeUndefined();
|
|
535
|
+
}
|
|
536
|
+
},20000);
|
|
537
|
+
test('Test17:should fail to fetch behalf documents due to invalid page number', async () => {
|
|
538
|
+
const invalidPage = -1;
|
|
539
|
+
try {
|
|
540
|
+
const behalfDocumentResponse = await documentApi.behalfDocuments(invalidPage);
|
|
541
|
+
console.error("Expected an error, but the response was:", behalfDocumentResponse);
|
|
542
|
+
throw new Error("Expected an error, but got a response.");
|
|
543
|
+
} catch (error:any) {
|
|
544
|
+
console.log("Error occurred while calling the API:", error.message);
|
|
545
|
+
expect(error.message).toBeDefined();
|
|
546
|
+
}
|
|
547
|
+
},20000);
|
|
548
|
+
test('Test18:should fetch team documents successfully', async () => {
|
|
549
|
+
const page = 1;
|
|
550
|
+
try {
|
|
551
|
+
const teamDocumentResponse = await documentApi.teamDocuments(page);
|
|
552
|
+
console.log("Team Documents fetched successfully:", teamDocumentResponse);
|
|
553
|
+
expect(teamDocumentResponse.result).toBeDefined;
|
|
554
|
+
} catch (error:any) {
|
|
555
|
+
console.error("Error occurred while fetching team documents:", error.message);
|
|
556
|
+
expect(error.message).toBeUndefined();
|
|
557
|
+
}
|
|
558
|
+
},20000);
|
|
559
|
+
test('Test19:should fail to fetch team documents with invalid page number', async () => {
|
|
560
|
+
const invalidPage = -1;
|
|
561
|
+
try {
|
|
562
|
+
const teamDocumentResponse = await documentApi.teamDocuments(invalidPage);
|
|
563
|
+
throw new Error("Expected API call to fail but it succeeded");
|
|
564
|
+
} catch (error:any) {
|
|
565
|
+
console.error("Error occurred while fetching team documents:", error.message);
|
|
566
|
+
expect(error.message).toBeDefined();
|
|
567
|
+
}
|
|
568
|
+
},20000);
|
|
569
|
+
test('Test20:should remove authentication successfully from the document', async () => {
|
|
570
|
+
const documentId = createdDocumentId;
|
|
571
|
+
const emailId = "mohammedmushraf.abuthakir+5@syncfusion.com";
|
|
572
|
+
const removeAuthentication = new RemoveAuthentication();
|
|
573
|
+
removeAuthentication.emailId = emailId;
|
|
574
|
+
|
|
575
|
+
try {
|
|
576
|
+
const response = await documentApi.removeAuthentication(documentId, removeAuthentication);
|
|
577
|
+
console.log("Authentication removed successfully:", response);
|
|
578
|
+
} catch (error:any) {
|
|
579
|
+
console.error("Error occurred while removing authentication:", error.message);
|
|
580
|
+
expect(error.message).toBeUndefined();
|
|
581
|
+
}
|
|
582
|
+
},20000);
|
|
583
|
+
test('Test21:should fail to remove authentication from the document with invalid data', async () => {
|
|
584
|
+
const documentId = "invalid-document-id";
|
|
585
|
+
const emailId = "mohammedmushraf.abuthakir+5@syncfusion.com";
|
|
586
|
+
const removeAuthentication = new RemoveAuthentication();
|
|
587
|
+
removeAuthentication.emailId = emailId;
|
|
588
|
+
try {
|
|
589
|
+
const response = await documentApi.removeAuthentication(documentId, removeAuthentication);
|
|
590
|
+
console.error("Authentication was unexpectedly removed:", response);
|
|
591
|
+
} catch (error:any) {
|
|
592
|
+
console.error("Expected error occurred while removing authentication:", error.message);
|
|
593
|
+
expect(error.message).toBeDefined();
|
|
594
|
+
}
|
|
595
|
+
},20000);
|
|
596
|
+
test('Test22:should add authentication to document successfully', async () => {
|
|
597
|
+
const documentId = createdDocumentId;
|
|
598
|
+
const accessCodeDetail = new AccessCodeDetail();
|
|
599
|
+
accessCodeDetail.authenticationType = AccessCodeDetail.AuthenticationTypeEnum.EmailOtp;
|
|
600
|
+
accessCodeDetail.authenticationSettings = {
|
|
601
|
+
authenticationFrequency: AuthenticationSettings.AuthenticationFrequencyEnum.EveryAccess
|
|
602
|
+
};
|
|
603
|
+
accessCodeDetail.emailId = "mohammedmushraf.abuthakir+5@syncfusion.com";
|
|
604
|
+
try {
|
|
605
|
+
const response = await documentApi.addAuthentication(documentId, accessCodeDetail);
|
|
606
|
+
console.log("Authentication added successfully:", response);
|
|
607
|
+
} catch (error:any) {
|
|
608
|
+
console.error("Error occurred while adding authentication:", error.message);
|
|
609
|
+
expect(error.message).toBeUndefined();
|
|
610
|
+
}
|
|
611
|
+
},20000);
|
|
612
|
+
test('Test23:should fail to add authentication to document due to invalid documentId', async () => {
|
|
613
|
+
const invalidDocumentId = "invalid-document-id";
|
|
614
|
+
const accessCodeDetail = new AccessCodeDetail();
|
|
615
|
+
accessCodeDetail.authenticationType = AccessCodeDetail.AuthenticationTypeEnum.EmailOtp;
|
|
616
|
+
accessCodeDetail.emailId = "mohammedmushraf.abuthakir+5@syncfusion.com";
|
|
617
|
+
try {
|
|
618
|
+
const response = await documentApi.addAuthentication(invalidDocumentId, accessCodeDetail);
|
|
619
|
+
} catch (error:any) {
|
|
620
|
+
console.error("Expected error occurred while adding authentication:", error.message);
|
|
621
|
+
expect(error.message).toBeDefined();
|
|
622
|
+
}
|
|
623
|
+
},20000);
|
|
624
|
+
test('Test24:should fetch document properties', async () => {
|
|
625
|
+
try {
|
|
626
|
+
const response = await documentApi.getProperties(createdDocumentId);
|
|
627
|
+
expect(response.documentId).toBeDefined();
|
|
628
|
+
} catch (error:any) {
|
|
629
|
+
console.error("Error occurred while fetching document properties:", error.message);
|
|
630
|
+
expect(error.message).toBeUndefined();
|
|
631
|
+
}
|
|
632
|
+
},20000);
|
|
633
|
+
test('Test25:should fail to fetch document properties with invalid document ID', async () => {
|
|
634
|
+
const invalidDocumentId = "invalid-document-id";
|
|
635
|
+
try {
|
|
636
|
+
const response = await documentApi.getProperties(invalidDocumentId);
|
|
637
|
+
} catch (error:any) {
|
|
638
|
+
console.error("Expected error occurred while fetching document properties:", error.message);
|
|
639
|
+
expect(error.message).toBeDefined();
|
|
640
|
+
}
|
|
641
|
+
},20000);
|
|
642
|
+
test('Test26:should fail to fetch document properties with invalid document ID', async () => {
|
|
643
|
+
const invalidDocumentId = "";
|
|
644
|
+
try {
|
|
645
|
+
const response = await documentApi.getProperties(invalidDocumentId);
|
|
646
|
+
} catch (error:any) {
|
|
647
|
+
console.error("Expected error occurred while fetching document properties:", error);
|
|
648
|
+
expect(error).toBeDefined();
|
|
649
|
+
expect(error.response.status).toBe(400);
|
|
650
|
+
expect(error.response.statusText).toBe('Bad Request');
|
|
651
|
+
}
|
|
652
|
+
},20000);
|
|
653
|
+
test('Test27:should extend document expiry successfully', async () => {
|
|
654
|
+
try {
|
|
655
|
+
const currentDate = new Date();
|
|
656
|
+
const newExpiryDate = new Date(currentDate.setMonth(currentDate.getMonth() + 3));
|
|
657
|
+
const newExpiryDateStr = newExpiryDate.toISOString().split('T')[0];
|
|
658
|
+
const extendExpiry = new ExtendExpiry();
|
|
659
|
+
extendExpiry.newExpiryValue = newExpiryDateStr;
|
|
660
|
+
const response = await documentApi.extendExpiry(createdDocumentId, extendExpiry);
|
|
661
|
+
} catch (error:any) {
|
|
662
|
+
console.error("Error occurred while calling the API:", error.message);
|
|
663
|
+
expect(error.message).toBeUndefined();
|
|
664
|
+
}
|
|
665
|
+
},20000);
|
|
666
|
+
test('Test28:should fail to extend document expiry due to invalid document ID', async () => {
|
|
667
|
+
try {
|
|
668
|
+
const currentDate = new Date();
|
|
669
|
+
const newExpiryDate = new Date(currentDate.setMonth(currentDate.getMonth() + 3));
|
|
670
|
+
const newExpiryDateStr = newExpiryDate.toISOString().split('T')[0];
|
|
671
|
+
const extendExpiry = new ExtendExpiry();
|
|
672
|
+
extendExpiry.newExpiryValue = newExpiryDateStr;
|
|
673
|
+
const invalidDocumentId = "invalid-document-id";
|
|
674
|
+
await documentApi.extendExpiry(invalidDocumentId, extendExpiry);
|
|
675
|
+
} catch (error:any) {
|
|
676
|
+
console.log("Error occurred as expected:", error.message);
|
|
677
|
+
expect(error.message).toBeDefined();
|
|
678
|
+
}
|
|
679
|
+
},20000);
|
|
680
|
+
test('Test29: should send a reminder successfully with valid document ID', async () => {
|
|
681
|
+
const reminderMessage = new ReminderMessage();
|
|
682
|
+
reminderMessage.message = "Please sign this soon";
|
|
683
|
+
const documentId = createdDocumentId;
|
|
684
|
+
const receiverEmails = ["mohammedmushraf.abuthakir+5@syncfusion.com"];
|
|
685
|
+
try {
|
|
686
|
+
const response = await documentApi.remindDocument(documentId, receiverEmails, reminderMessage);
|
|
687
|
+
console.log("Reminder sent successfully:", response);
|
|
688
|
+
} catch (error:any) {
|
|
689
|
+
console.error("Error occurred while sending the reminder:", error.message);
|
|
690
|
+
expect(error.message).toBeUndefined();
|
|
691
|
+
}
|
|
692
|
+
},20000);
|
|
693
|
+
test('Test30: should throw an error for invalid document ID while sending reminder', async () => {
|
|
694
|
+
const reminderMessage = new ReminderMessage();
|
|
695
|
+
reminderMessage.message = "Please sign this soon";
|
|
696
|
+
const documentId = "invalid-document-id";
|
|
697
|
+
const receiverEmails = ["mohammedmushraf.abuthakir+5@syncfusion.com"];
|
|
698
|
+
try {
|
|
699
|
+
await documentApi.remindDocument(documentId, receiverEmails, reminderMessage);
|
|
700
|
+
} catch (error:any) {
|
|
701
|
+
console.error("Error occurred while sending the reminder:", error.message);
|
|
702
|
+
expect(error.message).toBeDefined();
|
|
703
|
+
}
|
|
704
|
+
},20000);
|
|
705
|
+
test('Test31: should download document successfully', async () => {
|
|
706
|
+
try {
|
|
707
|
+
const documentId = createdDocumentId;
|
|
708
|
+
const onBehalfOf = "mohammedmushraf.abuthakir+6@syncfusion.com";
|
|
709
|
+
const response = await documentApi.downloadDocument(documentId, onBehalfOf);
|
|
710
|
+
console.log("Document downloaded successfully!");
|
|
711
|
+
} catch (error:any) {
|
|
712
|
+
console.error("Error occurred while downloading the document:", error.message);
|
|
713
|
+
expect(error.message).toBeUndefined();
|
|
714
|
+
}
|
|
715
|
+
},20000);
|
|
716
|
+
test('Test32:should fail to download document with invalid document ID', async () => {
|
|
717
|
+
const invalidDocumentId = "invalid-document-id";
|
|
718
|
+
const onBehalfOf = "mohammedmushraf.abuthakir+6@syncfusion.com";
|
|
719
|
+
try {
|
|
720
|
+
const response = await documentApi.downloadDocument(invalidDocumentId, onBehalfOf);
|
|
721
|
+
} catch (error:any) {
|
|
722
|
+
console.error("Error occurred while downloading the document:", error.message);
|
|
723
|
+
expect(error.message).toBeDefined();
|
|
724
|
+
}
|
|
725
|
+
},20000);
|
|
726
|
+
test('Test33:should change document access code successfully', async () => {
|
|
727
|
+
const accessCodeDetails = new AccessCodeDetails();
|
|
728
|
+
accessCodeDetails.accessCode = "12345";
|
|
729
|
+
const documentId = createdDocumentId;
|
|
730
|
+
const email = "mohammedmushraf.abuthakir+6@syncfusion.com";
|
|
731
|
+
try {
|
|
732
|
+
const response = await documentApi.changeAccessCode(documentId, accessCodeDetails, email);
|
|
733
|
+
console.log("Access code changed successfully:", response);
|
|
734
|
+
} catch (error:any) {
|
|
735
|
+
console.error("Error occurred while calling the API:", error.message);
|
|
736
|
+
expect(error.message).toBeUndefined();
|
|
737
|
+
}
|
|
738
|
+
},20000);
|
|
739
|
+
test('Test34:should not change document access code due to invalid data', async () => {
|
|
740
|
+
const accessCodeDetails = new AccessCodeDetails();
|
|
741
|
+
accessCodeDetails.accessCode = "123457";
|
|
742
|
+
const documentId = "invalidDocumentId";
|
|
743
|
+
const email = "mohammedmushraf.abuthakir+6@syncfusion.com";
|
|
744
|
+
try {
|
|
745
|
+
const response = await documentApi.changeAccessCode(documentId, accessCodeDetails, email);
|
|
746
|
+
} catch (error:any) {
|
|
747
|
+
console.error("Expected error occurred while calling the API:", error.message);
|
|
748
|
+
expect(error.message).toBeDefined();
|
|
749
|
+
}
|
|
750
|
+
},20000);
|
|
751
|
+
test('Test35:should successfully add tags to the document', async () => {
|
|
752
|
+
const documentTags = new DocumentTags();
|
|
753
|
+
documentTags.documentId = createdDocumentId;
|
|
754
|
+
documentTags.tags = ["test", "api"];
|
|
755
|
+
try {
|
|
756
|
+
const response = await documentApi.addTag(documentTags);
|
|
757
|
+
console.log("Tags added successfully!", response);
|
|
758
|
+
} catch (error:any) {
|
|
759
|
+
console.error("Error occurred while calling the API:", error.message);
|
|
760
|
+
expect(error.message).toBeUndefined();
|
|
761
|
+
}
|
|
762
|
+
},20000);
|
|
763
|
+
test('Test36:should fail to add tags to the document due to invalid data', async () => {
|
|
764
|
+
const documentTags = new DocumentTags();
|
|
765
|
+
documentTags.documentId = 'invalidDocumentId';
|
|
766
|
+
documentTags.tags = ["test", "api"];
|
|
767
|
+
try {
|
|
768
|
+
const response = await documentApi.addTag(documentTags);
|
|
769
|
+
} catch (error:any) {
|
|
770
|
+
console.log("Error occurred as expected while calling the API:", error.message);
|
|
771
|
+
expect(error.message).toBeDefined();
|
|
772
|
+
}
|
|
773
|
+
},20000);
|
|
774
|
+
test('Test37: should fail to add tags with an empty tag array', async () => {
|
|
775
|
+
const documentTags = new DocumentTags();
|
|
776
|
+
documentTags.documentId = createdDocumentId;
|
|
777
|
+
documentTags.tags = ["",""];
|
|
778
|
+
try {
|
|
779
|
+
const response = await documentApi.addTag(documentTags);
|
|
780
|
+
} catch (error:any) {
|
|
781
|
+
console.error("Error occurred while calling the API:", error.message);
|
|
782
|
+
expect(error.message).toBeDefined();
|
|
783
|
+
}
|
|
784
|
+
},20000);
|
|
785
|
+
test('Test38:should successfully delete tags from the document', async function() {
|
|
786
|
+
const documentTags = new DocumentTags();
|
|
787
|
+
documentTags.documentId = createdDocumentId;
|
|
788
|
+
documentTags.tags = ["test", "api"];
|
|
789
|
+
try {
|
|
790
|
+
const response = await documentApi.deleteTag(documentTags);
|
|
791
|
+
console.log("Tags deleted successfully!");
|
|
792
|
+
} catch (error:any) {
|
|
793
|
+
console.error("Error occurred while calling the API:", error.message);
|
|
794
|
+
expect(error.message).toBeUndefined();
|
|
795
|
+
}
|
|
796
|
+
},20000);
|
|
797
|
+
test('Test39:should fail to delete tags from the document due to invalid document ID', async function() {
|
|
798
|
+
const documentTags = new DocumentTags();
|
|
799
|
+
documentTags.documentId = "invalid-document-id";
|
|
800
|
+
documentTags.tags = ["test", "api"];
|
|
801
|
+
try {
|
|
802
|
+
const response = await documentApi.deleteTag(documentTags);
|
|
803
|
+
} catch (error:any) {
|
|
804
|
+
console.log("Error occurred as expected:", error.message);
|
|
805
|
+
expect(error.message).toBeDefined();
|
|
806
|
+
}
|
|
807
|
+
},20000);
|
|
808
|
+
test('Test40: should fail to delete tags with an empty tag array', async function() {
|
|
809
|
+
const documentTags = new DocumentTags();
|
|
810
|
+
documentTags.documentId = createdDocumentId;
|
|
811
|
+
documentTags.tags = ["",""];
|
|
812
|
+
try {
|
|
813
|
+
const response = await documentApi.deleteTag(documentTags);
|
|
814
|
+
} catch (error:any) {
|
|
815
|
+
console.error("Error occurred while calling the API:", error.message);
|
|
816
|
+
expect(error.message).toBeDefined();
|
|
817
|
+
}
|
|
818
|
+
},20000);
|
|
819
|
+
test('Test41: should change the recipient successfully', async () => {
|
|
820
|
+
try {
|
|
821
|
+
const oldSignerEmail = "mohammedmushraf.abuthakir+6@syncfusion.com";
|
|
822
|
+
const reason = "Wrongly sent";
|
|
823
|
+
const newSignerName = "Test Signer";
|
|
824
|
+
const newSignerEmail = "mohammedmushraf.abuthakir+15@syncfusion.com";
|
|
825
|
+
const changeRecipient = {
|
|
826
|
+
oldSignerEmail: oldSignerEmail,
|
|
827
|
+
reason: reason,
|
|
828
|
+
newSignerName: newSignerName,
|
|
829
|
+
newSignerEmail: newSignerEmail
|
|
830
|
+
};
|
|
831
|
+
const response = await documentApi.changeRecipient(createdDocumentId, changeRecipient);
|
|
832
|
+
console.log("Recipient change succeeded.");
|
|
833
|
+
} catch (error:any) {
|
|
834
|
+
console.error('Error occurred while changing the recipient:', error.message);
|
|
835
|
+
expect(error.message).toBeUndefined();
|
|
836
|
+
}
|
|
837
|
+
},20000);
|
|
838
|
+
test('Test42: should fail to change the recipient with invalid document ID', async () => {
|
|
839
|
+
try {
|
|
840
|
+
const oldSignerEmail = "mohammedmushraf.abuthakir+6@syncfusion.com";
|
|
841
|
+
const reason = "Wrongly sent";
|
|
842
|
+
const newSignerName = "Test Signer";
|
|
843
|
+
const newSignerEmail = "mohammedmushraf.abuthakir+15@syncfusion.com";
|
|
844
|
+
const changeRecipient = {
|
|
845
|
+
oldSignerEmail: oldSignerEmail,
|
|
846
|
+
reason: reason,
|
|
847
|
+
newSignerName: newSignerName,
|
|
848
|
+
newSignerEmail: newSignerEmail
|
|
849
|
+
};
|
|
850
|
+
const invalidDocumentId = "invalid-document-id";
|
|
851
|
+
const response = await documentApi.changeRecipient(invalidDocumentId, changeRecipient);
|
|
852
|
+
} catch (error:any) {
|
|
853
|
+
console.error('Error occurred while changing the recipient:', error.message);
|
|
854
|
+
expect(error.message).toBeDefined();
|
|
855
|
+
}
|
|
856
|
+
},20000);
|
|
857
|
+
test('Test43:should revoke document successfully', async () => {
|
|
858
|
+
const revokeDocumentRequest = new RevokeDocument();
|
|
859
|
+
revokeDocumentRequest.message = "This is document revoke message";
|
|
860
|
+
const documentId = createdDocumentId;
|
|
861
|
+
try {
|
|
862
|
+
const response = await documentApi.revokeDocument(documentId, revokeDocumentRequest);
|
|
863
|
+
console.log("Document revoked successfully:", response);
|
|
864
|
+
} catch (error:any) {
|
|
865
|
+
console.error("Error occurred while calling the API:", error.message);
|
|
866
|
+
expect(error.message).toBeUndefined();
|
|
867
|
+
}
|
|
868
|
+
},20000);
|
|
869
|
+
test('Test44:should fail to revoke document due to invalid document ID', async () => {
|
|
870
|
+
const revokeDocumentRequest = new RevokeDocument();
|
|
871
|
+
revokeDocumentRequest.message = "This is document revoke message";
|
|
872
|
+
const invalidDocumentId = 'invalidDocumentId';
|
|
873
|
+
try {
|
|
874
|
+
const response = await documentApi.revokeDocument(invalidDocumentId, revokeDocumentRequest);
|
|
875
|
+
} catch (error:any) {
|
|
876
|
+
console.log("Error occurred as expected while calling the API:", error.message);
|
|
877
|
+
expect(error.message).toBeDefined();
|
|
878
|
+
}
|
|
879
|
+
},20000);
|
|
880
|
+
test('Test45:should delete document successfully', async () => {
|
|
881
|
+
const validDocumentId = createdDocumentId;
|
|
882
|
+
const deletePermanently = false;
|
|
883
|
+
try {
|
|
884
|
+
const response = await documentApi.deleteDocument(validDocumentId, deletePermanently);
|
|
885
|
+
console.log("Document deleted successfully:", response);
|
|
886
|
+
} catch (error:any) {
|
|
887
|
+
console.error("Error occurred while calling the API:", error.message);
|
|
888
|
+
expect(error.message).toBeUndefined();
|
|
889
|
+
}
|
|
890
|
+
},20000);
|
|
891
|
+
test('Test46:should fail to delete document due to invalid document ID', async () => {
|
|
892
|
+
const invalidDocumentId = 'invalidDocumentId';
|
|
893
|
+
const deletePermanently = false;
|
|
894
|
+
try {
|
|
895
|
+
const response = await documentApi.deleteDocument(invalidDocumentId, deletePermanently);
|
|
896
|
+
} catch (error:any) {
|
|
897
|
+
console.log("Error occurred as expected while calling the API", error.message);
|
|
898
|
+
expect(error.message).toBeDefined();
|
|
899
|
+
}
|
|
900
|
+
},20000);
|
|
901
|
+
test('Test47: should send a document with an image field successfully', async () => {
|
|
902
|
+
try {
|
|
903
|
+
const imagePath = 'tests/documents/logo.jpg';
|
|
904
|
+
const base64Image = imageToBase64(imagePath);
|
|
905
|
+
const imageField = new FormField();
|
|
906
|
+
imageField.name = 'image_Test';
|
|
907
|
+
imageField.fieldType = FormField.FieldTypeEnum.Image;
|
|
908
|
+
imageField.font = FormField.FontEnum.Helvetica;
|
|
909
|
+
imageField.pageNumber = 1;
|
|
910
|
+
imageField.isRequired = true;
|
|
911
|
+
imageField.value = base64Image;
|
|
912
|
+
imageField.imageInfo = {
|
|
913
|
+
title: 'Image Test',
|
|
914
|
+
allowedFileExtensions: '.jpg',
|
|
915
|
+
description: 'Image for testing'
|
|
916
|
+
};
|
|
917
|
+
imageField.bounds = new Rectangle();
|
|
918
|
+
imageField.bounds.x = 50;
|
|
919
|
+
imageField.bounds.y = 50;
|
|
920
|
+
imageField.bounds.width = 100;
|
|
921
|
+
imageField.bounds.height = 150;
|
|
922
|
+
const signer = new DocumentSigner();
|
|
923
|
+
signer.name = 'Test Signer';
|
|
924
|
+
signer.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
925
|
+
signer.signerOrder = 1;
|
|
926
|
+
signer.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
927
|
+
signer.authenticationType = DocumentSigner.AuthenticationTypeEnum.AccessCode;
|
|
928
|
+
signer.authenticationCode = '123456';
|
|
929
|
+
signer.formFields = [imageField];
|
|
930
|
+
signer.privateMessage = 'This is private message for signer';
|
|
931
|
+
const sendDocumentRequest = new SendForSign();
|
|
932
|
+
sendDocumentRequest.title = 'Document SDK API';
|
|
933
|
+
sendDocumentRequest.files = [
|
|
934
|
+
fs.createReadStream('tests/documents/agreement.pdf')
|
|
935
|
+
];
|
|
936
|
+
sendDocumentRequest.signers = [signer];
|
|
937
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
938
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
939
|
+
} catch (error:any) {
|
|
940
|
+
console.error('Error occurred while sending document with image field:', error.message);
|
|
941
|
+
expect(error.message).toBeUndefined();
|
|
942
|
+
}
|
|
943
|
+
},20000);
|
|
944
|
+
test('Test48:should successfully send a document with a read-only checkbox field checked', async () => {
|
|
945
|
+
try {
|
|
946
|
+
const bounds = new Rectangle();
|
|
947
|
+
bounds.x = 50;
|
|
948
|
+
bounds.y = 50;
|
|
949
|
+
bounds.width = 100;
|
|
950
|
+
bounds.height = 150;
|
|
951
|
+
const checkboxField = new FormField();
|
|
952
|
+
checkboxField.id = 'CheckBox';
|
|
953
|
+
checkboxField.name = 'CheckBox';
|
|
954
|
+
checkboxField.fieldType = FormField.FieldTypeEnum.CheckBox;
|
|
955
|
+
checkboxField.font = FormField.FontEnum.Helvetica;
|
|
956
|
+
checkboxField.value = 'on';
|
|
957
|
+
checkboxField.pageNumber = 1;
|
|
958
|
+
checkboxField.isReadOnly = true;
|
|
959
|
+
checkboxField.bounds = bounds;
|
|
960
|
+
const documentSigner = new DocumentSigner();
|
|
961
|
+
documentSigner.name = 'Test Signer';
|
|
962
|
+
documentSigner.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusuion.com';
|
|
963
|
+
documentSigner.signerOrder = 1;
|
|
964
|
+
documentSigner.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
965
|
+
documentSigner.authenticationType = DocumentSigner.AuthenticationTypeEnum.AccessCode;
|
|
966
|
+
documentSigner.authenticationCode = '123456';
|
|
967
|
+
documentSigner.formFields = [checkboxField];
|
|
968
|
+
const sendForSign = new SendForSign();
|
|
969
|
+
sendForSign.title = 'Document SDK API';
|
|
970
|
+
sendForSign.signers = [documentSigner];
|
|
971
|
+
const files = fs.createReadStream('tests/documents/agreement.pdf');
|
|
972
|
+
sendForSign.files = [files];
|
|
973
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendForSign);
|
|
974
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
975
|
+
console.log('Document sent successfully:', sendDocumentResponse.documentId);
|
|
976
|
+
} catch (error:any) {
|
|
977
|
+
console.error('Error occurred while calling the API:', error.message);
|
|
978
|
+
expect(error.message).toBeUndefined();
|
|
979
|
+
}
|
|
980
|
+
}, 20000);
|
|
981
|
+
test('Test49:should send document with multiple grouped checkboxes', async () => {
|
|
982
|
+
try {
|
|
983
|
+
const checkBox1 = new FormField();
|
|
984
|
+
checkBox1.id = 'CheckBox1';
|
|
985
|
+
checkBox1.name = 'CheckBox1';
|
|
986
|
+
checkBox1.fieldType = FormField.FieldTypeEnum.CheckBox;
|
|
987
|
+
checkBox1.font = FormField.FontEnum.Helvetica;
|
|
988
|
+
checkBox1.pageNumber = 1;
|
|
989
|
+
checkBox1.isRequired = true;
|
|
990
|
+
checkBox1.bounds = new Rectangle();
|
|
991
|
+
checkBox1.bounds.x = 50;
|
|
992
|
+
checkBox1.bounds.y = 50;
|
|
993
|
+
checkBox1.bounds.width = 100;
|
|
994
|
+
checkBox1.bounds.height = 50;
|
|
995
|
+
const checkBox2 = new FormField();
|
|
996
|
+
checkBox2.id = 'CheckBox2';
|
|
997
|
+
checkBox2.name = 'CheckBox2';
|
|
998
|
+
checkBox2.fieldType = FormField.FieldTypeEnum.CheckBox;
|
|
999
|
+
checkBox2.font = FormField.FontEnum.Helvetica;
|
|
1000
|
+
checkBox2.pageNumber = 1;
|
|
1001
|
+
checkBox2.isRequired = true;
|
|
1002
|
+
checkBox2.bounds = new Rectangle();
|
|
1003
|
+
checkBox2.bounds.x = 50;
|
|
1004
|
+
checkBox2.bounds.y = 150;
|
|
1005
|
+
checkBox2.bounds.width = 100;
|
|
1006
|
+
checkBox2.bounds.height = 50;
|
|
1007
|
+
const checkBox3 = new FormField();
|
|
1008
|
+
checkBox3.id = 'CheckBox3';
|
|
1009
|
+
checkBox3.name = 'CheckBox3';
|
|
1010
|
+
checkBox3.fieldType = FormField.FieldTypeEnum.CheckBox;
|
|
1011
|
+
checkBox3.font = FormField.FontEnum.Helvetica;
|
|
1012
|
+
checkBox3.pageNumber = 1;
|
|
1013
|
+
checkBox3.isRequired = true;
|
|
1014
|
+
checkBox3.bounds = new Rectangle();
|
|
1015
|
+
checkBox3.bounds.x = 50;
|
|
1016
|
+
checkBox3.bounds.y = 250;
|
|
1017
|
+
checkBox3.bounds.width = 100;
|
|
1018
|
+
checkBox3.bounds.height = 50;
|
|
1019
|
+
const checkBox4 = new FormField();
|
|
1020
|
+
checkBox4.id = 'CheckBox4';
|
|
1021
|
+
checkBox4.name = 'CheckBox4';
|
|
1022
|
+
checkBox4.fieldType = FormField.FieldTypeEnum.CheckBox;
|
|
1023
|
+
checkBox4.font = FormField.FontEnum.Helvetica;
|
|
1024
|
+
checkBox4.pageNumber = 1;
|
|
1025
|
+
checkBox4.isRequired = true;
|
|
1026
|
+
checkBox4.bounds = new Rectangle();
|
|
1027
|
+
checkBox4.bounds.x = 50;
|
|
1028
|
+
checkBox4.bounds.y = 350;
|
|
1029
|
+
checkBox4.bounds.width = 100;
|
|
1030
|
+
checkBox4.bounds.height = 50;
|
|
1031
|
+
const signer = new DocumentSigner();
|
|
1032
|
+
signer.name = 'Mohammed';
|
|
1033
|
+
signer.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
1034
|
+
signer.signerOrder = 1;
|
|
1035
|
+
signer.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
1036
|
+
signer.authenticationType = DocumentSigner.AuthenticationTypeEnum.AccessCode;
|
|
1037
|
+
signer.authenticationCode = '123456';
|
|
1038
|
+
signer.formFields = [checkBox1, checkBox2, checkBox3, checkBox4];
|
|
1039
|
+
const sendDocumentRequest = new SendForSign();
|
|
1040
|
+
sendDocumentRequest.title = 'Document SDK API';
|
|
1041
|
+
sendDocumentRequest.signers = [signer];
|
|
1042
|
+
const files = fs.createReadStream('tests/documents/agreement.pdf');
|
|
1043
|
+
sendDocumentRequest.files = [files];
|
|
1044
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
1045
|
+
const createdDocumentId = sendDocumentResponse.documentId;
|
|
1046
|
+
console.log('Created Document ID:', createdDocumentId);
|
|
1047
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
1048
|
+
} catch (error:any) {
|
|
1049
|
+
console.error('Error occurred while sending document for signing:', error.message);
|
|
1050
|
+
expect(error.message).toBeUndefined();
|
|
1051
|
+
}
|
|
1052
|
+
}, 20000);
|
|
1053
|
+
test('Test50:should replace fillable fields in a document', async () => {
|
|
1054
|
+
try {
|
|
1055
|
+
const signField = new FormField();
|
|
1056
|
+
signField.name = 'Sign';
|
|
1057
|
+
signField.fieldType = FormField.FieldTypeEnum.Signature;
|
|
1058
|
+
signField.font = FormField.FontEnum.Helvetica;
|
|
1059
|
+
signField.pageNumber = 1;
|
|
1060
|
+
signField.isRequired = true;
|
|
1061
|
+
signField.bounds = new Rectangle();
|
|
1062
|
+
signField.bounds.x = 50;
|
|
1063
|
+
signField.bounds.y = 50;
|
|
1064
|
+
signField.bounds.width = 100;
|
|
1065
|
+
signField.bounds.height = 50;
|
|
1066
|
+
const signer = new DocumentSigner();
|
|
1067
|
+
signer.name = 'Test Signer';
|
|
1068
|
+
signer.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
1069
|
+
signer.signerOrder = 1;
|
|
1070
|
+
signer.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
1071
|
+
signer.authenticationType = DocumentSigner.AuthenticationTypeEnum.AccessCode;
|
|
1072
|
+
signer.authenticationCode = '123456';
|
|
1073
|
+
signer.formFields = [signField];
|
|
1074
|
+
signer.privateMessage = 'This is private message for signer';
|
|
1075
|
+
const files = [fs.createReadStream('tests/documents/agreement.pdf')];
|
|
1076
|
+
const sendDocumentRequest = new SendForSign();
|
|
1077
|
+
sendDocumentRequest.title = 'Document SDK API';
|
|
1078
|
+
sendDocumentRequest.files = files;
|
|
1079
|
+
sendDocumentRequest.signers = [signer];
|
|
1080
|
+
sendDocumentRequest.autoDetectFields = true;
|
|
1081
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
1082
|
+
const createdDocumentId = sendDocumentResponse.documentId;
|
|
1083
|
+
console.log('Created Document ID:', createdDocumentId);
|
|
1084
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
1085
|
+
} catch (error:any) {
|
|
1086
|
+
console.error('Error occurred while sending document for signing:', error.message);
|
|
1087
|
+
expect(error.message).toBeUndefined();
|
|
1088
|
+
}
|
|
1089
|
+
}, 20000);
|
|
1090
|
+
test('Tes51:should send document with text field', async () => {
|
|
1091
|
+
try {
|
|
1092
|
+
const textField = new FormField();
|
|
1093
|
+
textField.id = 'textValue';
|
|
1094
|
+
textField.fieldType = FormField.FieldTypeEnum.TextBox;
|
|
1095
|
+
textField.font = FormField.FontEnum.Helvetica;
|
|
1096
|
+
textField.pageNumber = 1;
|
|
1097
|
+
textField.isReadOnly = true;
|
|
1098
|
+
textField.validationType = FormField.ValidationTypeEnum.NumbersOnly;
|
|
1099
|
+
textField.bounds = new Rectangle();
|
|
1100
|
+
textField.bounds.x = 50;
|
|
1101
|
+
textField.bounds.y = 50;
|
|
1102
|
+
textField.bounds.width = 200;
|
|
1103
|
+
textField.bounds.height = 50;
|
|
1104
|
+
const signer = new DocumentSigner();
|
|
1105
|
+
signer.name = 'Test Signer';
|
|
1106
|
+
signer.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
1107
|
+
signer.signerOrder = 1;
|
|
1108
|
+
signer.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
1109
|
+
signer.formFields = [textField];
|
|
1110
|
+
const files = [fs.createReadStream('tests/documents/agreement.pdf')];
|
|
1111
|
+
const sendDocumentRequest = new SendForSign();
|
|
1112
|
+
sendDocumentRequest.title = 'Document SDK API';
|
|
1113
|
+
sendDocumentRequest.files = files;
|
|
1114
|
+
sendDocumentRequest.signers = [signer];
|
|
1115
|
+
sendDocumentRequest.autoDetectFields = true;
|
|
1116
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
1117
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
1118
|
+
} catch (error:any) {
|
|
1119
|
+
console.error('Error occurred while sending document for signing:', error.message);
|
|
1120
|
+
expect(error.message).toBeUndefined();
|
|
1121
|
+
}
|
|
1122
|
+
}, 20000);
|
|
1123
|
+
test('Test52:should send document and disable email notifications', async () => {
|
|
1124
|
+
try {
|
|
1125
|
+
const textField = new FormField();
|
|
1126
|
+
textField.id = 'textValue';
|
|
1127
|
+
textField.fieldType = FormField.FieldTypeEnum.TextBox;
|
|
1128
|
+
textField.font = FormField.FontEnum.Helvetica;
|
|
1129
|
+
textField.pageNumber = 1;
|
|
1130
|
+
textField.isReadOnly = true;
|
|
1131
|
+
textField.validationType = FormField.ValidationTypeEnum.NumbersOnly;
|
|
1132
|
+
textField.bounds = { x: 50, y: 50, width: 100, height: 150 };
|
|
1133
|
+
const signer = new DocumentSigner();
|
|
1134
|
+
signer.name = 'Test Signer';
|
|
1135
|
+
signer.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
1136
|
+
signer.signerOrder = 1;
|
|
1137
|
+
signer.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
1138
|
+
signer.formFields = [textField];
|
|
1139
|
+
const sendDocumentRequest = new SendForSign();
|
|
1140
|
+
sendDocumentRequest.title = 'Document SDK API';
|
|
1141
|
+
sendDocumentRequest.files = [
|
|
1142
|
+
fs.createReadStream('tests/documents/agreement.pdf')
|
|
1143
|
+
];
|
|
1144
|
+
sendDocumentRequest.signers = [signer];
|
|
1145
|
+
sendDocumentRequest.disableEmails = true;
|
|
1146
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
1147
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
1148
|
+
} catch (error:any) {
|
|
1149
|
+
console.error('Error occurred while sending the document for signing:', error.message);
|
|
1150
|
+
expect(error.message).toBeUndefined();
|
|
1151
|
+
}
|
|
1152
|
+
}, 20000);
|
|
1153
|
+
test('Test53:should send document on behalf of another user', async () => {
|
|
1154
|
+
try {
|
|
1155
|
+
const formField = new FormField();
|
|
1156
|
+
formField.fieldType = FormField.FieldTypeEnum.Signature;
|
|
1157
|
+
formField.pageNumber = 1;
|
|
1158
|
+
formField.bounds = { x: 50, y: 50, width: 200, height: 25 };
|
|
1159
|
+
const documentSigner = new DocumentSigner();
|
|
1160
|
+
documentSigner.name = 'Test Signer';
|
|
1161
|
+
documentSigner.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
1162
|
+
documentSigner.signerOrder = 1;
|
|
1163
|
+
documentSigner.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
1164
|
+
documentSigner.formFields = [formField];
|
|
1165
|
+
const reminderSettings = new ReminderSettings();
|
|
1166
|
+
reminderSettings.reminderDays = 3;
|
|
1167
|
+
reminderSettings.reminderCount = 5;
|
|
1168
|
+
reminderSettings.enableAutoReminder = false;
|
|
1169
|
+
const sendForSign = new SendForSign();
|
|
1170
|
+
sendForSign.title = 'SDK Document Test case';
|
|
1171
|
+
sendForSign.message = 'Testing document from SDK integration test case';
|
|
1172
|
+
sendForSign.files = [fs.createReadStream('tests/documents/agreement.pdf')];
|
|
1173
|
+
sendForSign.disableExpiryAlert = false;
|
|
1174
|
+
sendForSign.reminderSettings = reminderSettings;
|
|
1175
|
+
sendForSign.enableReassign = true;
|
|
1176
|
+
sendForSign.signers = [documentSigner];
|
|
1177
|
+
sendForSign.enablePrintAndSign = false;
|
|
1178
|
+
sendForSign.autoDetectFields = false;
|
|
1179
|
+
sendForSign.onBehalfOf = 'mohammedmushraf.abuthakir+900@syncfusion.com';
|
|
1180
|
+
sendForSign.enableSigningOrder = false;
|
|
1181
|
+
sendForSign.useTextTags = false;
|
|
1182
|
+
sendForSign.hideDocumentId = false;
|
|
1183
|
+
sendForSign.expiryValue = 60;
|
|
1184
|
+
sendForSign.disableEmails = false;
|
|
1185
|
+
sendForSign.disableSMS = false;
|
|
1186
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendForSign);
|
|
1187
|
+
console.log('Document created with ID:', sendDocumentResponse.documentId);
|
|
1188
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
1189
|
+
} catch (error:any) {
|
|
1190
|
+
console.error('Error occurred while sending the document for signing:', error.message);
|
|
1191
|
+
expect(error.message).toBeUndefined();
|
|
1192
|
+
}
|
|
1193
|
+
}, 20000);
|
|
1194
|
+
test('Test54:should fail to send document on behalf of another user with invalid onbehalf email', async () => {
|
|
1195
|
+
try {
|
|
1196
|
+
const formField = new FormField();
|
|
1197
|
+
formField.fieldType = FormField.FieldTypeEnum.Signature;
|
|
1198
|
+
formField.pageNumber = 1;
|
|
1199
|
+
formField.bounds = { x: 50, y: 50, width: 200, height: 25 };
|
|
1200
|
+
const documentSigner = new DocumentSigner();
|
|
1201
|
+
documentSigner.name = 'Test Signer';
|
|
1202
|
+
documentSigner.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
1203
|
+
documentSigner.signerOrder = 1;
|
|
1204
|
+
documentSigner.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
1205
|
+
documentSigner.formFields = [formField];
|
|
1206
|
+
const reminderSettings = new ReminderSettings();
|
|
1207
|
+
reminderSettings.reminderDays = 3;
|
|
1208
|
+
reminderSettings.reminderCount = 5;
|
|
1209
|
+
reminderSettings.enableAutoReminder = false;
|
|
1210
|
+
const sendForSign = new SendForSign();
|
|
1211
|
+
sendForSign.title = 'SDK Document Test case';
|
|
1212
|
+
sendForSign.message = 'Testing document from SDK integration test case';
|
|
1213
|
+
sendForSign.files = [fs.createReadStream('tests/documents/agreement.pdf')];
|
|
1214
|
+
sendForSign.disableExpiryAlert = false;
|
|
1215
|
+
sendForSign.reminderSettings = reminderSettings;
|
|
1216
|
+
sendForSign.enableReassign = true;
|
|
1217
|
+
sendForSign.signers = [documentSigner];
|
|
1218
|
+
sendForSign.enablePrintAndSign = false;
|
|
1219
|
+
sendForSign.autoDetectFields = false;
|
|
1220
|
+
sendForSign.onBehalfOf = 'invalid-email';
|
|
1221
|
+
sendForSign.enableSigningOrder = false;
|
|
1222
|
+
sendForSign.useTextTags = false;
|
|
1223
|
+
sendForSign.hideDocumentId = false;
|
|
1224
|
+
sendForSign.expiryValue = 60;
|
|
1225
|
+
sendForSign.disableEmails = false;
|
|
1226
|
+
sendForSign.disableSMS = false;
|
|
1227
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendForSign);
|
|
1228
|
+
} catch (error:any) {
|
|
1229
|
+
console.error('Error occurred while sending the document for signing:', error);
|
|
1230
|
+
expect(error).toBeDefined();
|
|
1231
|
+
expect(error.response.status).toBe(400);
|
|
1232
|
+
expect(error.response.statusText).toBe('Bad Request');
|
|
1233
|
+
}
|
|
1234
|
+
}, 20000);
|
|
1235
|
+
test('Test55: should fail to download a document on behalf using invalid document ID', async () => {
|
|
1236
|
+
try {
|
|
1237
|
+
const onBehalfOfEmail = 'mohammedmushraf.abuthakir+900@syncfusion.com';
|
|
1238
|
+
const invalidDocumentId = 'invalid-document-id-1234';
|
|
1239
|
+
const downloadResponse = await documentApi.downloadDocument(invalidDocumentId, onBehalfOfEmail);
|
|
1240
|
+
console.error("Expected an error but got a successful response:", downloadResponse);
|
|
1241
|
+
fail('Expected error was not thrown for invalid document ID');
|
|
1242
|
+
} catch (error:any) {
|
|
1243
|
+
console.log("Expected error received for invalid document ID:",);
|
|
1244
|
+
expect(error).toBeDefined();
|
|
1245
|
+
expect(error.response.status).toBe(400);
|
|
1246
|
+
expect(error.response.statusText).toBe('Bad Request');
|
|
1247
|
+
}
|
|
1248
|
+
}, 20000);
|
|
1249
|
+
test('Test56: should fail to download a document with invalid onBehalfOf email', async () => {
|
|
1250
|
+
try {
|
|
1251
|
+
const invalidOnBehalfOfEmail = "invalid-email";
|
|
1252
|
+
const documentId = "invalid-document-id";
|
|
1253
|
+
const downloadResponse = await documentApi.downloadDocument(documentId,invalidOnBehalfOfEmail);
|
|
1254
|
+
console.error("Expected error, but got success:", downloadResponse);
|
|
1255
|
+
fail('Expected failure for invalid onBehalfOf email was not thrown');
|
|
1256
|
+
} catch (error:any) {
|
|
1257
|
+
console.log("Expected error received:");
|
|
1258
|
+
expect(error).toBeDefined();
|
|
1259
|
+
expect(error.response.status).toBe(400);
|
|
1260
|
+
expect(error.response.statusText).toBe('Bad Request');
|
|
1261
|
+
}
|
|
1262
|
+
}, 20000);
|
|
1263
|
+
test('Test57:should create an embedded document request URL', async () => {
|
|
1264
|
+
try {
|
|
1265
|
+
const rectangle = { x: 50, y: 50, width: 200, height: 30 };
|
|
1266
|
+
const formField = new FormField();
|
|
1267
|
+
formField.fieldType = FormField.FieldTypeEnum.Signature;
|
|
1268
|
+
formField.pageNumber = 1;
|
|
1269
|
+
formField.bounds = rectangle;
|
|
1270
|
+
const documentSigner = new DocumentSigner();
|
|
1271
|
+
documentSigner.name = 'Signer Name 1';
|
|
1272
|
+
documentSigner.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
1273
|
+
documentSigner.signerOrder = 1;
|
|
1274
|
+
documentSigner.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
1275
|
+
documentSigner.authenticationType = DocumentSigner.AuthenticationTypeEnum.AccessCode;
|
|
1276
|
+
documentSigner.authenticationCode = '123456';
|
|
1277
|
+
documentSigner.authenticationSettings = {
|
|
1278
|
+
authenticationFrequency: AuthenticationSettings.AuthenticationFrequencyEnum.EveryAccess
|
|
1279
|
+
};
|
|
1280
|
+
documentSigner.privateMessage = 'This is private message for signer';
|
|
1281
|
+
documentSigner.formFields = [formField];
|
|
1282
|
+
documentSigner.locale = DocumentSigner.LocaleEnum.En;
|
|
1283
|
+
const embeddedDocumentRequest = new EmbeddedDocumentRequest();
|
|
1284
|
+
embeddedDocumentRequest.title = 'Sent from API Java SDK';
|
|
1285
|
+
embeddedDocumentRequest.showToolbar = true;
|
|
1286
|
+
embeddedDocumentRequest.showNavigationButtons = true;
|
|
1287
|
+
embeddedDocumentRequest.showPreviewButton = true;
|
|
1288
|
+
embeddedDocumentRequest.showSendButton = true;
|
|
1289
|
+
embeddedDocumentRequest.showSaveButton = true;
|
|
1290
|
+
embeddedDocumentRequest.sendViewOption = EmbeddedDocumentRequest.SendViewOptionEnum.PreparePage;
|
|
1291
|
+
embeddedDocumentRequest.locale = EmbeddedDocumentRequest.LocaleEnum.En;
|
|
1292
|
+
embeddedDocumentRequest.showTooltip = false;
|
|
1293
|
+
embeddedDocumentRequest.redirectUrl = 'https://boldsign.dev/sign/redirect';
|
|
1294
|
+
embeddedDocumentRequest.message = 'This is document message sent from API Java SDK';
|
|
1295
|
+
embeddedDocumentRequest.enableSigningOrder = false;
|
|
1296
|
+
embeddedDocumentRequest.signers = [documentSigner];
|
|
1297
|
+
const filePath = 'tests/documents/agreement.pdf';
|
|
1298
|
+
const file = fs.createReadStream(filePath);
|
|
1299
|
+
embeddedDocumentRequest.files = [file];
|
|
1300
|
+
const response = await documentApi.createEmbeddedRequestUrlDocument(embeddedDocumentRequest);
|
|
1301
|
+
expect(response.sendUrl).toBeDefined();
|
|
1302
|
+
} catch (error:any) {
|
|
1303
|
+
console.log('Error occurred while creating the embedded document URL:', error.message);
|
|
1304
|
+
expect(error.message).toBeUndefined();
|
|
1305
|
+
}
|
|
1306
|
+
}, 20000);
|
|
1307
|
+
test('Test58: should fail to create an embedded document request URL with invalid signer email', async () => {
|
|
1308
|
+
try {
|
|
1309
|
+
const rectangle = { x: 50, y: 50, width: 200, height: 30 };
|
|
1310
|
+
const formField = new FormField();
|
|
1311
|
+
formField.fieldType = FormField.FieldTypeEnum.Signature;
|
|
1312
|
+
formField.pageNumber = 1;
|
|
1313
|
+
formField.bounds = rectangle;
|
|
1314
|
+
const documentSigner = new DocumentSigner();
|
|
1315
|
+
documentSigner.name = 'Signer Name 1';
|
|
1316
|
+
documentSigner.emailAddress = 'invalid-email';
|
|
1317
|
+
documentSigner.signerOrder = 1;
|
|
1318
|
+
documentSigner.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
1319
|
+
documentSigner.authenticationCode = '1123';
|
|
1320
|
+
documentSigner.privateMessage = 'This is private message for signer';
|
|
1321
|
+
documentSigner.formFields = [formField];
|
|
1322
|
+
documentSigner.locale = DocumentSigner.LocaleEnum.En;
|
|
1323
|
+
const embeddedDocumentRequest = new EmbeddedDocumentRequest();
|
|
1324
|
+
embeddedDocumentRequest.title = 'Sent from API Java SDK';
|
|
1325
|
+
embeddedDocumentRequest.showToolbar = true;
|
|
1326
|
+
embeddedDocumentRequest.showNavigationButtons = true;
|
|
1327
|
+
embeddedDocumentRequest.showPreviewButton = true;
|
|
1328
|
+
embeddedDocumentRequest.showSendButton = true;
|
|
1329
|
+
embeddedDocumentRequest.showSaveButton = true;
|
|
1330
|
+
embeddedDocumentRequest.sendViewOption = EmbeddedDocumentRequest.SendViewOptionEnum.PreparePage;
|
|
1331
|
+
embeddedDocumentRequest.locale = EmbeddedDocumentRequest.LocaleEnum.En;
|
|
1332
|
+
embeddedDocumentRequest.showTooltip = false;
|
|
1333
|
+
embeddedDocumentRequest.redirectUrl = 'https://boldsign.dev/sign/redirect';
|
|
1334
|
+
embeddedDocumentRequest.message = 'This is document message sent from API Java SDK';
|
|
1335
|
+
embeddedDocumentRequest.enableSigningOrder = false;
|
|
1336
|
+
embeddedDocumentRequest.signers = [documentSigner];
|
|
1337
|
+
const filePath = 'tests/documents/agreement.pdf';
|
|
1338
|
+
const file = fs.createReadStream(filePath);
|
|
1339
|
+
embeddedDocumentRequest.files = [file];
|
|
1340
|
+
const response = await documentApi.createEmbeddedRequestUrlDocument(embeddedDocumentRequest);
|
|
1341
|
+
console.error('Expected failure but got response:', response);
|
|
1342
|
+
fail('Expected error due to invalid signer email was not thrown');
|
|
1343
|
+
} catch (error: any) {
|
|
1344
|
+
console.log('Expected error occurred while creating the embedded document URL:', error);
|
|
1345
|
+
expect(error).toBeDefined();
|
|
1346
|
+
expect(error.response?.status).toBeGreaterThanOrEqual(400);
|
|
1347
|
+
expect(error.response.statusText).toBe('Bad Request');
|
|
1348
|
+
}
|
|
1349
|
+
}, 20000);
|
|
1350
|
+
test('Test59: should send a document with radio buttons and form fields', async () => {
|
|
1351
|
+
try {
|
|
1352
|
+
const radioButtonField1 = new FormField();
|
|
1353
|
+
radioButtonField1.id = "RadioButton1";
|
|
1354
|
+
radioButtonField1.name = "RadioButton1";
|
|
1355
|
+
radioButtonField1.fieldType = FormField.FieldTypeEnum.RadioButton;
|
|
1356
|
+
radioButtonField1.value = "OFF";
|
|
1357
|
+
radioButtonField1.pageNumber = 1;
|
|
1358
|
+
radioButtonField1.font = FormField.FontEnum.Helvetica;
|
|
1359
|
+
radioButtonField1.isRequired = true;
|
|
1360
|
+
radioButtonField1.groupName = "Group1";
|
|
1361
|
+
radioButtonField1.bounds = {
|
|
1362
|
+
x: 50.0,
|
|
1363
|
+
y: 50.0,
|
|
1364
|
+
width: 100.0,
|
|
1365
|
+
height: 150.0,
|
|
1366
|
+
};
|
|
1367
|
+
const radioButtonField2 = new FormField();
|
|
1368
|
+
radioButtonField2.id = "RadioButton2";
|
|
1369
|
+
radioButtonField2.name = "RadioButton2";
|
|
1370
|
+
radioButtonField2.fieldType = FormField.FieldTypeEnum.RadioButton;
|
|
1371
|
+
radioButtonField2.value = "ON";
|
|
1372
|
+
radioButtonField2.pageNumber = 1;
|
|
1373
|
+
radioButtonField2.font = FormField.FontEnum.Helvetica;
|
|
1374
|
+
radioButtonField2.isRequired = true;
|
|
1375
|
+
radioButtonField2.groupName = "Group1";
|
|
1376
|
+
radioButtonField2.bounds = {
|
|
1377
|
+
x: 50.0,
|
|
1378
|
+
y: 100.0,
|
|
1379
|
+
width: 100.0,
|
|
1380
|
+
height: 150.0,
|
|
1381
|
+
};
|
|
1382
|
+
const signer = new DocumentSigner();
|
|
1383
|
+
signer.name = "Mohammed Mushraf";
|
|
1384
|
+
signer.emailAddress = "mohammedmushraf.abuthakir+300@syncfusion.com";
|
|
1385
|
+
signer.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
1386
|
+
signer.formFields = [radioButtonField1, radioButtonField2];
|
|
1387
|
+
signer.locale = DocumentSigner.LocaleEnum.En;
|
|
1388
|
+
const reminderSettings = new ReminderSettings();
|
|
1389
|
+
reminderSettings.reminderDays = 3;
|
|
1390
|
+
reminderSettings.reminderCount = 5;
|
|
1391
|
+
reminderSettings.enableAutoReminder = false;
|
|
1392
|
+
const sendForSign = new SendForSign();
|
|
1393
|
+
sendForSign.files = [fs.createReadStream("tests/documents/agreement.pdf")];
|
|
1394
|
+
sendForSign.title = "SDK Document Test case";
|
|
1395
|
+
sendForSign.message = "Please sign this.";
|
|
1396
|
+
sendForSign.reminderSettings = reminderSettings;
|
|
1397
|
+
sendForSign.disableExpiryAlert = false;
|
|
1398
|
+
sendForSign.enableReassign = true;
|
|
1399
|
+
sendForSign.signers = [signer];
|
|
1400
|
+
sendForSign.enablePrintAndSign = false;
|
|
1401
|
+
sendForSign.disableEmails = false;
|
|
1402
|
+
sendForSign.disableSMS = false;
|
|
1403
|
+
sendForSign.autoDetectFields = false;
|
|
1404
|
+
sendForSign.enableSigningOrder = false;
|
|
1405
|
+
sendForSign.useTextTags = false;
|
|
1406
|
+
sendForSign.hideDocumentId = false;
|
|
1407
|
+
const response = await documentApi.sendDocument(sendForSign);
|
|
1408
|
+
expect(response.documentId).toBeDefined();
|
|
1409
|
+
console.log(`Successfully sent document for signing. Document ID: ${response.documentId}`);
|
|
1410
|
+
} catch (error) {
|
|
1411
|
+
console.error('Error occurred while sending document with radio buttons:', error);
|
|
1412
|
+
expect(error).toBeUndefined();
|
|
1413
|
+
}
|
|
1414
|
+
}, 20000);
|
|
1415
|
+
test('Test60: should fail to send a document with missing title', async () => {
|
|
1416
|
+
try {
|
|
1417
|
+
const signer1 = new DocumentSigner();
|
|
1418
|
+
signer1.name = 'Test Signer';
|
|
1419
|
+
signer1.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
1420
|
+
signer1.signerOrder = 1;
|
|
1421
|
+
signer1.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
1422
|
+
signer1.authenticationType = DocumentSigner.AuthenticationTypeEnum.AccessCode;
|
|
1423
|
+
signer1.authenticationCode = '123456';
|
|
1424
|
+
const formField1 = new FormField();
|
|
1425
|
+
formField1.name = 'Sign';
|
|
1426
|
+
formField1.fieldType = FormField.FieldTypeEnum.Signature;
|
|
1427
|
+
formField1.font = FormField.FontEnum.Helvetica;
|
|
1428
|
+
formField1.pageNumber = 1;
|
|
1429
|
+
formField1.isRequired = true;
|
|
1430
|
+
formField1.bounds = new Rectangle();
|
|
1431
|
+
signer1.formFields = [formField1];
|
|
1432
|
+
signer1.privateMessage = 'This is a private message for signer';
|
|
1433
|
+
const sendDocumentRequest = new SendForSign();
|
|
1434
|
+
sendDocumentRequest.title = '';
|
|
1435
|
+
sendDocumentRequest.files = [fs.createReadStream('tests/documents/agreement.pdf')];
|
|
1436
|
+
sendDocumentRequest.enablePrintAndSign = true;
|
|
1437
|
+
sendDocumentRequest.signers = [signer1];
|
|
1438
|
+
sendDocumentRequest.message = 'Please sign this document';
|
|
1439
|
+
await documentApi.sendDocument(sendDocumentRequest);
|
|
1440
|
+
} catch (error: any) {
|
|
1441
|
+
console.log("Expected error occurred:", error);
|
|
1442
|
+
expect(error).toBeDefined();
|
|
1443
|
+
expect(error.response?.status).toBeGreaterThanOrEqual(400);
|
|
1444
|
+
expect(error.response.statusText).toBe('Bad Request');
|
|
1445
|
+
}
|
|
1446
|
+
}, 20000);
|
|
1447
|
+
test('Test61: should list documents with valid pagination and date filters is Sent Between', async () => {
|
|
1448
|
+
try {
|
|
1449
|
+
const page = 1;
|
|
1450
|
+
const pageSize = 10;
|
|
1451
|
+
const startDate = new Date();
|
|
1452
|
+
startDate.setDate(startDate.getDate() - 30);
|
|
1453
|
+
const endDate = new Date();
|
|
1454
|
+
const dateFilterType = 'SentBetween';
|
|
1455
|
+
const response = await documentApi.listDocuments(page,undefined,undefined,undefined,dateFilterType,pageSize,startDate,undefined,endDate,undefined,undefined,undefined);
|
|
1456
|
+
expect(response.result).toBeDefined();
|
|
1457
|
+
} catch (error: any) {
|
|
1458
|
+
console.error("Error occurred while listing documents:", error);
|
|
1459
|
+
expect(error).toBeUndefined();
|
|
1460
|
+
}
|
|
1461
|
+
}, 20000);
|
|
1462
|
+
test('Test62: should list documents with valid pagination and date filters is Expiring', async () => {
|
|
1463
|
+
try {
|
|
1464
|
+
const page = 1;
|
|
1465
|
+
const pageSize = 10;
|
|
1466
|
+
const startDate = new Date();
|
|
1467
|
+
startDate.setDate(startDate.getDate() - 30);
|
|
1468
|
+
const endDate = new Date();
|
|
1469
|
+
const dateFilterType = "Expiring";
|
|
1470
|
+
const response = await documentApi.listDocuments(page,undefined,undefined,undefined,dateFilterType,pageSize,startDate,undefined,endDate,undefined,undefined,undefined);
|
|
1471
|
+
expect(response.result).toBeDefined();
|
|
1472
|
+
} catch (error: any) {
|
|
1473
|
+
console.error("Error occurred while listing documents:", error);
|
|
1474
|
+
expect(error).toBeUndefined();
|
|
1475
|
+
}
|
|
1476
|
+
}, 20000);
|
|
1477
|
+
test('Test63: should throw error when start date is after end date in listDocuments', async () => {
|
|
1478
|
+
try {
|
|
1479
|
+
const page = 1;
|
|
1480
|
+
const pageSize = 10;
|
|
1481
|
+
const startDate = new Date();
|
|
1482
|
+
const endDate = new Date();
|
|
1483
|
+
endDate.setDate(endDate.getDate() - 30);
|
|
1484
|
+
const dateFilterType = 'SentBetween';
|
|
1485
|
+
await documentApi.listDocuments(page,undefined,undefined,undefined,dateFilterType,pageSize,startDate,undefined,endDate,undefined,undefined,undefined);
|
|
1486
|
+
throw new Error("Expected an error due to start date being after end date.");
|
|
1487
|
+
} catch (error: any) {
|
|
1488
|
+
console.error("Expected error occurred:", error);
|
|
1489
|
+
expect(error).toBeDefined();
|
|
1490
|
+
expect(error.response.status).toBe(400);
|
|
1491
|
+
expect(error.response.statusText).toBe("Bad Request");
|
|
1492
|
+
}
|
|
1493
|
+
}, 20000);
|
|
1494
|
+
test('Test64: should send a scheduled document for signing with existing brand ID and one signer', async () => {
|
|
1495
|
+
try {
|
|
1496
|
+
const scheduledDate = new Date();
|
|
1497
|
+
scheduledDate.setDate(scheduledDate.getDate() + 1);
|
|
1498
|
+
const scheduledSendTime = Math.floor(scheduledDate.getTime() / 1000);
|
|
1499
|
+
const signer1 = new DocumentSigner();
|
|
1500
|
+
signer1.name = 'Test Signer';
|
|
1501
|
+
signer1.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
1502
|
+
signer1.signerOrder = 1;
|
|
1503
|
+
signer1.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
1504
|
+
signer1.authenticationType = DocumentSigner.AuthenticationTypeEnum.AccessCode;
|
|
1505
|
+
signer1.authenticationCode = '123456';
|
|
1506
|
+
const formField1 = new FormField();
|
|
1507
|
+
formField1.name = 'Sign';
|
|
1508
|
+
formField1.fieldType = FormField.FieldTypeEnum.Signature;
|
|
1509
|
+
formField1.font = FormField.FontEnum.Helvetica;
|
|
1510
|
+
formField1.pageNumber = 1;
|
|
1511
|
+
formField1.isRequired = true;
|
|
1512
|
+
formField1.bounds = {
|
|
1513
|
+
x: 50,
|
|
1514
|
+
y: 50,
|
|
1515
|
+
width: 100,
|
|
1516
|
+
height: 50
|
|
1517
|
+
};
|
|
1518
|
+
signer1.formFields = [formField1];
|
|
1519
|
+
signer1.privateMessage = 'This is a private message for signer';
|
|
1520
|
+
const sendDocumentRequest = new SendForSign();
|
|
1521
|
+
sendDocumentRequest.title = 'Document SDK API - Scheduled';
|
|
1522
|
+
sendDocumentRequest.files = [fs.createReadStream('tests/documents/agreement.pdf')];
|
|
1523
|
+
sendDocumentRequest.enablePrintAndSign = true;
|
|
1524
|
+
sendDocumentRequest.signers = [signer1];
|
|
1525
|
+
sendDocumentRequest.message = 'Please sign this document';
|
|
1526
|
+
sendDocumentRequest.scheduledSendTime = scheduledSendTime;
|
|
1527
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
1528
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
1529
|
+
} catch (error) {
|
|
1530
|
+
console.error('Error occurred while sending scheduled document for signing:', error);
|
|
1531
|
+
expect(error).toBeUndefined();
|
|
1532
|
+
}
|
|
1533
|
+
}, 20000);
|
|
1534
|
+
test('Test65: should fail to send a scheduled document for signing with invalid signer email', async () => {
|
|
1535
|
+
try {
|
|
1536
|
+
const scheduledDate = new Date();
|
|
1537
|
+
scheduledDate.setDate(scheduledDate.getDate() + 1);
|
|
1538
|
+
const scheduledSendTime = Math.floor(scheduledDate.getTime() / 1000);
|
|
1539
|
+
const signer1 = new DocumentSigner();
|
|
1540
|
+
signer1.name = 'Test Signer';
|
|
1541
|
+
signer1.emailAddress = 'invalidemail.com';
|
|
1542
|
+
signer1.signerOrder = 1;
|
|
1543
|
+
signer1.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
1544
|
+
signer1.authenticationType = DocumentSigner.AuthenticationTypeEnum.AccessCode;
|
|
1545
|
+
signer1.authenticationCode = '123456';
|
|
1546
|
+
const formField1 = new FormField();
|
|
1547
|
+
formField1.name = 'Sign';
|
|
1548
|
+
formField1.fieldType = FormField.FieldTypeEnum.Signature;
|
|
1549
|
+
formField1.font = FormField.FontEnum.Helvetica;
|
|
1550
|
+
formField1.pageNumber = 1;
|
|
1551
|
+
formField1.isRequired = true;
|
|
1552
|
+
formField1.bounds = {
|
|
1553
|
+
x: 50,
|
|
1554
|
+
y: 50,
|
|
1555
|
+
width: 100,
|
|
1556
|
+
height: 50
|
|
1557
|
+
};
|
|
1558
|
+
signer1.formFields = [formField1];
|
|
1559
|
+
signer1.privateMessage = 'This is a private message for signer';
|
|
1560
|
+
const sendDocumentRequest = new SendForSign();
|
|
1561
|
+
sendDocumentRequest.title = 'Document SDK API - Scheduled';
|
|
1562
|
+
sendDocumentRequest.files = [fs.createReadStream('tests/documents/agreement.pdf')];
|
|
1563
|
+
sendDocumentRequest.enablePrintAndSign = true;
|
|
1564
|
+
sendDocumentRequest.signers = [signer1];
|
|
1565
|
+
sendDocumentRequest.message = 'Please sign this document';
|
|
1566
|
+
sendDocumentRequest.scheduledSendTime = scheduledSendTime;
|
|
1567
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
1568
|
+
expect(sendDocumentResponse).toBeUndefined();
|
|
1569
|
+
} catch (error:any) {
|
|
1570
|
+
console.error('Error occurred while sending scheduled document for signing with invalid email:', error);
|
|
1571
|
+
expect(error).toBeDefined();
|
|
1572
|
+
expect(error.response.status).toBe(400);
|
|
1573
|
+
expect(error.response.statusText).toBe("Bad Request");
|
|
1574
|
+
}
|
|
1575
|
+
}, 20000);
|
|
1576
|
+
|
|
1577
|
+
test('Test66: should send a document with recipient notifications', async () => {
|
|
1578
|
+
try {
|
|
1579
|
+
console.log("Sender email fetched:", senderEmail );
|
|
1580
|
+
const signer1 = new DocumentSigner();
|
|
1581
|
+
signer1.name = 'Test Signer';
|
|
1582
|
+
signer1.emailAddress = 'mohammedmushraf.abuthakir+6@syncfusion.com';
|
|
1583
|
+
signer1.signerOrder = 1;
|
|
1584
|
+
signer1.signerType = DocumentSigner.SignerTypeEnum.Signer;
|
|
1585
|
+
signer1.authenticationType = DocumentSigner.AuthenticationTypeEnum.AccessCode;
|
|
1586
|
+
signer1.authenticationCode = '123456';
|
|
1587
|
+
const formField1 = new FormField();
|
|
1588
|
+
formField1.name = 'Sign';
|
|
1589
|
+
formField1.fieldType = FormField.FieldTypeEnum.Signature;
|
|
1590
|
+
formField1.font = FormField.FontEnum.Helvetica;
|
|
1591
|
+
formField1.pageNumber = 1;
|
|
1592
|
+
formField1.isRequired = true;
|
|
1593
|
+
formField1.bounds = new Rectangle();
|
|
1594
|
+
signer1.formFields = [formField1];
|
|
1595
|
+
signer1.privateMessage = 'This is private message for signer';
|
|
1596
|
+
signer1.recipientNotificationSettings = {
|
|
1597
|
+
signatureRequest: true,
|
|
1598
|
+
declined: true,
|
|
1599
|
+
revoked: true,
|
|
1600
|
+
signed: true,
|
|
1601
|
+
completed: true,
|
|
1602
|
+
expired: true,
|
|
1603
|
+
reassigned: true,
|
|
1604
|
+
deleted: true,
|
|
1605
|
+
reminders: true,
|
|
1606
|
+
editRecipient: true
|
|
1607
|
+
};
|
|
1608
|
+
const sendDocumentRequest = new SendForSign();
|
|
1609
|
+
sendDocumentRequest.title = 'Document SDK API';
|
|
1610
|
+
sendDocumentRequest.files = [fs.createReadStream('tests/documents/agreement.pdf')];
|
|
1611
|
+
sendDocumentRequest.enablePrintAndSign = true;
|
|
1612
|
+
sendDocumentRequest.hideDocumentId = true;
|
|
1613
|
+
sendDocumentRequest.enableReassign = false;
|
|
1614
|
+
sendDocumentRequest.signers = [signer1];
|
|
1615
|
+
const sendDocumentResponse = await documentApi.sendDocument(sendDocumentRequest);
|
|
1616
|
+
expect(sendDocumentResponse.documentId).toBeDefined();
|
|
1617
|
+
const createdDocumentId = sendDocumentResponse.documentId;
|
|
1618
|
+
console.log('Created Document ID:', createdDocumentId);
|
|
1619
|
+
} catch (error) {
|
|
1620
|
+
console.error('Error occurred while sending document for signing:', error);
|
|
1621
|
+
expect(error).toBeUndefined();
|
|
1622
|
+
}
|
|
1623
|
+
}, 20000);
|
|
1624
|
+
});
|