test: guard inactive directory membership
This commit is contained in:
@@ -35,6 +35,7 @@ describe('UsersService directory', () => {
|
||||
let userRows: ReturnType<typeof directoryUserRow>[];
|
||||
let assignmentRows: ReturnType<typeof directoryAssignmentRow>[];
|
||||
let total: number;
|
||||
let rejectActiveSharedTeamPredicate: boolean;
|
||||
const usersRepository = {
|
||||
find: jest.fn(() => {
|
||||
throw new Error('directory queries must use a safe database projection');
|
||||
@@ -55,6 +56,7 @@ describe('UsersService directory', () => {
|
||||
|
||||
beforeEach(() => {
|
||||
jest.clearAllMocks();
|
||||
rejectActiveSharedTeamPredicate = false;
|
||||
setDirectoryResult(
|
||||
[users[0], users[1], users[2], users[4]],
|
||||
[players[0], players[1], players[2], players[4]],
|
||||
@@ -105,6 +107,7 @@ describe('UsersService directory', () => {
|
||||
});
|
||||
|
||||
it('treats an inactive requester assignment as a shared team membership', async () => {
|
||||
rejectActiveSharedTeamPredicate = true;
|
||||
setDirectoryResult(
|
||||
[users[0], users[1]],
|
||||
[
|
||||
@@ -353,7 +356,17 @@ describe('UsersService directory', () => {
|
||||
function createSharedTeamsQuery() {
|
||||
const query: any = {
|
||||
select: () => query,
|
||||
where: () => query,
|
||||
where: (predicate: string) => {
|
||||
if (
|
||||
rejectActiveSharedTeamPredicate &&
|
||||
/requesterPlayer\.active/i.test(predicate)
|
||||
) {
|
||||
throw new Error(
|
||||
'shared-team membership must not filter inactive requester assignments',
|
||||
);
|
||||
}
|
||||
return query;
|
||||
},
|
||||
getQuery: () =>
|
||||
'SELECT requesterPlayer.teamId FROM player requesterPlayer',
|
||||
getParameters: () => ({ requesterId: users[0].id }),
|
||||
|
||||
Reference in New Issue
Block a user