mirror of
https://github.com/louislam/uptime-kuma.git
synced 2025-03-04 08:25:57 +00:00
test: backend-test: Add more test cases for TLS monitor
This commit is contained in:
parent
be622ed5bd
commit
ddd7abb05d
1 changed files with 146 additions and 3 deletions
|
@ -3,7 +3,7 @@ const assert = require("node:assert");
|
||||||
const { UP } = require("../../src/util");
|
const { UP } = require("../../src/util");
|
||||||
const { TlsMonitorType } = require("../../server/monitor-types/tls");
|
const { TlsMonitorType } = require("../../server/monitor-types/tls");
|
||||||
|
|
||||||
test("TLS.01: HTTPS good", async () => {
|
test("TLS.HTTPS.good", async () => {
|
||||||
const monitor = {
|
const monitor = {
|
||||||
hostname: "httpstat.us",
|
hostname: "httpstat.us",
|
||||||
port: 443,
|
port: 443,
|
||||||
|
@ -21,7 +21,7 @@ test("TLS.01: HTTPS good", async () => {
|
||||||
assert.ok(heartbeat.msg.startsWith(`Keyword "${monitor.keyword}" contained in response`));
|
assert.ok(heartbeat.msg.startsWith(`Keyword "${monitor.keyword}" contained in response`));
|
||||||
});
|
});
|
||||||
|
|
||||||
test("TLS.02: HTTPS expired", () => {
|
test("TLS.HTTPS.expired", () => {
|
||||||
const monitor = {
|
const monitor = {
|
||||||
hostname: "expired.badssl.com",
|
hostname: "expired.badssl.com",
|
||||||
port: 443,
|
port: 443,
|
||||||
|
@ -38,7 +38,7 @@ test("TLS.02: HTTPS expired", () => {
|
||||||
(e) => e.message.includes("certificate has expired"));
|
(e) => e.message.includes("certificate has expired"));
|
||||||
});
|
});
|
||||||
|
|
||||||
test("TLS.03: HTTPS wrong host", () => {
|
test("TLS.HTTPS.wrong_host", () => {
|
||||||
const monitor = {
|
const monitor = {
|
||||||
hostname: "wrong.host.badssl.com",
|
hostname: "wrong.host.badssl.com",
|
||||||
port: 443,
|
port: 443,
|
||||||
|
@ -54,3 +54,146 @@ test("TLS.03: HTTPS wrong host", () => {
|
||||||
assert.rejects((new TlsMonitorType().check(monitor, heartbeat, null)),
|
assert.rejects((new TlsMonitorType().check(monitor, heartbeat, null)),
|
||||||
(e) => e.message.includes("Hostname/IP does not match certificate's altnames"));
|
(e) => e.message.includes("Hostname/IP does not match certificate's altnames"));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("TLS.SMTP.STARTTLS.good", async () => {
|
||||||
|
const monitor = {
|
||||||
|
hostname: "smtp.mail.yahoo.com",
|
||||||
|
port: 587,
|
||||||
|
tcpStartTls: true,
|
||||||
|
tcpStartTlsPrompt: "220 ",
|
||||||
|
tcpStartTlsCommand: String.raw`STARTTLS\n`,
|
||||||
|
tcpStartTlsResponse: "220 ",
|
||||||
|
tcpRequest: String.raw`QUIT\n`,
|
||||||
|
keyword: "221 ",
|
||||||
|
interval: 3,
|
||||||
|
};
|
||||||
|
const heartbeat = {
|
||||||
|
status: null,
|
||||||
|
msg: null,
|
||||||
|
};
|
||||||
|
await new TlsMonitorType().check(monitor, heartbeat, null);
|
||||||
|
assert.equal(heartbeat.status, UP);
|
||||||
|
assert.ok(heartbeat.msg.startsWith(`Keyword "${monitor.keyword}" contained in response`));
|
||||||
|
});
|
||||||
|
|
||||||
|
test("TLS.SMTP.STARTTLS.invalid_prompt", async () => {
|
||||||
|
const monitor = {
|
||||||
|
hostname: "smtp.mail.yahoo.com",
|
||||||
|
port: 587,
|
||||||
|
tcpStartTls: true,
|
||||||
|
tcpStartTlsPrompt: "666 ",
|
||||||
|
tcpStartTlsCommand: String.raw`STARTTLS\n`,
|
||||||
|
tcpStartTlsResponse: "220 ",
|
||||||
|
tcpRequest: String.raw`QUIT\n`,
|
||||||
|
keyword: "221 ",
|
||||||
|
interval: 3,
|
||||||
|
};
|
||||||
|
const heartbeat = {
|
||||||
|
status: null,
|
||||||
|
msg: null,
|
||||||
|
};
|
||||||
|
assert.rejects((new TlsMonitorType().check(monitor, heartbeat, null)),
|
||||||
|
(e) => e.message.includes("Unexpected STARTTLS prompt"));
|
||||||
|
});
|
||||||
|
|
||||||
|
test("TLS.SMTP.STARTTLS.invalid_command", async () => {
|
||||||
|
const monitor = {
|
||||||
|
hostname: "smtp.mail.yahoo.com",
|
||||||
|
port: 587,
|
||||||
|
tcpStartTls: true,
|
||||||
|
tcpStartTlsPrompt: "220 ",
|
||||||
|
tcpStartTlsCommand: String.raw`CAN_I_HAZ_TLS\n`,
|
||||||
|
tcpStartTlsResponse: "220 ",
|
||||||
|
tcpRequest: String.raw`QUIT\n`,
|
||||||
|
keyword: "221 ",
|
||||||
|
interval: 3,
|
||||||
|
};
|
||||||
|
const heartbeat = {
|
||||||
|
status: null,
|
||||||
|
msg: null,
|
||||||
|
};
|
||||||
|
assert.rejects((new TlsMonitorType().check(monitor, heartbeat, null)),
|
||||||
|
(e) => e.message.includes("500 "));
|
||||||
|
});
|
||||||
|
|
||||||
|
test("TLS.SMTP.STARTTLS.invalid_request", async () => {
|
||||||
|
const monitor = {
|
||||||
|
hostname: "smtp.mail.yahoo.com",
|
||||||
|
port: 587,
|
||||||
|
tcpStartTls: true,
|
||||||
|
tcpStartTlsPrompt: "220 ",
|
||||||
|
tcpStartTlsCommand: String.raw`STARTTLS\n`,
|
||||||
|
tcpStartTlsResponse: "220 ",
|
||||||
|
tcpRequest: String.raw`I_AM_OUT\n`,
|
||||||
|
keyword: "221 ",
|
||||||
|
interval: 3,
|
||||||
|
};
|
||||||
|
const heartbeat = {
|
||||||
|
status: null,
|
||||||
|
msg: null,
|
||||||
|
};
|
||||||
|
assert.rejects((new TlsMonitorType().check(monitor, heartbeat, null)),
|
||||||
|
(e) => e.message.includes("500 "));
|
||||||
|
});
|
||||||
|
|
||||||
|
test("TLS.SMTP.STARTTLS.incomplete_request", async () => {
|
||||||
|
const monitor = {
|
||||||
|
hostname: "smtp.mail.yahoo.com",
|
||||||
|
port: 587,
|
||||||
|
tcpStartTls: true,
|
||||||
|
tcpStartTlsPrompt: "220 ",
|
||||||
|
tcpStartTlsCommand: String.raw`STARTTLS\n`,
|
||||||
|
tcpStartTlsResponse: "220 ",
|
||||||
|
tcpRequest: String.raw`QUIT`, // Note: Missing newline
|
||||||
|
keyword: "221 ",
|
||||||
|
interval: 3,
|
||||||
|
};
|
||||||
|
const heartbeat = {
|
||||||
|
status: null,
|
||||||
|
msg: null,
|
||||||
|
};
|
||||||
|
assert.rejects((new TlsMonitorType().check(monitor, heartbeat, null)),
|
||||||
|
(e) => e.message.includes("Timeout while reading request response"));
|
||||||
|
});
|
||||||
|
|
||||||
|
test("TLS.POP3.STARTTLS.good", async () => {
|
||||||
|
const monitor = {
|
||||||
|
hostname: "outlook.office365.com",
|
||||||
|
port: 110,
|
||||||
|
tcpStartTls: true,
|
||||||
|
tcpStartTlsPrompt: "+OK",
|
||||||
|
tcpStartTlsCommand: String.raw`STLS\r\n`,
|
||||||
|
tcpStartTlsResponse: "+OK",
|
||||||
|
tcpRequest: String.raw`QUIT\r\n`,
|
||||||
|
keyword: "+OK",
|
||||||
|
interval: 3,
|
||||||
|
};
|
||||||
|
const heartbeat = {
|
||||||
|
status: null,
|
||||||
|
msg: null,
|
||||||
|
};
|
||||||
|
await new TlsMonitorType().check(monitor, heartbeat, null);
|
||||||
|
assert.equal(heartbeat.status, UP);
|
||||||
|
assert.ok(heartbeat.msg.startsWith(`Keyword "${monitor.keyword}" contained in response`));
|
||||||
|
});
|
||||||
|
|
||||||
|
test("TLS.IMAP4.STARTTLS.good", async () => {
|
||||||
|
const monitor = {
|
||||||
|
hostname: "outlook.office365.com",
|
||||||
|
port: 143,
|
||||||
|
tcpStartTls: true,
|
||||||
|
tcpStartTlsPrompt: "* OK",
|
||||||
|
tcpStartTlsCommand: String.raw`a001 STARTTLS\r\n`,
|
||||||
|
tcpStartTlsResponse: "a001 OK",
|
||||||
|
tcpRequest: String.raw`a002 CAPABILITY\r\n`,
|
||||||
|
keyword: "* CAPABILITY",
|
||||||
|
interval: 3,
|
||||||
|
};
|
||||||
|
const heartbeat = {
|
||||||
|
status: null,
|
||||||
|
msg: null,
|
||||||
|
};
|
||||||
|
await new TlsMonitorType().check(monitor, heartbeat, null);
|
||||||
|
assert.equal(heartbeat.status, UP);
|
||||||
|
assert.ok(heartbeat.msg.startsWith(`Keyword "${monitor.keyword}" contained in response`));
|
||||||
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue