import { expect } from "chai"; import "mocha"; import { CreateSignatureRequest } from "../../src/client/models"; import * as postmark from "../../src/index"; import * as dotenv from "dotenv"; dotenv.config(); describe("Client - Signatures", () => { const runId: string = (() => { const base = process.env.CIRCLE_WORKFLOW_ID || process.env.CIRCLE_BUILD_NUM || process.env.GITHUB_RUN_ID || `${Date.now()}`; const job = process.env.CIRCLE_JOB || process.env.GITHUB_JOB || process.version; return `${base}-${job}`.replace(/[^a-zA-Z0-9._-]/g, "-"); })(); const accountToken: any = process.env.ACCOUNT_API_TOKEN; const testDomainName: any = process.env.DOMAIN_NAME; const client: postmark.AccountClient = new postmark.AccountClient(accountToken); const domainName: string = testDomainName; const signatureTag: string = `nodejs-sig-test-${runId}` function signatureToTest() { return new CreateSignatureRequest("John Smith", `qa+${signatureTag}-${Date.now()}@${domainName}`); } async function cleanup() { const signatures = await client.getSenderSignatures(); for (const sig of signatures.SenderSignatures) { if (sig.EmailAddress.includes(signatureTag)) { try { await client.deleteSenderSignature(sig.ID); } catch (err) { const statusCode = (err as { statusCode?: number } | undefined)?.statusCode; if (statusCode !== 404) throw err; } } } } before(cleanup); after(cleanup); it("createSenderSignature", async () => { const signatureOptions = signatureToTest(); const signatureDetails = await client.createSenderSignature(signatureOptions); expect(signatureDetails.EmailAddress).to.equal(signatureOptions.FromEmail); }); it("getSenderSignatures", async () => { const signatures = await client.getSenderSignatures(); expect(signatures.TotalCount).to.gte(0); }); it("getSenderSignature", async () => { const signatureOptions = signatureToTest(); const signature = await client.createSenderSignature(signatureOptions); const signatureDetails = await client.getSenderSignature(signature.ID); expect(signatureDetails.EmailAddress).to.equal(signatureOptions.FromEmail); }); it("editSenderSignature", async () => { const editName = "Updated name"; const signatureOptions = signatureToTest(); const signature = await client.createSenderSignature(signatureOptions); const signatureDetails = await client.editSenderSignature(signature.ID, { Name: editName }); expect(signatureDetails.Name).to.equal(editName); }); it("deleteSenderSignature", async () => { const signatureOptions = signatureToTest(); const signature = await client.createSenderSignature(signatureOptions); const result: postmark.Models.DefaultResponse = await client.deleteSenderSignature(signature.ID); expect(result.Message.length).to.above(0); }); it("resendSenderSignatureConfirmation", async () => { const signatureOptions = signatureToTest(); const signature = await client.createSenderSignature(signatureOptions); const result: postmark.Models.DefaultResponse = await client.resendSenderSignatureConfirmation(signature.ID); expect(result.Message.length).to.above(0); }); it("resendSenderSignatureConfirmation", async () => { const signatureOptions = signatureToTest(); const signature = await client.createSenderSignature(signatureOptions); const signatureDetails = await client.verifySenderSignatureSPF(signature.ID); expect(signatureDetails.ID).to.eq(signature.ID); }); });