summaryrefslogtreecommitdiffstats
path: root/test/backend-test/monitor-conditions/test-operators.js
diff options
context:
space:
mode:
Diffstat (limited to 'test/backend-test/monitor-conditions/test-operators.js')
-rw-r--r--test/backend-test/monitor-conditions/test-operators.js108
1 files changed, 108 insertions, 0 deletions
diff --git a/test/backend-test/monitor-conditions/test-operators.js b/test/backend-test/monitor-conditions/test-operators.js
new file mode 100644
index 0000000..e663c9a
--- /dev/null
+++ b/test/backend-test/monitor-conditions/test-operators.js
@@ -0,0 +1,108 @@
+const test = require("node:test");
+const assert = require("node:assert");
+const { operatorMap, OP_CONTAINS, OP_NOT_CONTAINS, OP_LT, OP_GT, OP_LTE, OP_GTE, OP_STR_EQUALS, OP_STR_NOT_EQUALS, OP_NUM_EQUALS, OP_NUM_NOT_EQUALS, OP_STARTS_WITH, OP_ENDS_WITH, OP_NOT_STARTS_WITH, OP_NOT_ENDS_WITH } = require("../../../server/monitor-conditions/operators.js");
+
+test("Test StringEqualsOperator", async (t) => {
+ const op = operatorMap.get(OP_STR_EQUALS);
+ assert.strictEqual(true, op.test("mx1.example.com", "mx1.example.com"));
+ assert.strictEqual(false, op.test("mx1.example.com", "mx1.example.org"));
+ assert.strictEqual(false, op.test("1", 1)); // strict equality
+});
+
+test("Test StringNotEqualsOperator", async (t) => {
+ const op = operatorMap.get(OP_STR_NOT_EQUALS);
+ assert.strictEqual(true, op.test("mx1.example.com", "mx1.example.org"));
+ assert.strictEqual(false, op.test("mx1.example.com", "mx1.example.com"));
+ assert.strictEqual(true, op.test(1, "1")); // variable is not typecasted (strict equality)
+});
+
+test("Test ContainsOperator with scalar", async (t) => {
+ const op = operatorMap.get(OP_CONTAINS);
+ assert.strictEqual(true, op.test("mx1.example.org", "example.org"));
+ assert.strictEqual(false, op.test("mx1.example.org", "example.com"));
+});
+
+test("Test ContainsOperator with array", async (t) => {
+ const op = operatorMap.get(OP_CONTAINS);
+ assert.strictEqual(true, op.test([ "example.org" ], "example.org"));
+ assert.strictEqual(false, op.test([ "example.org" ], "example.com"));
+});
+
+test("Test NotContainsOperator with scalar", async (t) => {
+ const op = operatorMap.get(OP_NOT_CONTAINS);
+ assert.strictEqual(true, op.test("example.org", ".com"));
+ assert.strictEqual(false, op.test("example.org", ".org"));
+});
+
+test("Test NotContainsOperator with array", async (t) => {
+ const op = operatorMap.get(OP_NOT_CONTAINS);
+ assert.strictEqual(true, op.test([ "example.org" ], "example.com"));
+ assert.strictEqual(false, op.test([ "example.org" ], "example.org"));
+});
+
+test("Test StartsWithOperator", async (t) => {
+ const op = operatorMap.get(OP_STARTS_WITH);
+ assert.strictEqual(true, op.test("mx1.example.com", "mx1"));
+ assert.strictEqual(false, op.test("mx1.example.com", "mx2"));
+});
+
+test("Test NotStartsWithOperator", async (t) => {
+ const op = operatorMap.get(OP_NOT_STARTS_WITH);
+ assert.strictEqual(true, op.test("mx1.example.com", "mx2"));
+ assert.strictEqual(false, op.test("mx1.example.com", "mx1"));
+});
+
+test("Test EndsWithOperator", async (t) => {
+ const op = operatorMap.get(OP_ENDS_WITH);
+ assert.strictEqual(true, op.test("mx1.example.com", "example.com"));
+ assert.strictEqual(false, op.test("mx1.example.com", "example.net"));
+});
+
+test("Test NotEndsWithOperator", async (t) => {
+ const op = operatorMap.get(OP_NOT_ENDS_WITH);
+ assert.strictEqual(true, op.test("mx1.example.com", "example.net"));
+ assert.strictEqual(false, op.test("mx1.example.com", "example.com"));
+});
+
+test("Test NumberEqualsOperator", async (t) => {
+ const op = operatorMap.get(OP_NUM_EQUALS);
+ assert.strictEqual(true, op.test(1, 1));
+ assert.strictEqual(true, op.test(1, "1"));
+ assert.strictEqual(false, op.test(1, "2"));
+});
+
+test("Test NumberNotEqualsOperator", async (t) => {
+ const op = operatorMap.get(OP_NUM_NOT_EQUALS);
+ assert.strictEqual(true, op.test(1, "2"));
+ assert.strictEqual(false, op.test(1, "1"));
+});
+
+test("Test LessThanOperator", async (t) => {
+ const op = operatorMap.get(OP_LT);
+ assert.strictEqual(true, op.test(1, 2));
+ assert.strictEqual(true, op.test(1, "2"));
+ assert.strictEqual(false, op.test(1, 1));
+});
+
+test("Test GreaterThanOperator", async (t) => {
+ const op = operatorMap.get(OP_GT);
+ assert.strictEqual(true, op.test(2, 1));
+ assert.strictEqual(true, op.test(2, "1"));
+ assert.strictEqual(false, op.test(1, 1));
+});
+
+test("Test LessThanOrEqualToOperator", async (t) => {
+ const op = operatorMap.get(OP_LTE);
+ assert.strictEqual(true, op.test(1, 1));
+ assert.strictEqual(true, op.test(1, 2));
+ assert.strictEqual(true, op.test(1, "2"));
+ assert.strictEqual(false, op.test(1, 0));
+});
+
+test("Test GreaterThanOrEqualToOperator", async (t) => {
+ const op = operatorMap.get(OP_GTE);
+ assert.strictEqual(true, op.test(1, 1));
+ assert.strictEqual(true, op.test(2, 1));
+ assert.strictEqual(true, op.test(2, "2"));
+ assert.strictEqual(false, op.test(2, 3));
+});