postmark
Version:
Official Node.js client library for the Postmark HTTP API - https://www.postmarkapp.com
100 lines (80 loc) • 3.9 kB
text/typescript
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);
});
});