mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2025-08-05 10:13:14 +00:00
154 lines
3.7 KiB
TypeScript
154 lines
3.7 KiB
TypeScript
// Copyright (C) 2022 Aravinth Manivannan <realaravinth@batsense.net>
|
|
// SPDX-FileCopyrightText: 2023 Aravinth Manivannan <realaravinth@batsense.net>
|
|
//
|
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
import {
|
|
getAddForm,
|
|
fillAvgTraffic,
|
|
fillDescription,
|
|
fillPeakSustainable,
|
|
fillBrokemySite,
|
|
} from "./setupTests";
|
|
import setup from "../../../../../components/error/setUpTests";
|
|
|
|
export const break_my_site_name = "traffic that broke your website";
|
|
export const avg_traffic_name = "average";
|
|
export const peak_traffic_name = "maximum traffic your website can handle";
|
|
|
|
beforeEach(() => {
|
|
document.body.innerHTML = getAddForm();
|
|
document.body.appendChild(setup());
|
|
});
|
|
|
|
afterEach(() => {
|
|
document.body.replaceWith(document.createElement("body"));
|
|
});
|
|
|
|
const checkEmpty = (e: Error, name: string) => {
|
|
expect(e.message.includes(name)).toBeTruthy();
|
|
expect(e.message.includes(name)).toBeTruthy();
|
|
};
|
|
|
|
it("empty description", () => {
|
|
const form = <HTMLFormElement>document.querySelector("form");
|
|
|
|
fillAvgTraffic(1);
|
|
fillPeakSustainable(2);
|
|
try {
|
|
form.submit();
|
|
} catch (e) {
|
|
checkEmpty(e, "description");
|
|
}
|
|
});
|
|
|
|
it("empty average traffic", () => {
|
|
const form = <HTMLFormElement>document.querySelector("form");
|
|
|
|
fillDescription("foo");
|
|
fillPeakSustainable(2);
|
|
try {
|
|
form.submit();
|
|
} catch (e) {
|
|
checkEmpty(e, avg_traffic_name);
|
|
}
|
|
});
|
|
|
|
it("empty peak traffic", () => {
|
|
const form = <HTMLFormElement>document.querySelector("form");
|
|
fillDescription("foo");
|
|
fillAvgTraffic(1);
|
|
try {
|
|
form.submit();
|
|
} catch (e) {
|
|
checkEmpty(e, peak_traffic_name);
|
|
}
|
|
});
|
|
|
|
const checkNan = (e: Error, name: string) => {
|
|
expect(e.message.includes(`${name} must be a number`)).toBeTruthy();
|
|
};
|
|
|
|
it("NAN peak traffic", () => {
|
|
const form = <HTMLFormElement>document.querySelector("form");
|
|
fillDescription("foo");
|
|
fillAvgTraffic(1);
|
|
fillPeakSustainable("foo");
|
|
try {
|
|
form.submit();
|
|
} catch (e) {
|
|
checkNan(e, peak_traffic_name);
|
|
}
|
|
});
|
|
|
|
it("NAN Avg Traffic traffic", () => {
|
|
const form = <HTMLFormElement>document.querySelector("form");
|
|
fillDescription("foo");
|
|
fillAvgTraffic("foo");
|
|
fillPeakSustainable(1);
|
|
try {
|
|
form.submit();
|
|
} catch (e) {
|
|
checkNan(e, avg_traffic_name);
|
|
}
|
|
});
|
|
|
|
it("NAN Break my site Traffic traffic", () => {
|
|
const form = <HTMLFormElement>document.querySelector("form");
|
|
fillDescription("foo");
|
|
fillAvgTraffic(1);
|
|
fillPeakSustainable(1);
|
|
fillBrokemySite("foo");
|
|
try {
|
|
form.submit();
|
|
} catch (e) {
|
|
checkNan(e, break_my_site_name);
|
|
}
|
|
});
|
|
|
|
const GetMustB = (lhs: string, rhs: string) =>
|
|
`${lhs} must be greater than ${rhs}`;
|
|
const CheckMustBeGreater = (e: Error, lhs: string, rhs: string) => {
|
|
const msg = GetMustB(lhs, rhs);
|
|
expect(e.message.includes(msg)).toBeTruthy();
|
|
};
|
|
|
|
it(GetMustB(break_my_site_name, peak_traffic_name), () => {
|
|
const form = <HTMLFormElement>document.querySelector("form");
|
|
fillDescription("foo");
|
|
fillAvgTraffic(100);
|
|
fillPeakSustainable(1000);
|
|
fillBrokemySite(999);
|
|
try {
|
|
form.submit();
|
|
} catch (e) {
|
|
CheckMustBeGreater(e, break_my_site_name, peak_traffic_name);
|
|
}
|
|
|
|
fillBrokemySite(1000);
|
|
try {
|
|
form.submit();
|
|
} catch (e) {
|
|
CheckMustBeGreater(e, break_my_site_name, peak_traffic_name);
|
|
}
|
|
});
|
|
|
|
it(GetMustB(peak_traffic_name, avg_traffic_name), () => {
|
|
const form = <HTMLFormElement>document.querySelector("form");
|
|
fillDescription("foo");
|
|
fillAvgTraffic(1000);
|
|
fillPeakSustainable(999);
|
|
try {
|
|
form.submit();
|
|
} catch (e) {
|
|
CheckMustBeGreater(e, peak_traffic_name, avg_traffic_name);
|
|
}
|
|
|
|
fillPeakSustainable(1000);
|
|
try {
|
|
form.submit();
|
|
} catch (e) {
|
|
CheckMustBeGreater(e, peak_traffic_name, avg_traffic_name);
|
|
}
|
|
});
|