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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user