@jesseditson/dnsimple
Version:
A Node.JS client for the DNSimple API.
216 lines (215 loc) • 12.3 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("registrar", () => {
const accountId = 1010;
const domainId = "example.com";
describe("#checkDomain", () => {
const domainId = "ruby.codes";
it("produces a check result", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/registrar/domains/ruby.codes/check")
.reply((0, util_1.readFixtureAt)("checkDomain/success.http"));
const response = yield dnsimple.registrar.checkDomain(accountId, domainId);
const checkResult = response.data;
expect(checkResult.domain).toEqual("ruby.codes");
expect(checkResult.available).toBe(true);
expect(checkResult.premium).toBe(true);
}));
});
describe("#getDomainPremiumPrice", () => {
describe("when the domain has a premium price", () => {
const domainId = "ruby.codes";
it("produces a premium price result", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/registrar/domains/ruby.codes/premium_price")
.reply((0, util_1.readFixtureAt)("getDomainPremiumPrice/success.http"));
const response = yield dnsimple.registrar.getDomainPremiumPrice(accountId, domainId);
const premiumPriceResult = response.data;
expect(premiumPriceResult.premium_price).toEqual("109.00");
expect(premiumPriceResult.action).toEqual("registration");
}));
});
describe("when the domain is not a premium domain", () => {
const domainId = "example.com";
it("produces an error", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/registrar/domains/example.com/premium_price")
.reply((0, util_1.readFixtureAt)("getDomainPremiumPrice/failure.http"));
try {
yield dnsimple.registrar.getDomainPremiumPrice(accountId, domainId);
}
catch (error) {
expect(error).toBeInstanceOf(main_1.ClientError);
expect(error.data.message).toBe("`example.com` is not a premium domain for registration");
}
}));
});
});
describe("#getDomainPrices", () => {
describe("when the TLD is supported", () => {
it("produces a domain prices result", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/registrar/domains/bingo.pizza/prices")
.reply((0, util_1.readFixtureAt)("getDomainPrices/success.http"));
const response = yield dnsimple.registrar.getDomainPrices(accountId, "bingo.pizza");
const pricesResult = response.data;
expect(pricesResult.domain).toEqual("bingo.pizza");
expect(pricesResult.premium).toEqual(true);
expect(pricesResult.registration_price).toEqual(20.0);
expect(pricesResult.renewal_price).toEqual(20.0);
expect(pricesResult.transfer_price).toEqual(20.0);
}));
});
describe("when the TLD is not available", () => {
it("produces an error", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/registrar/domains/bingo.pineaple/prices")
.reply((0, util_1.readFixtureAt)("getDomainPrices/failure.http"));
try {
yield dnsimple.registrar.getDomainPrices(accountId, "bingo.pineaple");
}
catch (error) {
expect(error).toBeInstanceOf(main_1.ClientError);
expect(error.data.message).toBe("TLD .PINEAPPLE is not supported");
}
}));
});
});
describe("#getDomainRegistration", () => {
it("calls the correct method", () => __awaiter(void 0, void 0, void 0, function* () {
const scope = nock("https://api.dnsimple.com")
.get("/v2/1010/registrar/domains/example.com/registrations/1535")
.reply(200);
yield dnsimple.registrar.getDomainRegistration(1010, "example.com", 1535, {});
expect(scope.isDone()).toBeTruthy();
}));
});
describe("#getDomainRenewal", () => {
it("calls the correct method", () => __awaiter(void 0, void 0, void 0, function* () {
const scope = nock("https://api.dnsimple.com")
.get("/v2/1023/registrar/domains/example.com/renewals/1694")
.reply(200);
yield dnsimple.registrar.getDomainRenewal(1023, "example.com", 1694, {});
expect(scope.isDone()).toBeTruthy();
}));
});
describe("#registerDomain", () => {
it("produces a domain", () => __awaiter(void 0, void 0, void 0, function* () {
const attributes = { registrant_id: 10 };
nock("https://api.dnsimple.com")
.post("/v2/1010/registrar/domains/example.com/registrations", attributes)
.reply((0, util_1.readFixtureAt)("registerDomain/success.http"));
const response = yield dnsimple.registrar.registerDomain(accountId, domainId, attributes);
const domainRegistration = response.data;
expect(domainRegistration.id).toBe(1);
expect(domainRegistration.state).toBe("new");
}));
});
describe("#renewDomain", () => {
it("produces a domain", () => __awaiter(void 0, void 0, void 0, function* () {
const attributes = { period: 3 };
nock("https://api.dnsimple.com")
.post("/v2/1010/registrar/domains/example.com/renewals", attributes)
.reply((0, util_1.readFixtureAt)("renewDomain/success.http"));
const response = yield dnsimple.registrar.renewDomain(accountId, domainId, attributes);
const renewDomainal = response.data;
expect(renewDomainal.id).toBe(1);
expect(renewDomainal.state).toBe("new");
}));
describe("when it is too soon for the domain to be renewed", () => {
it("results in an error", () => __awaiter(void 0, void 0, void 0, function* () {
const attributes = {};
nock("https://api.dnsimple.com")
.post("/v2/1010/registrar/domains/example.com/renewals", attributes)
.reply((0, util_1.readFixtureAt)("renewDomain/error-tooearly.http"));
yield expect(dnsimple.registrar.renewDomain(accountId, domainId, attributes)).rejects.toThrow();
}));
});
});
describe("#transferDomain", () => {
const attributes = { registrant_id: 10, auth_code: "x1y2z3" };
it("produces a domain", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.post("/v2/1010/registrar/domains/example.com/transfers", attributes)
.reply((0, util_1.readFixtureAt)("transferDomain/success.http"));
const response = yield dnsimple.registrar.transferDomain(accountId, domainId, attributes);
const domain = response.data;
expect(domain.id).toBe(1);
expect(domain.state).toBe("transferring");
}));
describe("when the domain is already in DNSimple", () => {
it("results in an error", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.post("/v2/1010/registrar/domains/example.com/transfers", attributes)
.reply((0, util_1.readFixtureAt)("transferDomain/error-indnsimple.http"));
yield expect(dnsimple.registrar.transferDomain(accountId, domainId, attributes)).rejects.toThrow();
}));
});
describe("when authcode was not provided and is required by the TLD", () => {
it("results in an error", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.post("/v2/1010/registrar/domains/example.com/transfers", attributes)
.reply((0, util_1.readFixtureAt)("transferDomain/error-missing-authcode.http"));
yield expect(dnsimple.registrar.transferDomain(accountId, domainId, attributes)).rejects.toThrow();
}));
});
});
describe("#getDomainTransfer", () => {
it("retrieves a domain transfer", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.get("/v2/1010/registrar/domains/example.com/transfers/42")
.reply((0, util_1.readFixtureAt)("getDomainTransfer/success.http"));
const response = yield dnsimple.registrar.getDomainTransfer(accountId, domainId, 42);
const domainTransfer = response.data;
expect(domainTransfer.id).toBe(361);
expect(domainTransfer.domain_id).toBe(182245);
expect(domainTransfer.registrant_id).toBe(2715);
expect(domainTransfer.state).toBe("cancelled");
expect(domainTransfer.auto_renew).toBe(false);
expect(domainTransfer.whois_privacy).toBe(false);
expect(domainTransfer.status_description).toBe("Canceled by customer");
expect(domainTransfer.created_at).toBe("2020-06-05T18:08:00Z");
expect(domainTransfer.updated_at).toBe("2020-06-05T18:10:01Z");
}));
});
describe("#cancelDomainTransfer", () => {
it("cancels a domain transfer", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.delete("/v2/1010/registrar/domains/example.com/transfers/42")
.reply((0, util_1.readFixtureAt)("cancelDomainTransfer/success.http"));
const response = yield dnsimple.registrar.cancelDomainTransfer(accountId, domainId, 42);
const domainTransfer = response.data;
expect(domainTransfer.id).toBe(361);
expect(domainTransfer.domain_id).toBe(182245);
expect(domainTransfer.registrant_id).toBe(2715);
expect(domainTransfer.state).toBe("transferring");
expect(domainTransfer.auto_renew).toBe(false);
expect(domainTransfer.whois_privacy).toBe(false);
expect(domainTransfer.status_description).toBe(null);
expect(domainTransfer.created_at).toBe("2020-06-05T18:08:00Z");
expect(domainTransfer.updated_at).toBe("2020-06-05T18:08:04Z");
}));
});
describe("#transferDomainOut", () => {
it("produces nothing", () => __awaiter(void 0, void 0, void 0, function* () {
nock("https://api.dnsimple.com")
.post("/v2/1010/registrar/domains/example.com/authorize_transfer_out")
.reply((0, util_1.readFixtureAt)("authorizeDomainTransferOut/success.http"));
const response = yield dnsimple.registrar.transferDomainOut(accountId, domainId);
expect(response).toEqual({});
}));
});
});
;