Skip to content

Commit

Permalink
[TEST] added test for kick
Browse files Browse the repository at this point in the history
  • Loading branch information
aricart committed Sep 26, 2023
1 parent 5d15adc commit e1db687
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 1 deletion.
42 changes: 42 additions & 0 deletions tests/events_test.ts
Expand Up @@ -131,6 +131,48 @@ Deno.test("events - ldm", async () => {
await NatsServer.stopAll(cluster);
});

Deno.test("events - kick", async () => {
const cluster = await NatsServer.cluster(2, {
system_account: "SYS",
no_auth_user: "a",
accounts: {
A: {
users: [{ user: "a", password: "a" }],
},
SYS: {
users: [{ user: "sys", password: "sys" }],
},
},
});

if (await cluster[0].notCompatible("2.10.0")) {
await NatsServer.stopAll(cluster);
}

const a = await connect(
{
servers: `127.0.0.1:${cluster[0].port}`,
user: "a",
pass: "a",
reconnect: false,
},
);
const sys = await connect(
{ servers: `127.0.0.1:${cluster[0].port}`, user: "sys", pass: "sys" },
);

await sys.request(
`$SYS.REQ.SERVER.${a.info?.server_id}.KICK`,
JSON.stringify(
{ CID: a.info?.client_id },
),
);

await a.closed();
await sys.close();
await NatsServer.stopAll(cluster);
});

Deno.test("events - ignore server updates", async () => {
const cluster = await NatsServer.cluster(1);
const nc = await connect(
Expand Down
17 changes: 16 additions & 1 deletion tests/helpers/launcher.ts
Expand Up @@ -14,14 +14,16 @@
*/
// deno-lint-ignore-file no-explicit-any
import * as path from "https://deno.land/std@0.200.0/path/mod.ts";
import { rgb24 } from "https://deno.land/std@0.200.0/fmt/colors.ts";
import { rgb24, yellow } from "https://deno.land/std@0.200.0/fmt/colors.ts";
import { check, jsopts } from "./mod.ts";
import {
compare,
Deferred,
deferred,
delay,
extend,
nuid,
parseSemVer,
timeout,
} from "../../nats-base-client/internal_mod.ts";

Expand Down Expand Up @@ -621,6 +623,19 @@ export class NatsServer implements PortInfo {
throw err;
}
}

async notCompatible(version = "2.3.3"): Promise<boolean> {
const varz = await this.varz() as unknown as Record<string, string>;
const sv = parseSemVer(varz.version);
if (compare(sv, parseSemVer(version)) < 0) {
const m = new TextEncoder().encode(yellow(
`skipping test as server (${varz.version}) doesn't implement required feature from ${version} `,
));
await Deno.stdout.write(m);
return true;
}
return false;
}
}

// @ts-ignore: any is exactly what we need here
Expand Down

0 comments on commit e1db687

Please sign in to comment.