84 lines
1.7 KiB
JavaScript
84 lines
1.7 KiB
JavaScript
// @flow
|
|
import { buildUser, buildAdmin } from "../test/factories";
|
|
import { flushdb } from "../test/support";
|
|
import userDestroyer from "./userDestroyer";
|
|
|
|
beforeEach(() => flushdb());
|
|
|
|
describe("userDestroyer", () => {
|
|
const ip = "127.0.0.1";
|
|
|
|
it("should prevent last user from deleting account", async () => {
|
|
const user = await buildUser();
|
|
|
|
let error;
|
|
|
|
try {
|
|
await userDestroyer({
|
|
user,
|
|
actor: user,
|
|
ip,
|
|
});
|
|
} catch (err) {
|
|
error = err;
|
|
}
|
|
expect(error && error.message).toContain("Cannot delete last user");
|
|
});
|
|
|
|
it("should prevent last admin from deleting account", async () => {
|
|
const user = await buildAdmin();
|
|
await buildUser({ teamId: user.teamId });
|
|
|
|
let error;
|
|
|
|
try {
|
|
await userDestroyer({
|
|
user,
|
|
actor: user,
|
|
ip,
|
|
});
|
|
} catch (err) {
|
|
error = err;
|
|
}
|
|
expect(error && error.message).toContain("Cannot delete account");
|
|
});
|
|
|
|
it("should not prevent multiple admin from deleting account", async () => {
|
|
const actor = await buildAdmin();
|
|
const user = await buildAdmin({ teamId: actor.teamId });
|
|
|
|
let error;
|
|
|
|
try {
|
|
await userDestroyer({
|
|
user,
|
|
actor,
|
|
ip,
|
|
});
|
|
} catch (err) {
|
|
error = err;
|
|
}
|
|
expect(error).toBeFalsy();
|
|
expect(user.deletedAt).toBeTruthy();
|
|
});
|
|
|
|
it("should not prevent last non-admin from deleting account", async () => {
|
|
const user = await buildUser();
|
|
await buildUser({ teamId: user.teamId });
|
|
|
|
let error;
|
|
|
|
try {
|
|
await userDestroyer({
|
|
user,
|
|
actor: user,
|
|
ip,
|
|
});
|
|
} catch (err) {
|
|
error = err;
|
|
}
|
|
expect(error).toBeFalsy();
|
|
expect(user.deletedAt).toBeTruthy();
|
|
});
|
|
});
|