process(new InMemoryUser('api', null, ['ROLE_API'])); $this->assertSame( ['id' => null, 'username' => 'api', 'roles' => ['ROLE_API']], $record->extra['user'] ); } public function testAnAnonymousRequestIsLoggedAsSystem(): void { $record = $this->process(null); $this->assertSame('system', $record->extra['user']['username']); } public function testTheConsoleIsLoggedAsSystemEvenWithAUser(): void { $record = $this->process(new InMemoryUser('api', null, ['ROLE_API']), sapi: 'cli'); $this->assertSame('system', $record->extra['user']['username']); } public function testAnAlreadyResolvedUserIsLeftAlone(): void { $security = $this->createMock(Security::class); $security->expects($this->never())->method('getUser'); $processor = new InjectUserProcessor($security, 'fpm-fcgi'); $record = $processor(self::record(['user' => ['username' => 'kept']])); $this->assertSame(['username' => 'kept'], $record->extra['user']); } private function process(?InMemoryUser $user, string $sapi = 'fpm-fcgi'): LogRecord { $security = $this->createMock(Security::class); $security->method('getUser')->willReturn($user); $processor = new InjectUserProcessor($security, $sapi); return $processor(self::record()); } /** * @param array $extra */ private static function record(array $extra = []): LogRecord { return new LogRecord( new \DateTimeImmutable(), 'api', Level::Info, 'Application form submission received', [], $extra ); } }