. namespace core\tests\session; use core\clock; use core\di; use core\session\database; /** * Mock handler methods class. * * @package core * @author Darren Cocco * @author Trisha Milan * @copyright 2022 Monash University (http://www.monash.edu) * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class mock_handler extends database { #[\Override] public function init(): bool { // Nothing special to do in the mock. return true; } #[\Override] public function session_exists($sid): bool { global $DB; return $DB->record_exists('sessions', ['sid' => $sid]); } /** * Insert a new session record to be used in unit tests. * * @param \stdClass $record * @return int Inserted record id. */ public function add_test_session(\stdClass $record): int { global $DB, $USER; $data = new \stdClass(); $data->state = $record->state ?? 0; $data->sid = $record->sid ?? session_id(); $data->sessdata = $record->sessdata ?? null; $data->userid = $record->userid ?? $USER->id; $data->timecreated = $record->timecreated ?? di::get(clock::class)->time(); $data->timemodified = $record->timemodified ?? di::get(clock::class)->time(); $data->firstip = $record->firstip ?? getremoteaddr(); $data->lastip = $record->lastip ?? getremoteaddr(); return $DB->insert_record('sessions', $data); } #[\Override] public function get_all_sessions(): \Iterator { global $DB; $records = $DB->get_records('sessions'); return new \ArrayIterator($records); } /** * Returns the number of all sessions stored. * * @return int */ public function count_sessions(): int { global $DB; return $DB->count_records('sessions'); } }