42, 'show_tree' => '', 'show_list' => '', 'show_preview' => '', ], $overrides); } test('direct realm access returns after one indexed existence query', function () { $GLOBALS['auth_access_results'] = [1]; expect(auth_user_has_access_under_test(access_user()))->toBeTrue() ->and($GLOBALS['auth_access_queries'])->toHaveCount(1) ->and($GLOBALS['auth_access_queries'][0][0])->toContain('SELECT EXISTS(') ->and($GLOBALS['auth_access_queries'][0][1])->toBe([42]); }); test('guest graph access returns without querying group memberships', function () { $GLOBALS['auth_access_results'] = [0]; $GLOBALS['auth_guest_user'] = 1; expect(auth_user_has_access_under_test(access_user(['show_tree' => 'on'])))->toBeTrue() ->and($GLOBALS['auth_access_queries'])->toHaveCount(1); }); test('group realms and graph flags are resolved in one query', function () { $GLOBALS['auth_access_results'] = [0, 1]; $GLOBALS['auth_guest_user'] = 1; expect(auth_user_has_access_under_test(access_user()))->toBeTrue() ->and($GLOBALS['auth_access_queries'])->toHaveCount(2) ->and($GLOBALS['auth_access_queries'][1][0])->toContain('user_auth_group_members AS uagm') ->toContain('user_auth_group_realm AS uagr') ->toContain("uag.enabled = 'on'") ->toContain('uag.show_tree') ->and($GLOBALS['auth_access_queries'][1][1])->toBe([42, 1]); }); test('a user without direct or group access is rejected with two queries', function () { $GLOBALS['auth_access_results'] = [0, 0]; expect(auth_user_has_access_under_test(access_user()))->toBeFalse() ->and($GLOBALS['auth_access_queries'])->toHaveCount(2) ->and($GLOBALS['auth_access_queries'][1][1])->toBe([42, 0]); });