Files
is-a-dev/tests/cpanel.test.js
T
2024-07-29 08:34:45 +08:00

211 lines
7.5 KiB
JavaScript

const R = require("ramda");
const { CpanelClient } = require("../utils/lib/cpanel");
const mockFetch =
(expectRequest, decorate = R.identity) =>
(reqUrl, request) => {
expectRequest(reqUrl, request);
return Promise.resolve({
json: async () => decorate(request),
});
};
describe("Cpanel client", () => {
describe("fetchzonerecords", () => {
it("should make the correct request", async () => {
const fetch = mockFetch((url, request) => {
expect(url).toBe(
"https://example.com:2000/json-api/cpanel?customonly=0&domain=a.b&cpanel_jsonapi_user=boy&cpanel_jsonapi_module=ZoneEdit&cpanel_jsonapi_func=fetchzone_records&cpanel_jsonapi_apiversion=2",
);
expect(request).toEqual({
headers: {
Authorization: "cpanel boy:boybyebye",
},
rejectUnauthorized: false,
});
});
const cpanel = CpanelClient({
host: "example.com",
port: 2000,
username: "boy",
apiKey: "boybyebye",
domain: "a.b",
dependencies: { fetch },
});
await cpanel.zone.fetch();
});
it("should make the correct request with query", async () => {
const fetch = mockFetch((url, request) => {
expect(url).toBe(
"https://example.com:2000/json-api/cpanel?customonly=0&domain=foobar.boeey&cpanel_jsonapi_user=boy&cpanel_jsonapi_module=ZoneEdit&cpanel_jsonapi_func=fetchzone_records&cpanel_jsonapi_apiversion=2",
);
expect(request).toEqual({
headers: {
Authorization: "cpanel boy:boybyebye",
},
rejectUnauthorized: false,
});
});
const cpanel = CpanelClient({
host: "example.com",
port: 2000,
username: "boy",
apiKey: "boybyebye",
domain: "a.b",
dependencies: { fetch },
});
await cpanel.zone.fetch({ domain: "foobar.boeey" });
});
});
describe("addzonerecord", () => {
it("should make the correct request", async () => {
const fetch = mockFetch((url, request) => {
expect(url).toBe(
"https://example.com:2000/json-api/cpanel?domain=a.b&name=googo&type=CNAME&cname=beey&ttl=2020&cpanel_jsonapi_user=boy&cpanel_jsonapi_module=ZoneEdit&cpanel_jsonapi_func=add_zone_record&cpanel_jsonapi_apiversion=2",
);
expect(request).toEqual({
headers: {
Authorization: "cpanel boy:boybyebye",
},
rejectUnauthorized: false,
});
});
const cpanel = CpanelClient({
host: "example.com",
port: 2000,
username: "boy",
apiKey: "boybyebye",
domain: "a.b",
dependencies: { fetch },
});
await cpanel.zone.add({
name: "googo",
type: "boyee",
cname: "beey",
type: "CNAME",
ttl: 2020,
});
});
});
describe("addzonerecord", () => {
it("should make the correct request", async () => {
const fetch = mockFetch((url, request) => {
expect(url).toBe(
"https://example.com:2000/json-api/cpanel?domain=a.b&line=500&cpanel_jsonapi_user=boy&cpanel_jsonapi_module=ZoneEdit&cpanel_jsonapi_func=remove_zone_record&cpanel_jsonapi_apiversion=2",
);
expect(request).toEqual({
headers: {
Authorization: "cpanel boy:boybyebye",
},
rejectUnauthorized: false,
});
});
const cpanel = CpanelClient({
host: "example.com",
port: 2000,
username: "boy",
apiKey: "boybyebye",
domain: "a.b",
dependencies: { fetch },
});
await cpanel.zone.remove({
line: 500,
});
});
});
describe("fetchredirections", () => {
it("should make the correct request", async () => {
const fetch = mockFetch((url, request) => {
expect(url).toBe(
"https://example.com:2000/execute/Mime/list_redirects?cpanel_jsonapi_user=boy&cpanel_jsonapi_module=Mime&cpanel_jsonapi_func=list_redirects&cpanel_jsonapi_apiversion=2",
);
expect(request).toEqual({
headers: {
Authorization: "cpanel boy:boybyebye",
},
rejectUnauthorized: false,
});
});
const cpanel = CpanelClient({
host: "example.com",
port: 2000,
username: "boy",
apiKey: "boybyebye",
domain: "a.b",
dependencies: { fetch },
});
await cpanel.redirection.fetch();
});
});
describe("addredirection", () => {
it("should make the correct request", async () => {
const fetch = mockFetch((url, request) => {
expect(url).toBe(
"https://example.com:2000/execute/Mime/add_redirect?domain=googo&destination=https%3A%2F%2Foodf.com&cpanel_jsonapi_user=boy&cpanel_jsonapi_module=Mime&cpanel_jsonapi_func=add_redirect&cpanel_jsonapi_apiversion=2",
);
expect(request).toEqual({
headers: {
Authorization: "cpanel boy:boybyebye",
},
rejectUnauthorized: false,
});
});
const cpanel = CpanelClient({
host: "example.com",
port: 2000,
username: "boy",
apiKey: "boybyebye",
domain: "a.b",
dependencies: { fetch },
});
await cpanel.redirection.add({
domain: "googo",
destination: "https://oodf.com",
});
});
});
describe("deleteredirection", () => {
it("should make the correct request", async () => {
const fetch = mockFetch((url, request) => {
expect(url).toBe(
"https://example.com:2000/execute/Mime/delete_redirect?domain=googo&cpanel_jsonapi_user=boy&cpanel_jsonapi_module=Mime&cpanel_jsonapi_func=delete_redirect&cpanel_jsonapi_apiversion=2",
);
expect(request).toEqual({
headers: {
Authorization: "cpanel boy:boybyebye",
},
rejectUnauthorized: false,
});
});
const cpanel = CpanelClient({
host: "example.com",
port: 2000,
username: "boy",
apiKey: "boybyebye",
domain: "a.b",
dependencies: { fetch },
});
await cpanel.redirection.remove({ domain: "googo" });
});
});
});