mirror of
https://github.com/louislam/uptime-kuma.git
synced 2026-01-31 11:03:11 +08:00
feat: Add configurable response data storage for notifications (#6684)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Frank Elsinga <frank@elsinga.de> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
36
test/backend-test/test-monitor-response.js
Normal file
36
test/backend-test/test-monitor-response.js
Normal file
@@ -0,0 +1,36 @@
|
||||
const { describe, test } = require("node:test");
|
||||
const assert = require("node:assert");
|
||||
const Monitor = require("../../server/model/monitor");
|
||||
const Heartbeat = require("../../server/model/heartbeat");
|
||||
const { RESPONSE_BODY_LENGTH_DEFAULT } = require("../../src/util");
|
||||
|
||||
describe("Monitor response saving", () => {
|
||||
test("getSaveResponse and getSaveErrorResponse parse booleans", () => {
|
||||
const monitor = Object.create(Monitor.prototype);
|
||||
monitor.save_response = 1;
|
||||
monitor.save_error_response = 0;
|
||||
|
||||
assert.strictEqual(monitor.getSaveResponse(), true);
|
||||
assert.strictEqual(monitor.getSaveErrorResponse(), false);
|
||||
});
|
||||
|
||||
test("saveResponseData stores and truncates response", async () => {
|
||||
const monitor = Object.create(Monitor.prototype);
|
||||
monitor.response_max_length = 5;
|
||||
|
||||
const bean = {};
|
||||
await monitor.saveResponseData(bean, "abcdef");
|
||||
|
||||
assert.strictEqual(await Heartbeat.decodeResponseValue(bean.response), "abcde... (truncated)");
|
||||
});
|
||||
|
||||
test("saveResponseData stringifies objects", async () => {
|
||||
const monitor = Object.create(Monitor.prototype);
|
||||
monitor.response_max_length = RESPONSE_BODY_LENGTH_DEFAULT;
|
||||
|
||||
const bean = {};
|
||||
await monitor.saveResponseData(bean, { ok: true });
|
||||
|
||||
assert.strictEqual(await Heartbeat.decodeResponseValue(bean.response), JSON.stringify({ ok: true }));
|
||||
});
|
||||
});
|
||||
@@ -105,4 +105,34 @@ test.describe("Monitor Form", () => {
|
||||
|
||||
await screenshot(testInfo, page);
|
||||
});
|
||||
|
||||
test("save response settings persist", async ({ page }, testInfo) => {
|
||||
await page.goto("./add");
|
||||
await login(page);
|
||||
await selectMonitorType(page, "http");
|
||||
|
||||
const friendlyName = "Example HTTP Save Response";
|
||||
await page.getByTestId("friendly-name-input").fill(friendlyName);
|
||||
await page.getByTestId("url-input").fill("https://www.example.com/");
|
||||
|
||||
// Expect error response save enabled by default
|
||||
await expect(page.getByLabel("Save HTTP Error Response for Notifications")).toBeChecked();
|
||||
|
||||
await page.getByLabel("Save HTTP Success Response for Notifications").check();
|
||||
await page.getByLabel("Save HTTP Error Response for Notifications").uncheck();
|
||||
await page.getByLabel("Response Max Length (bytes)").fill("2048");
|
||||
|
||||
await screenshot(testInfo, page);
|
||||
await page.getByTestId("save-button").click();
|
||||
await page.waitForURL("/dashboard/*");
|
||||
|
||||
await page.getByRole("link", { name: "Edit" }).click();
|
||||
await page.waitForURL("/edit/*");
|
||||
|
||||
await expect(page.getByLabel("Save HTTP Success Response for Notifications")).toBeHidden();
|
||||
await expect(page.getByLabel("Save HTTP Error Response for Notifications")).not.toBeChecked();
|
||||
await expect(page.getByLabel("Response Max Length (bytes)")).toHaveValue("2048");
|
||||
|
||||
await screenshot(testInfo, page);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user