mirror of
https://github.com/bitwarden/directory-connector
synced 2025-12-05 23:53:21 +00:00
76 lines
2.8 KiB
TypeScript
76 lines
2.8 KiB
TypeScript
import { GetUniqueString } from "@/jslib/common/spec/utils";
|
|
|
|
import { UserEntry } from "@/src/models/userEntry";
|
|
|
|
import { groupSimulator, userSimulator } from "../../utils/request-builder-helper";
|
|
import { RequestBuilderOptions } from "../abstractions/request-builder.service";
|
|
|
|
import { BatchRequestBuilder } from "./batch-request-builder";
|
|
|
|
describe("BatchRequestBuilder", () => {
|
|
let batchRequestBuilder: BatchRequestBuilder;
|
|
|
|
beforeEach(async () => {
|
|
batchRequestBuilder = new BatchRequestBuilder();
|
|
});
|
|
|
|
const defaultOptions: RequestBuilderOptions = Object.freeze({
|
|
overwriteExisting: false,
|
|
removeDisabled: false,
|
|
});
|
|
|
|
it("BatchRequestBuilder batches requests for > 2000 users", () => {
|
|
const mockGroups = groupSimulator(11000);
|
|
const mockUsers = userSimulator(11000);
|
|
const requests = batchRequestBuilder.buildRequest(mockGroups, mockUsers, defaultOptions);
|
|
|
|
expect(requests.length).toEqual(12);
|
|
});
|
|
|
|
it("BatchRequestBuilder throws error when overwriteExisting is true", () => {
|
|
const mockGroups = groupSimulator(11000);
|
|
const mockUsers = userSimulator(11000);
|
|
const options = { ...defaultOptions, overwriteExisting: true };
|
|
|
|
const r = () => batchRequestBuilder.buildRequest(mockGroups, mockUsers, options);
|
|
|
|
expect(r).toThrow(
|
|
"You cannot use the 'Remove and re-add organization users during the next sync' option with large imports.",
|
|
);
|
|
});
|
|
|
|
it("BatchRequestBuilder returns requests with deleted users when removeDisabled is true", () => {
|
|
const mockGroups = groupSimulator(11000);
|
|
const mockUsers = userSimulator(11000);
|
|
|
|
const disabledUser1 = new UserEntry();
|
|
const disabledUserEmail1 = GetUniqueString() + "@email.com";
|
|
|
|
const disabledUser2 = new UserEntry();
|
|
const disabledUserEmail2 = GetUniqueString() + "@email.com";
|
|
|
|
disabledUser1.disabled = true;
|
|
disabledUser1.email = disabledUserEmail1;
|
|
disabledUser2.disabled = true;
|
|
disabledUser2.email = disabledUserEmail2;
|
|
|
|
mockUsers[0] = disabledUser1;
|
|
mockUsers.push(disabledUser2);
|
|
|
|
const options = { ...defaultOptions, removeDisabled: true };
|
|
const requests = batchRequestBuilder.buildRequest(mockGroups, mockUsers, options);
|
|
|
|
expect(requests[0].members).toContainEqual({ email: disabledUserEmail1, deleted: true });
|
|
expect(requests[1].members.find((m) => m.deleted)).toBeUndefined();
|
|
expect(requests[3].members.find((m) => m.deleted)).toBeUndefined();
|
|
expect(requests[4].members.find((m) => m.deleted)).toBeUndefined();
|
|
expect(requests[5].members).toContainEqual({ email: disabledUserEmail2, deleted: true });
|
|
});
|
|
|
|
it("BatchRequestBuilder retuns an empty array when there are no users or groups", () => {
|
|
const requests = batchRequestBuilder.buildRequest([], [], defaultOptions);
|
|
|
|
expect(requests).toEqual([]);
|
|
});
|
|
});
|