tests
This commit is contained in:
1 parent
2a7bde9574
commit
0c36c8e625
3 files changed
+91
No files matched your search
@@ -13,6 +13,7 @@ const config: Config = {
|
||||
"^@/(.*)\\.ts$": "<rootDir>/src/$1.ts",
|
||||
"^@/(.*)\\.js$": "<rootDir>/src/$1.ts",
|
||||
"^@/(.*)$": "<rootDir>/src/$1",
|
||||
"^(\\.{1,2}/.*)\\.js$": "$1",
|
||||
},
|
||||
testMatch: ["<rootDir>/test/**/*.test.ts"],
|
||||
setupFilesAfterEnv: [],
|
||||
|
||||
@@ -64,8 +64,10 @@ import { PortProvider } from "@/service/infrastructure/network/PortProvider.js";
|
||||
import { GameProvider } from "@/service/infrastructure/network/GameProvider.js";
|
||||
import { GrpcProvider } from "@/service/infrastructure/network/GrpcProvider.js";
|
||||
import { WebSocketProvider } from "@/service/infrastructure/network/WebSocketProvider.js";
|
||||
import { DNSProvider } from "@/service/infrastructure/network/DNSProvider.js";
|
||||
|
||||
// Third-party
|
||||
import { Resolver } from "dns/promises";
|
||||
import axios from "axios";
|
||||
import got from "got";
|
||||
import ping from "ping";
|
||||
@@ -226,6 +228,7 @@ export const initializeServices = async ({
|
||||
const gameProvider = new GameProvider(logger, GameDig);
|
||||
const grpcProvider = new GrpcProvider(grpc, protoLoader);
|
||||
const webSocketProvider = new WebSocketProvider(WebSocket);
|
||||
const dnsProvider = new DNSProvider(new Resolver());
|
||||
|
||||
const networkService = new NetworkService(axios, logger, [
|
||||
pingProvider,
|
||||
@@ -237,6 +240,7 @@ export const initializeServices = async ({
|
||||
gameProvider,
|
||||
grpcProvider,
|
||||
webSocketProvider,
|
||||
dnsProvider,
|
||||
]);
|
||||
const emailService = new EmailService(settingsService, fs, path, compile, mjml2html, nodemailer, logger);
|
||||
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
import { describe, expect, it } from "@jest/globals";
|
||||
import { createMonitorBodyValidation, editMonitorBodyValidation, importMonitorsBodyValidation } from "../../../src/validation/monitorValidation.ts";
|
||||
|
||||
const baseDnsBody = {
|
||||
name: "DNS check",
|
||||
type: "dns" as const,
|
||||
url: "example.com",
|
||||
};
|
||||
|
||||
describe("monitorValidation — DNS fields", () => {
|
||||
describe("createMonitorBodyValidation", () => {
|
||||
it("retains dnsServer and dnsRecordType on a DNS monitor", () => {
|
||||
const parsed = createMonitorBodyValidation.parse({
|
||||
...baseDnsBody,
|
||||
dnsServer: "8.8.8.8",
|
||||
dnsRecordType: "A",
|
||||
});
|
||||
|
||||
expect(parsed.dnsServer).toBe("8.8.8.8");
|
||||
expect(parsed.dnsRecordType).toBe("A");
|
||||
});
|
||||
|
||||
it("accepts every supported DNS record type", () => {
|
||||
for (const recordType of ["A", "AAAA", "CNAME", "MX", "TXT", "NS"] as const) {
|
||||
const parsed = createMonitorBodyValidation.parse({
|
||||
...baseDnsBody,
|
||||
dnsServer: "1.1.1.1",
|
||||
dnsRecordType: recordType,
|
||||
});
|
||||
expect(parsed.dnsRecordType).toBe(recordType);
|
||||
}
|
||||
});
|
||||
|
||||
it("rejects unknown DNS record types", () => {
|
||||
expect(() =>
|
||||
createMonitorBodyValidation.parse({
|
||||
...baseDnsBody,
|
||||
dnsServer: "8.8.8.8",
|
||||
dnsRecordType: "BOGUS",
|
||||
})
|
||||
).toThrow();
|
||||
});
|
||||
|
||||
it("treats DNS fields as optional (other monitor types still validate)", () => {
|
||||
const parsed = createMonitorBodyValidation.parse({
|
||||
name: "HTTP check",
|
||||
type: "http",
|
||||
url: "https://example.com",
|
||||
});
|
||||
|
||||
expect(parsed.dnsServer).toBeUndefined();
|
||||
expect(parsed.dnsRecordType).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
describe("editMonitorBodyValidation", () => {
|
||||
it("retains dnsServer and dnsRecordType on edits", () => {
|
||||
const parsed = editMonitorBodyValidation.parse({
|
||||
dnsServer: "1.1.1.1",
|
||||
dnsRecordType: "MX",
|
||||
});
|
||||
|
||||
expect(parsed.dnsServer).toBe("1.1.1.1");
|
||||
expect(parsed.dnsRecordType).toBe("MX");
|
||||
});
|
||||
});
|
||||
|
||||
describe("importMonitorsBodyValidation", () => {
|
||||
it("retains dnsServer and dnsRecordType on imported DNS monitors", () => {
|
||||
const parsed = importMonitorsBodyValidation.parse({
|
||||
monitors: [
|
||||
{
|
||||
name: "Imported DNS",
|
||||
type: "dns",
|
||||
url: "example.com",
|
||||
dnsServer: "8.8.4.4",
|
||||
dnsRecordType: "TXT",
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
expect(parsed.monitors[0].dnsServer).toBe("8.8.4.4");
|
||||
expect(parsed.monitors[0].dnsRecordType).toBe("TXT");
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user