Add test coverage for both user paths with and without userSelect

Cover the disabled user filtering and select augmentation for both
the /users and group members paths, with and without userSelect
configured.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
This commit is contained in:
Fredrik Adelöw
2026-05-28 15:55:33 +02:00
parent 72152935ef
commit 42a907dfe0
@@ -292,6 +292,74 @@ describe('read microsoft graph', () => {
120,
);
});
it('should skip disabled users', async () => {
client.getUsers.mockImplementation(async function* () {
yield {
id: 'enabled',
displayName: 'Enabled',
mail: 'enabled@example.com',
accountEnabled: true,
};
yield {
id: 'disabled',
displayName: 'Disabled',
mail: 'disabled@example.com',
accountEnabled: false,
};
yield {
id: 'unset',
displayName: 'Unset',
mail: 'unset@example.com',
};
});
client.getUserPhotoWithSizeLimit.mockResolvedValue(undefined);
const { users } = await readMicrosoftGraphUsers(client, {
logger: mockServices.logger.mock(),
});
expect(users.map(u => u.metadata.name)).toEqual([
'enabled_example.com',
'unset_example.com',
]);
});
it('should not pass select when userSelect is not configured', async () => {
client.getUsers.mockImplementation(getExampleUsers);
client.getUserPhotoWithSizeLimit.mockResolvedValue(undefined);
await readMicrosoftGraphUsers(client, {
logger: mockServices.logger.mock(),
});
expect(client.getUsers).toHaveBeenCalledWith(
{ top: 999 },
undefined,
undefined,
undefined,
);
});
it('should add accountEnabled to select when userSelect is configured', async () => {
client.getUsers.mockImplementation(getExampleUsers);
client.getUserPhotoWithSizeLimit.mockResolvedValue(undefined);
await readMicrosoftGraphUsers(client, {
userSelect: ['id', 'displayName', 'mail'],
logger: mockServices.logger.mock(),
});
expect(client.getUsers).toHaveBeenCalledWith(
{
select: ['id', 'displayName', 'mail', 'accountEnabled'],
top: 999,
},
undefined,
undefined,
undefined,
);
});
});
describe('readMicrosoftGraphUsersInGroups', () => {
@@ -409,6 +477,24 @@ describe('read microsoft graph', () => {
);
});
it('should not pass select when userSelect is not configured', async () => {
client.getGroups.mockImplementation(getExampleGroups);
client.getGroupUserMembers.mockImplementation(getExampleUsers);
client.getUserPhotoWithSizeLimit.mockResolvedValue(undefined);
await readMicrosoftGraphUsersInGroups(client, {
userGroupMemberFilter: 'securityEnabled eq true',
logger: mockServices.logger.mock(),
});
expect(client.getGroupUserMembers).toHaveBeenCalledWith(
'groupid',
{ top: 999 },
undefined,
undefined,
);
});
it('should read users from Groups with advanced query mode', async () => {
client.getGroups.mockImplementation(getExampleGroups);
client.getGroupUserMembers.mockImplementation(getExampleUsers);