registry()); } private function registry(): IntegrationRegistry { return new IntegrationRegistry( $this->integration('media', 'Medien', ['lit/media-upload-from-url' => 'Datei von URL importieren']), $this->integration('wordpress', 'WordPress', ['lit/content-update' => 'Inhalt <ändern>']) ); } /** @param array $abilities name => label */ private function integration(string $id, string $label, array $abilities): Integration { $mocks = []; foreach ($abilities as $name => $abilityLabel) { $ability = Mockery::mock(Ability::class); $ability->allows('name')->andReturn($name); $ability->allows('label')->andReturn($abilityLabel); $mocks[] = $ability; } $integration = Mockery::mock(Integration::class); $integration->allows('id')->andReturn($id); $integration->allows('label')->andReturn($label); $integration->allows('isAvailable')->andReturn(true); $integration->allows('abilities')->andReturn($mocks); return $integration; } public function testFiltersAreReadSanitized(): void { $tab = $this->tab(Mockery::mock(ChangeLog::class)); $_GET['ability'] = 'lit/content-update'; $_GET['user_id'] = '3x'; self::assertSame(['ability' => 'lit/content-update', 'user_id' => 3], $tab->filters()); $_GET['ability'] = 'lit/x">