@jesseditson/dnsimple
Version:
A Node.JS client for the DNSimple API.
226 lines (225 loc) • 12.7 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const nock = require("nock");
const main_1 = require("../lib/main");
const util_1 = require("./util");
const dnsimple = (0, util_1.createTestClient)();
describe("certificates", () => {
describe("#listCertificates", () => {
const accountId = 1010;
const domainId = "example.com";
it("supports pagination", () => __awaiter(void 0, void 0, void 0, function* () {
const scope = nock("https://api.dnsimple.com")
.get("/v2/1010/domains/example.com/certificates?page=1")
.reply((0, util_1.readFixtureAt)("listCertificates/success.http"));
yield dnsimple.certificates.listCertificates(accountId, domainId, {
page: 1,
});
expect(scope.isDone()).toBeTruthy();
}));
it("supports extra request options", () => __awaiter(void 0, void 0, void 0, function* () {
const scope = nock("https://api.dnsimple.com")
.get("/v2/1010/domains/example.com/certificates?foo=bar")
.reply((0, util_1.readFixtureAt)("listCertificates/success.http"));
yield dnsimple.certificates.listCertificates(accountId, domainId, {
foo: "bar",
});
expect(scope.isDone()).toBeTruthy();
}));
it("supports sorting", () => __awaiter(void 0, void 0, void 0, function* () {
const scope = nock("https://api.dnsimple.com")
.get("/v2/1010/domains/example.com/certificates?sort=expiration%3Aasc")
.reply((0, util_1.readFixtureAt)("listCertificates/success.http"));
yield dnsimple.certificates.listCertificates(accountId, domainId, {
sort: "expiration:asc",
});
expect(scope.isDone()).toBeTruthy();
}));
it("produces a certificate list", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/domains/example.com/certificates")
.reply((0, util_1.readFixtureAt)("listCertificates/success.http"));
const response = yield dnsimple.certificates.listCertificates(accountId, domainId);
const certificates = response.data;
expect(certificates.length).toBe(2);
expect(certificates[0].id).toBe(101973);
expect(certificates[0].domain_id).toBe(14279);
expect(certificates[0].common_name).toBe("www2.dnsimple.us");
}));
it("exposes the pagination info", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/domains/example.com/certificates")
.reply((0, util_1.readFixtureAt)("listCertificates/success.http"));
const response = yield dnsimple.certificates.listCertificates(accountId, domainId);
const pagination = response.pagination;
expect(pagination).not.toBe(null);
expect(pagination.current_page).toBe(1);
}));
});
describe("#listCertificates.collectAll", () => {
const accountId = 1010;
const domainId = "example.com";
it("produces a complete list", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/domains/example.com/certificates?page=1")
.reply((0, util_1.readFixtureAt)("pages-1of3.http"));
nock("https://api.dnsimple.com")
.get("/v2/1010/domains/example.com/certificates?page=2")
.reply((0, util_1.readFixtureAt)("pages-2of3.http"));
nock("https://api.dnsimple.com")
.get("/v2/1010/domains/example.com/certificates?page=3")
.reply((0, util_1.readFixtureAt)("pages-3of3.http"));
const certificates = yield dnsimple.certificates.listCertificates.collectAll(accountId, domainId);
expect(certificates.length).toBe(5);
expect(certificates[0].id).toBe(1);
expect(certificates[4].id).toBe(5);
}));
});
describe("#getCertificate", () => {
const accountId = 1010;
const domainId = "example.com";
const certificateId = 1;
it("produces a certificate", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/domains/example.com/certificates/1")
.reply((0, util_1.readFixtureAt)("getCertificate/success.http"));
const response = yield dnsimple.certificates.getCertificate(accountId, domainId, certificateId);
const certificate = response.data;
expect(certificate.id).toBe(101967);
expect(certificate.domain_id).toBe(289333);
expect(certificate.contact_id).toBe(2511);
expect(certificate.common_name).toBe("www.bingo.pizza");
expect(certificate.alternate_names).toEqual([]);
expect(certificate.state).toBe("issued");
expect(certificate.expires_on).toBe("2020-09-16");
}));
describe("when the certificate does not exist", () => {
it("produces an error", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/domains/example.com/certificates/0")
.reply((0, util_1.readFixtureAt)("notfound-certificate.http"));
try {
yield dnsimple.certificates.getCertificate(accountId, domainId, 0);
}
catch (error) {
expect(error).not.toBe(null);
expect(error).toBeInstanceOf(main_1.NotFoundError);
expect(error.data.message).toBe("Certificate `0` not found");
}
}));
});
});
describe("#downloadCertificate", () => {
const accountId = 1010;
const domainId = "example.com";
const certificateId = 1;
it("produces a certificate", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/domains/example.com/certificates/1/download")
.reply((0, util_1.readFixtureAt)("downloadCertificate/success.http"));
const response = yield dnsimple.certificates.downloadCertificate(accountId, domainId, certificateId);
const certificate = response.data;
expect(certificate.server).toMatch(/-----BEGIN CERTIFICATE-----/);
expect(certificate.root).toBe(null);
expect(certificate.chain.length).toBe(1);
expect(certificate.chain[0]).toMatch(/-----BEGIN CERTIFICATE-----/);
}));
describe("when the certificate does not exist", () => {
it("produces an error", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/domains/example.com/certificates/0/download")
.reply((0, util_1.readFixtureAt)("notfound-certificate.http"));
yield expect(dnsimple.certificates.downloadCertificate(accountId, domainId, 0)).rejects.toThrow();
}));
});
});
describe("#getCertificatePrivateKey", () => {
const accountId = 1010;
const domainId = "example.com";
const certificateId = 1;
it("produces a certificate", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/domains/example.com/certificates/1/private_key")
.reply((0, util_1.readFixtureAt)("getCertificatePrivateKey/success.http"));
const response = yield dnsimple.certificates.getCertificatePrivateKey(accountId, domainId, certificateId);
expect(response.data.private_key).toMatch(/-----BEGIN RSA PRIVATE KEY-----/);
}));
describe("when the certificate does not exist", () => {
it("produces an error", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/domains/example.com/certificates/0/private_key")
.reply((0, util_1.readFixtureAt)("notfound-certificate.http"));
try {
yield dnsimple.certificates.getCertificatePrivateKey(accountId, domainId, 0);
}
catch (error) {
expect(error).not.toBe(null);
}
}));
});
});
describe("#purchaseLetsencryptCertificate", () => {
const accountId = 1010;
const domainId = "example.com";
it("purchases a certificate", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.post("/v2/1010/domains/example.com/certificates/letsencrypt")
.reply((0, util_1.readFixtureAt)("purchaseLetsencryptCertificate/success.http"));
const response = yield dnsimple.certificates.purchaseLetsencryptCertificate(accountId, domainId, {});
const certificate = response.data;
expect(certificate.id).toBe(101967);
}));
});
describe("#issueLetsencryptCertificate", () => {
const accountId = 1010;
const domainId = "example.com";
const certificateId = 101967;
it("issues a certificate", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.post(`/v2/1010/domains/example.com/certificates/letsencrypt/${certificateId}/issue`)
.reply((0, util_1.readFixtureAt)("issueLetsencryptCertificate/success.http"));
const response = yield dnsimple.certificates.issueLetsencryptCertificate(accountId, domainId, certificateId);
const certificate = response.data;
expect(certificate.id).toBe(certificateId);
}));
});
describe("#purchaseLetsencryptCertificateRenewal", () => {
const accountId = 1010;
const domainId = "example.com";
const certificateId = 101967;
it("purchases a certificate renewal", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.post(`/v2/1010/domains/example.com/certificates/letsencrypt/${certificateId}/renewals`)
.reply((0, util_1.readFixtureAt)("purchaseRenewalLetsencryptCertificate/success.http"));
const response = yield dnsimple.certificates.purchaseLetsencryptCertificateRenewal(accountId, domainId, certificateId, {});
const certificateRenewal = response.data;
expect(certificateRenewal.id).toBe(65082);
expect(certificateRenewal.old_certificate_id).toBe(certificateId);
expect(certificateRenewal.new_certificate_id).toBe(101972);
}));
});
describe("#issueLetsencryptCertificateRenewal", () => {
const accountId = 1010;
const domainId = "example.com";
const certificateId = 101967;
const certificateRenewalId = 65082;
const newCertificateId = 101972;
it("issues a certificate renewal", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.post(`/v2/1010/domains/example.com/certificates/letsencrypt/${certificateId}/renewals/${certificateRenewalId}/issue`)
.reply((0, util_1.readFixtureAt)("issueRenewalLetsencryptCertificate/success.http"));
const response = yield dnsimple.certificates.issueLetsencryptCertificateRenewal(accountId, domainId, certificateId, certificateRenewalId);
const newCertificate = response.data;
expect(newCertificate.id).toBe(newCertificateId);
}));
});
});
;