From e7b8cbd5951286897507f6cfd3e6356201d24f48 Mon Sep 17 00:00:00 2001 From: Jared Whiklo Date: Thu, 5 May 2022 10:46:41 -0500 Subject: [PATCH] Make Crayfish-Commons a Symfony bundle only. (#49) * Change to symfony/flex * Coder * Correct namespace for tests (#39) Restrict symfony versions Fix deprecation in test * Finalize Crayfish-Commons in Symfony 4.4 * Don't fail if no Apix-Ldp-Resource header * Remove check for master request --- .gitignore | 2 + src/ApixMiddleware.php => ApixMiddleware.php | 47 +- ...xecuteService.php => CmdExecuteService.php | 6 +- CrayfishCommonsBundle.php | 9 + DependencyInjection/Configuration.php | 26 + .../CrayfishCommonsExtension.php | 64 + .../EntityMapper.php | 0 .../EntityMapperInterface.php | 0 Resources/config/crayfish_commons.yaml | 25 + Resources/default_syn.xml | 4 + {src/Syn => Syn}/JwtAuthenticator.php | 135 +- {src/Syn => Syn}/JwtFactory.php | 0 {src/Syn => Syn}/JwtUser.php | 0 Syn/JwtUserProvider.php | 42 + {src/Syn => Syn}/SettingsParser.php | 0 Tests/AbstractCrayfishCommonsTestCase.php | 22 + {tests => Tests}/ApixMiddlewareTest.php | 66 +- {tests => Tests}/CmdExecuteServiceTest.php | 18 +- .../EntityMapper/EntityMapperTest.php | 5 +- {tests => Tests}/Syn/JwtAuthenticatorTest.php | 150 +- .../Syn/SettingsParserSiteTest.php | 58 +- .../Syn/SettingsParserTokenTest.php | 22 +- composer.json | 44 +- composer.lock | 2134 ++++++++++------- phpunit.xml.dist | 57 +- src/Provider/IslandoraServiceProvider.php | 94 - src/Provider/YamlConfigServiceProvider.php | 61 - .../Provider/IslandoraServiceProviderTest.php | 71 - .../YamlConfigServiceProviderTest.php | 44 - 29 files changed, 1817 insertions(+), 1389 deletions(-) rename src/ApixMiddleware.php => ApixMiddleware.php (66%) rename src/CmdExecuteService.php => CmdExecuteService.php (95%) create mode 100644 CrayfishCommonsBundle.php create mode 100644 DependencyInjection/Configuration.php create mode 100644 DependencyInjection/CrayfishCommonsExtension.php rename {src/EntityMapper => EntityMapper}/EntityMapper.php (100%) rename {src/EntityMapper => EntityMapper}/EntityMapperInterface.php (100%) create mode 100644 Resources/config/crayfish_commons.yaml create mode 100644 Resources/default_syn.xml rename {src/Syn => Syn}/JwtAuthenticator.php (76%) rename {src/Syn => Syn}/JwtFactory.php (100%) rename {src/Syn => Syn}/JwtUser.php (100%) create mode 100644 Syn/JwtUserProvider.php rename {src/Syn => Syn}/SettingsParser.php (100%) create mode 100644 Tests/AbstractCrayfishCommonsTestCase.php rename {tests => Tests}/ApixMiddlewareTest.php (60%) rename {tests => Tests}/CmdExecuteServiceTest.php (72%) rename {tests => Tests}/EntityMapper/EntityMapperTest.php (87%) rename {tests => Tests}/Syn/JwtAuthenticatorTest.php (63%) rename {tests => Tests}/Syn/SettingsParserSiteTest.php (74%) rename {tests => Tests}/Syn/SettingsParserTokenTest.php (73%) delete mode 100644 src/Provider/IslandoraServiceProvider.php delete mode 100644 src/Provider/YamlConfigServiceProvider.php delete mode 100644 tests/Provider/IslandoraServiceProviderTest.php delete mode 100644 tests/Provider/YamlConfigServiceProviderTest.php diff --git a/.gitignore b/.gitignore index 3ce5adb..d283ae1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .idea vendor +.phpunit* +clover.xml diff --git a/src/ApixMiddleware.php b/ApixMiddleware.php similarity index 66% rename from src/ApixMiddleware.php rename to ApixMiddleware.php index e961f0a..b75df0a 100644 --- a/src/ApixMiddleware.php +++ b/ApixMiddleware.php @@ -4,15 +4,18 @@ use Islandora\Chullo\IFedoraApi; use Psr\Log\LoggerInterface; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\Event\RequestEvent; +use Symfony\Component\HttpKernel\KernelEvents; /** * Retrieves a Fedora resource using the Apix-Ldp-Resource header. * * @package Islandora\Crayfish\Commons */ -class ApixMiddleware +class ApixMiddleware implements EventSubscriberInterface { /** @@ -39,18 +42,27 @@ public function __construct( } /** - * @param \Symfony\Component\HttpFoundation\Request $request - * @return \Psr\Http\Message\ResponseInterface + * + * @param \Symfony\Component\HttpKernel\Event\RequestEvent $event */ - public function before(Request $request) + public function before(RequestEvent $event) { + + $request = $event->getRequest(); + + // Short circuit if this is an OPTIONS or HEAD request. + if (in_array( + strtoupper($request->getMethod()), + ['OPTIONS', 'HEAD'] + )) { + return; + } + // Short circuit if there's no Apix-Ldp-Resource header. if (!$request->headers->has("Apix-Ldp-Resource")) { - $this->log->debug("Malformed request, no Apix-Ldp-Resource header present"); - return new Response( - "Malformed request, no Apix-Ldp-Resource header present", - 400 - ); + $this->log->debug("No Apix-Ldp-Resource header present, no fedora_resource set"); + $request->attributes->set('fedora_resource', false); + return; } // Get the resource. @@ -64,10 +76,11 @@ public function before(Request $request) 'status' => $fedora_resource->getStatusCode(), 'headers' => $fedora_resource->getHeaders() ]); - return new Response( + $event->setResponse(new Response( $fedora_resource->getReasonPhrase(), $status - ); + )); + return; } // Set the Fedora resource on the request. @@ -89,4 +102,16 @@ protected function getFedoraResource(Request $request) $headers ); } + + /** + * {@inheritdoc} + */ + public static function getSubscribedEvents() + { + return [ + KernelEvents::REQUEST => [ + ['before', 0], + ], + ]; + } } diff --git a/src/CmdExecuteService.php b/CmdExecuteService.php similarity index 95% rename from src/CmdExecuteService.php rename to CmdExecuteService.php index 9568d12..cdf53e3 100644 --- a/src/CmdExecuteService.php +++ b/CmdExecuteService.php @@ -110,7 +110,7 @@ public function execute($cmd, $data) // On error, extract message from STDERR and throw an exception. if ($exit_code != 0) { $msg = stream_get_contents($pipes[2]); - $this->cleanup($pipes, $this->output, $process); + $this->cleanup($pipes, $process); if ($this->log) { $this->log->error('Process exited with non-zero code.', [ 'exit_code' => $exit_code, @@ -128,11 +128,11 @@ public function execute($cmd, $data) ob_flush(); flush(); } - $this->cleanup($pipes, $this->output, $process); + $this->cleanup($pipes, $process); }; } - protected function cleanup($pipes, $output, $process) + protected function cleanup($pipes, $process) { // Close STDERR fclose($pipes[2]); diff --git a/CrayfishCommonsBundle.php b/CrayfishCommonsBundle.php new file mode 100644 index 0000000..a1794a9 --- /dev/null +++ b/CrayfishCommonsBundle.php @@ -0,0 +1,9 @@ +getRootNode(); + $root->addDefaultsIfNotSet() + ->children() + ->scalarNode('fedora_base_uri')->cannotBeEmpty()->defaultValue('http://localhost:8080/fcrepo/rest')->end() + ->scalarNode('syn_config')->defaultValue(__DIR__ . '/../Resources/default_syn.xml')->end() + ->end(); + + return $treeBuilder; + } +} diff --git a/DependencyInjection/CrayfishCommonsExtension.php b/DependencyInjection/CrayfishCommonsExtension.php new file mode 100644 index 0000000..f3d831d --- /dev/null +++ b/DependencyInjection/CrayfishCommonsExtension.php @@ -0,0 +1,64 @@ +processConfiguration($configuration, $configs); + + $loader = new YamlFileLoader( + $container, + new FileLocator(realpath(__DIR__ . '/../Resources/config')) + ); + $loader->load('crayfish_commons.yaml'); + + if (!$container->has('Islandora\Crayfish\Commons\Syn\SettingsParser')) { + if (file_exists($config['syn_config'])) { + $xml = file_get_contents($config['syn_config']); + } + else { + throw new IOException("Security configuration not found. ${config['syn_config']}"); + } + + $container->register('Islandora\Crayfish\Commons\Syn\SettingsParser', SettingsParser::class) + ->setArgument('$xml', $xml); + } + + if (!$container->has('Islandora\Crayfish\Commons\Syn\JwtUserProvider')) { + $container->register('Islandora\Crayfish\Commons\Syn\JwtUserProvider', JwtUserProvider::class); + } + if (!$container->has('Islandora\Crayfish\Commons\Syn\JwtFactory')) { + $container->register('Islandora\Crayfish\Commons\Syn\JwtFactory', JwtFactory::class); + } + if (!$container->has('Islandora\Crayfish\Commons\Syn\JwtAuthenticator')) { + $container->register('Islandora\Crayfish\Commons\Syn\JwtAuthenticator', JwtAuthenticator::class) + ->setAutowired(true); + } + + if (!$container->has('Islandora\Chullo\IFedoraApi')) { + $container->register('Islandora\Chullo\IFedoraApi', IFedoraApi::class) + ->setFactory('Islandora\Chullo\FedoraApi::create') + ->setArgument('$fedora_rest_url', $config['fedora_base_uri']); + $container->setAlias('Islandora\Chullo\FedoraApi', 'Islandora\Chullo\IFedoraApi'); + } + } +} diff --git a/src/EntityMapper/EntityMapper.php b/EntityMapper/EntityMapper.php similarity index 100% rename from src/EntityMapper/EntityMapper.php rename to EntityMapper/EntityMapper.php diff --git a/src/EntityMapper/EntityMapperInterface.php b/EntityMapper/EntityMapperInterface.php similarity index 100% rename from src/EntityMapper/EntityMapperInterface.php rename to EntityMapper/EntityMapperInterface.php diff --git a/Resources/config/crayfish_commons.yaml b/Resources/config/crayfish_commons.yaml new file mode 100644 index 0000000..32439f5 --- /dev/null +++ b/Resources/config/crayfish_commons.yaml @@ -0,0 +1,25 @@ + +services: + _defaults: + autowire: true + autoconfigure: true + public: true + + # These services rely on expected container available DI injections. + # Other services are loaded in the CrayfishCommonsExtension class. + Islandora\Crayfish\Commons\CmdExecuteService: ~ + + Islandora\Crayfish\Commons\EntityMapper\: + resource: '../../EntityMapper/*' + + Islandora\Crayfish\Commons\ApixMiddleware: + tags: + - { name: kernel.event_subscriber, event: kernel.request } + + # Aliases, if the class has not yet been instantiated it will be + # in CrayfishCommonsExtension class + crayfish.cmd_execute_service: + alias: Islandora\Crayfish\Commons\CmdExecuteService + + # Map the concrete class to the interface. + Islandora\Crayfish\Commons\EntityMapper\EntityMapperInterface: '@Islandora\Crayfish\Commons\EntityMapper\EntityMapper' diff --git a/Resources/default_syn.xml b/Resources/default_syn.xml new file mode 100644 index 0000000..363b622 --- /dev/null +++ b/Resources/default_syn.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/Syn/JwtAuthenticator.php b/Syn/JwtAuthenticator.php similarity index 76% rename from src/Syn/JwtAuthenticator.php rename to Syn/JwtAuthenticator.php index db11e1c..c8a652f 100644 --- a/src/Syn/JwtAuthenticator.php +++ b/Syn/JwtAuthenticator.php @@ -36,23 +36,15 @@ public function __construct( $this->sites = $parser->getSites(); } - public function supports(Request $request) - { - return $request->headers->has('Authorization'); - } - + /** + * {@inheritdoc} + */ public function getCredentials(Request $request) { // Check headers $token = $request->headers->get('Authorization'); - if (!$token) { - $this->logger->info('Token missing'); - return null; - } - if (0 !== strpos(strtolower($token), 'bearer ')) { - $this->logger->info('Token malformed'); - return null; - } + + // Chop off the leading "bearer " from the token $token = substr($token, 7); $this->logger->debug("Token: $token"); @@ -72,65 +64,86 @@ public function getCredentials(Request $request) $jwt = $this->jwtFactory->load($token); } catch (InvalidArgumentException $exception) { $this->logger->info('Invalid token. ' . $exception->getMessage()); - return null; + return [ + 'token' => $token, + 'name' => null, + 'roles' => null, + ]; } // Check correct properties $payload = $jwt->getPayload(); + + return [ + 'token' => $token, + 'jwt' => $jwt, + 'name' => $payload['sub'] ?? NULL, + 'roles' => $payload['roles'] ?? NULL, + ]; + } + + /** + * {@inheritdoc} + */ + public function getUser($credentials, UserProviderInterface $userProvider) + { + return new JwtUser($credentials['name'], $credentials['roles']); + } + + /** + * {@inheritdoc} + */ + public function checkCredentials($credentials, UserInterface $user) + { + if ($credentials['name'] === null) { + // No name means the token was invalid. + $this->logger->info("Token was invalid:"); + return false; + } + + // If this is a static token then no more verification needed + if ($credentials['jwt'] === null) { + $this->logger->info('Logged in with static token: ' . $credentials['name']); + return true; + } + + $jwt = $credentials['jwt']; + $payload = $jwt->getPayload(); + // Check and warn of all missing claims before rejecting. + $missing_claim = false; if (!isset($payload['webid'])) { $this->logger->info('Token missing webid'); - return null; + $missing_claim = true; } if (!isset($payload['iss'])) { $this->logger->info('Token missing iss'); - return null; + $missing_claim = true; } if (!isset($payload['sub'])) { $this->logger->info('Token missing sub'); - return null; + $missing_claim = true; } if (!isset($payload['roles'])) { $this->logger->info('Token missing roles'); - return null; + $missing_claim = true; } if (!isset($payload['iat'])) { $this->logger->info('Token missing iat'); - return null; + $missing_claim = true; } if (!isset($payload['exp'])) { $this->logger->info('Token missing exp'); - return null; + $missing_claim = true; + } + if ($missing_claim) { + // If any claim is missing + return false; } - if ($jwt->isExpired()) { $this->logger->info('Token expired'); - return null; - } - - return [ - 'token' => $token, - 'jwt' => $jwt, - 'name' => $payload['sub'], - 'roles' => $payload['roles'] - ]; - } - - public function getUser($credentials, UserProviderInterface $userProvider) - { - $user = new JwtUser($credentials['name'], $credentials['roles']); - return $user; - } - - public function checkCredentials($credentials, UserInterface $user) - { - // If this is a static token then no more verification needed - if ($credentials['jwt'] === null) { - $this->logger->info('Logged in with static token: ' . $credentials['name']); - return true; + return false; } - $jwt = $credentials['jwt']; - $payload = $jwt->getPayload(); $url = $payload['iss']; if (isset($this->sites[$url])) { $site = $this->sites[$url]; @@ -144,12 +157,18 @@ public function checkCredentials($credentials, UserInterface $user) return $jwt->isValid($site['key'], $site['algorithm']); } + /** + * {@inheritdoc} + */ public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey) { // on success, let the request continue return null; } + /** + * {@inheritdoc} + */ public function onAuthenticationFailure(Request $request, AuthenticationException $exception) { $data = array( @@ -158,6 +177,9 @@ public function onAuthenticationFailure(Request $request, AuthenticationExceptio return new JsonResponse($data, 403); } + /** + * {@inheritdoc} + */ public function start(Request $request, AuthenticationException $authException = null) { $data = array( @@ -166,8 +188,29 @@ public function start(Request $request, AuthenticationException $authException = return new JsonResponse($data, 401); } + /** + * {@inheritdoc} + */ public function supportsRememberMe() { return false; } + + /** + * {@inheritdoc} + */ + public function supports(Request $request) + { + // Check headers + $token = $request->headers->get('Authorization'); + if (!$token) { + $this->logger->info('Token missing'); + return false; + } + if (0 !== strpos(strtolower($token), 'bearer ')) { + $this->logger->info('Token malformed'); + return false; + } + return true; + } } diff --git a/src/Syn/JwtFactory.php b/Syn/JwtFactory.php similarity index 100% rename from src/Syn/JwtFactory.php rename to Syn/JwtFactory.php diff --git a/src/Syn/JwtUser.php b/Syn/JwtUser.php similarity index 100% rename from src/Syn/JwtUser.php rename to Syn/JwtUser.php diff --git a/Syn/JwtUserProvider.php b/Syn/JwtUserProvider.php new file mode 100644 index 0000000..d63586a --- /dev/null +++ b/Syn/JwtUserProvider.php @@ -0,0 +1,42 @@ +getUsername(), $user->getRoles()); + return $user; + } + + /** + * {@inheritdoc} + */ + public function supportsClass($class) + { + return JwtUser::class == $class; + } +} diff --git a/src/Syn/SettingsParser.php b/Syn/SettingsParser.php similarity index 100% rename from src/Syn/SettingsParser.php rename to Syn/SettingsParser.php diff --git a/Tests/AbstractCrayfishCommonsTestCase.php b/Tests/AbstractCrayfishCommonsTestCase.php new file mode 100644 index 0000000..a0e2f38 --- /dev/null +++ b/Tests/AbstractCrayfishCommonsTestCase.php @@ -0,0 +1,22 @@ +logger = new Logger('crayfish-commons-tests'); + $this->logger->pushHandler(new NullHandler()); + } +} diff --git a/tests/ApixMiddlewareTest.php b/Tests/ApixMiddlewareTest.php similarity index 60% rename from tests/ApixMiddlewareTest.php rename to Tests/ApixMiddlewareTest.php index fa4afbe..41a1ebc 100644 --- a/tests/ApixMiddlewareTest.php +++ b/Tests/ApixMiddlewareTest.php @@ -1,23 +1,32 @@ prophesize(HttpKernelInterface::class); + $kernel = $prophecy->reveal(); + // Mock a Fedora response. $prophecy = $this->prophesize(ResponseInterface::class); $prophecy->getBody()->willReturn(); @@ -31,14 +40,9 @@ public function testReturnsFedoraError() $prophecy->getResource(Argument::any(), Argument::any())->willReturn($mock_fedora_response); $mock_fedora_api = $prophecy->reveal(); - // Make a null logger. - $log = new Logger('null'); - $handler = new NullHandler(); - $log->pushHandler($handler); - $middleware = new ApixMiddleware( $mock_fedora_api, - $log + $this->logger ); // Create a Request. @@ -49,8 +53,12 @@ public function testReturnsFedoraError() $request->headers->set('Authorization', 'some_token'); $request->headers->set('Apix-Ldp-Resource', 'http://localhost:8080/fcrepo/rest/foo'); + $request_event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST); + // Test before(). - $response = $middleware->before($request); + $middleware->before($request_event); + + $response = $request_event->getResponse(); $this->assertTrue( $response->getStatusCode() == 401, @@ -62,21 +70,23 @@ public function testReturnsFedoraError() ); } + /** + * @covers ::before + * @covers ::getFedoraResource + */ public function testReturns400IfNoApixLdpResourceHeader() { + $prophecy = $this->prophesize(HttpKernelInterface::class); + $kernel = $prophecy->reveal(); + // Mock a FedoraApi. $prophecy = $this->prophesize(IFedoraApi::class); $mock_fedora_api = $prophecy->reveal(); - // Make a null logger. - $log = new Logger('null'); - $handler = new NullHandler(); - $log->pushHandler($handler); - // Make the middleware. $middleware = new ApixMiddleware( $mock_fedora_api, - $log + $this->logger ); // Create a Request. @@ -85,12 +95,16 @@ public function testReturns400IfNoApixLdpResourceHeader() "GET" ); + $request_event = new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST); + // Test before(). - $response = $middleware->before($request); + $middleware->before($request_event); - $this->assertTrue( - $response->getStatusCode() == 400, - "Response code must be 400 if no ApixLdpResource header is present." - ); + $response = $request_event->getResponse(); + + $this->assertTrue( + $response->getStatusCode() == 400, + "Response code must be 400 if no ApixLdpResource header is present." + ); } } diff --git a/tests/CmdExecuteServiceTest.php b/Tests/CmdExecuteServiceTest.php similarity index 72% rename from tests/CmdExecuteServiceTest.php rename to Tests/CmdExecuteServiceTest.php index 03dffc6..6120657 100644 --- a/tests/CmdExecuteServiceTest.php +++ b/Tests/CmdExecuteServiceTest.php @@ -1,22 +1,15 @@ pushHandler(new NullHandler()); - $service = new CmdExecuteService($logger); + $service = new CmdExecuteService($this->logger); $string = "apple\npear\nbanana"; $data = fopen('php://memory', 'r+'); @@ -39,14 +32,13 @@ public function testExecuteWithResource() ); // Call the callback just to close the streams/process. + // This causes content to be printed to the test output. $callback(); } public function testExecuteWithoutResource() { - $logger = new Logger('test'); - $logger->pushHandler(new NullHandler()); - $service = new CmdExecuteService($logger); + $service = new CmdExecuteService($this->logger); $command = 'echo "derp"'; $callback = $service->execute($command, ""); diff --git a/tests/EntityMapper/EntityMapperTest.php b/Tests/EntityMapper/EntityMapperTest.php similarity index 87% rename from tests/EntityMapper/EntityMapperTest.php rename to Tests/EntityMapper/EntityMapperTest.php index ed8f503..a0bfcc7 100644 --- a/tests/EntityMapper/EntityMapperTest.php +++ b/Tests/EntityMapper/EntityMapperTest.php @@ -1,15 +1,12 @@ simpleAuth = $this->getSimpleAuth(); + } + + private function getParser($site = null, $token = null) { if ($site === null) { $site = [ @@ -38,93 +43,156 @@ public function getParser($site = null, $token = null) return $prophet->reveal(); } - public function getJwtFactory($jwt) + private function getJwtFactory($jwt, $fail = false) { $prophet = $this->prophesize(JwtFactory::class); - $prophet->load(Argument::any())->willReturn($jwt); + if ($fail) { + $prophet->load(Argument::any())->willThrow(\InvalidArgumentException::class); + } else { + $prophet->load(Argument::any())->willReturn($jwt); + } return $prophet->reveal(); } - public function getUserProvider() + private function getUserProvider() { - $prophet = $this->prophesize(UserProviderInterface::class); - return $prophet->reveal(); + return new JwtUserProvider(); } - public function getSimpleAuth() + private function getSimpleAuth($bad_token = false) { $jwt = $this->prophesize(SimpleJWS::class)->reveal(); $parser = $this->getParser(); - $jwtFactory = $this->getJwtFactory($jwt); + $jwtFactory = $this->getJwtFactory($jwt, $bad_token); return new JwtAuthenticator($parser, $jwtFactory); } - public function testAuthenticationFailure() + /** + * Utility function to ensure the index does not exist in array or is null. + * + * @param array $array + * The credential array. + * @param string $index + * The associative array index. + * + * @return boolean + * Whether the index does not exist or is null. + */ + private function unsetOrNull(array $array, $index) { - $auth = $this->getSimpleAuth(); + return (!array_key_exists($index, $array) || is_null($array[$index])); + } + + /** + * Compare a credential array against what we return for invalid creds. + * + * @param $credentials + * Array with credentials. + */ + private function checkInvalidCredentials($credentials) + { + $this->assertTrue($this->unsetOrNull($credentials, 'name')); + $this->assertTrue($this->unsetOrNull($credentials, 'roles')); + $this->assertTrue($this->unsetOrNull($credentials, 'jwt')); + $this->assertFalse($this->unsetOrNull($credentials, 'token')); + } + public function testAuthenticationFailure() + { $request = $this->prophesize(Request::class)->reveal(); $exception = $this->prophesize(AuthenticationException::class)->reveal(); - $response = $auth->onAuthenticationFailure($request, $exception); + $response = $this->simpleAuth->onAuthenticationFailure($request, $exception); $this->assertEquals(403, $response->getStatusCode()); } public function testAuthenticationStart() { - $auth = $this->getSimpleAuth(); - $request = $this->prophesize(Request::class)->reveal(); $exception = $this->prophesize(AuthenticationException::class)->reveal(); - $response = $auth->start($request, $exception); + $response = $this->simpleAuth->start($request, $exception); $this->assertEquals(401, $response->getStatusCode()); } public function testAuthenticationSuccess() { - $auth = $this->getSimpleAuth(); - $request = $this->prophesize(Request::class)->reveal(); $token = $this->prophesize(TokenInterface::class)->reveal(); - $response = $auth->onAuthenticationSuccess($request, $token, null); + $response = $this->simpleAuth->onAuthenticationSuccess($request, $token, null); $this->assertNull($response); } public function testRememberMe() { - $auth = $this->getSimpleAuth(); - $this->assertFalse($auth->supportsRememberMe()); + $this->assertFalse($this->simpleAuth->supportsRememberMe()); } - public function headerHelper($request) + /** + * Get credential array from request. + * + * @param $request + * The request. + * @return array|mixed + * Array of token parts. + */ + private function getCredsHelper($request) { - $auth = $this->getSimpleAuth(); - $credentials = $auth->getCredentials($request); + $credentials = $this->simpleAuth->getCredentials($request); return $credentials; } + /** + * Utility function to run the checkCredentials against submitted creds. + * + * @param $credentials + * Array of credentials. + * @return boolean + * Whether the user is authorized or not. + */ + private function checkCredsHelper($credentials) + { + $authorized = $this->simpleAuth->checkCredentials( + $credentials, + new JwtUser($credentials['name'], $credentials['roles']) + ); + return $authorized; + } + public function testNoHeader() { $request = new Request(); - $this->assertNull($this->headerHelper($request)); + $this->assertFalse($this->simpleAuth->supports($request)); } public function testHeaderNoBearer() { $request = new Request(); $request->headers->set("Authorization", "foo"); - $this->assertNull($this->headerHelper($request)); + $this->assertFalse($this->simpleAuth->supports($request)); } public function testHeaderBadToken() { $request = new Request(); $request->headers->set("Authorization", "Bearer foo"); - $this->assertNull($this->headerHelper($request)); + $this->simpleAuth = $this->getSimpleAuth(true); + $creds = $this->getCredsHelper($request); + $this->checkInvalidCredentials($creds); + $this->assertFalse($this->checkCredsHelper($creds)); } + /** + * Takes an array of JWT parts and tries to authenticate against it. + * + * @param $data + * The array of JWT parameters. + * @param bool $expired + * Whether the JWT has expired or not. + * @return bool + * Whether the credentials authenticate or not. + */ public function headerTokenHelper($data, $expired = false) { $parser = $this->getParser(); @@ -133,11 +201,13 @@ public function headerTokenHelper($data, $expired = false) $prophet = $this->prophesize(SimpleJWS::class); $prophet->getPayload()->willReturn($data); $prophet->isExpired()->willReturn($expired); + $prophet->isValid(Argument::any(), Argument::any())->willReturn(true); $jwt = $prophet->reveal(); $jwtFactory = $this->getJwtFactory($jwt); $auth = new JwtAuthenticator($parser, $jwtFactory); $credentials = $auth->getCredentials($request); - return $credentials; + $user = new JwtUser($credentials['name'], $credentials['roles']); + return $auth->checkCredentials($credentials, $user); } public function testHeaderTokenFields() @@ -150,33 +220,33 @@ public function testHeaderTokenFields() 'iat' => 1, 'exp' => 1, ]; - $this->assertTrue(is_array($this->headerTokenHelper($data))); + $this->assertTrue($this->headerTokenHelper($data)); $missing = $data; unset($missing['webid']); - $this->assertNull($this->headerTokenHelper($missing)); + $this->assertFalse($this->headerTokenHelper($missing)); $missing = $data; unset($missing['iss']); - $this->assertNull($this->headerTokenHelper($missing)); + $this->assertFalse($this->headerTokenHelper($missing)); $missing = $data; unset($missing['sub']); - $this->assertNull($this->headerTokenHelper($missing)); + $this->assertFalse($this->headerTokenHelper($missing)); $missing = $data; unset($missing['roles']); - $this->assertNull($this->headerTokenHelper($missing)); + $this->assertFalse($this->headerTokenHelper($missing)); $missing = $data; unset($missing['iat']); - $this->assertNull($this->headerTokenHelper($missing)); + $this->assertFalse($this->headerTokenHelper($missing)); $missing = $data; unset($missing['exp']); - $this->assertNull($this->headerTokenHelper($missing)); + $this->assertFalse($this->headerTokenHelper($missing)); - $this->assertNull($this->headerTokenHelper($data, true)); + $this->assertFalse($this->headerTokenHelper($data, true)); } public function jwtAuthHelper($data, $parser, $valid = true) diff --git a/tests/Syn/SettingsParserSiteTest.php b/Tests/Syn/SettingsParserSiteTest.php similarity index 74% rename from tests/Syn/SettingsParserSiteTest.php rename to Tests/Syn/SettingsParserSiteTest.php index cd3eab8..1c7bc7c 100644 --- a/tests/Syn/SettingsParserSiteTest.php +++ b/Tests/Syn/SettingsParserSiteTest.php @@ -1,18 +1,14 @@ STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(0, count($sites)); } @@ -37,8 +32,7 @@ public function hmacHelper($algorithm) STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(1, count($sites)); $this->assertTrue(isset($sites['http://test.com'])); @@ -63,8 +57,7 @@ public function testOneSiteHmacBase64() STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(1, count($sites)); $this->assertTrue(isset($sites['http://test.com'])); @@ -82,8 +75,7 @@ public function testOneSiteHmacInvalidBase64() STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(0, count($sites)); } @@ -97,8 +89,7 @@ public function testOneSiteHmacInvalidEncoding() STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(0, count($sites)); } @@ -114,8 +105,7 @@ public function testOneSiteHmacFileKey() STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(1, count($sites)); $this->assertTrue(isset($sites['http://test.com'])); @@ -132,8 +122,7 @@ public function testOneSiteHmacInvalidFileKey() STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(0, count($sites)); } @@ -145,8 +134,7 @@ public function testNoKeyOrPath() STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(0, count($sites)); } @@ -160,8 +148,7 @@ public function testNoUrl() STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(0, count($sites)); } @@ -175,8 +162,7 @@ public function testNoUrlDefault() STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(1, count($sites)); } @@ -190,8 +176,7 @@ public function testNoUrlNotDefault() STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(0, count($sites)); } @@ -210,8 +195,7 @@ public function rsaHelper($algorithm) STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(1, count($sites)); $this->assertTrue(isset($sites['http://test.com'])); @@ -235,8 +219,7 @@ public function testRsaNotRealKey() STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(0, count($sites)); } @@ -255,8 +238,7 @@ public function testRsaBadEncoding() STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(0, count($sites)); } @@ -265,8 +247,7 @@ public function testEmptyString() { $testXml = <<prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(0, count($sites)); } @@ -276,8 +257,7 @@ public function testIncorrectTags() $testXml = << STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $sites = $parser->getSites(); $this->assertEquals(0, count($sites)); } diff --git a/tests/Syn/SettingsParserTokenTest.php b/Tests/Syn/SettingsParserTokenTest.php similarity index 73% rename from tests/Syn/SettingsParserTokenTest.php rename to Tests/Syn/SettingsParserTokenTest.php index dce1d92..f4358ea 100644 --- a/tests/Syn/SettingsParserTokenTest.php +++ b/Tests/Syn/SettingsParserTokenTest.php @@ -1,17 +1,13 @@ STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $tokens = $parser->getStaticTokens(); $this->assertEquals(0, count($tokens)); } @@ -36,8 +31,7 @@ public function testTokenNoParams() STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $tokens = $parser->getStaticTokens(); $this->assertEquals(1, count($tokens)); $this->assertTrue(isset($tokens['c00lpazzward'])); @@ -56,8 +50,7 @@ public function testTokenUser() STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $tokens = $parser->getStaticTokens(); $this->assertEquals(1, count($tokens)); $this->assertTrue(isset($tokens['c00lpazzward'])); @@ -75,8 +68,7 @@ public function testTokenRole() STRING; - $logger = $this->prophesize(AbstractLogger::class)->reveal(); - $parser = new SettingsParser($testXml, $logger); + $parser = new SettingsParser($testXml, $this->logger); $tokens = $parser->getStaticTokens(); $this->assertEquals(1, count($tokens)); $this->assertTrue(isset($tokens['c00lpazzward'])); diff --git a/composer.json b/composer.json index ad73a60..d13d781 100644 --- a/composer.json +++ b/composer.json @@ -1,45 +1,55 @@ { "name": "islandora/crayfish-commons", "description": "Shared code amongst Islandora Crayfish microservices", - "type": "library", + "type": "symfony-bundle", "homepage": "https://github.com/Islandora/Crayfish-Commons", "support": { "issues": "https://github.com/Islandora/documentation/issues" }, "require": { - "doctrine/dbal": "~2.2", - "islandora/chullo": "^1", - "monolog/monolog": "^1.22", - "namshi/jose": "^7.2", - "pimple/pimple": "~3.0", + "islandora/chullo": "^1.0", "psr/log": "^1.0.1", - "silex/silex": "^2.0", - "symfony/http-foundation": "^3.4 || ^4.4", - "symfony/security": "^3.4 || ^4.4", - "symfony/yaml": "^3.4 || ^4.4" + "namshi/jose": "^7.2", + "symfony/monolog-bundle": "^3.4", + "symfony/http-foundation": "4.4.*", + "symfony/config": "4.4.*", + "symfony/dependency-injection": "4.4.*", + "symfony/event-dispatcher": "4.4.*", + "symfony/yaml": "4.4.*", + "symfony/security-bundle": "4.4.*" }, "require-dev": { - "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "^9.0", "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", "sebastian/phpcpd": "^6.0", - "squizlabs/php_codesniffer": "^3.0" + "squizlabs/php_codesniffer": "^3.0", + "mikey179/vfsstream": "^1.6", + "symfony/phpunit-bridge": "4.4.*" }, "autoload": { "psr-4": { - "Islandora\\Crayfish\\Commons\\": "src/" + "Islandora\\Crayfish\\Commons\\": "" } }, "scripts": { "check": [ - "vendor/bin/phpcs --standard=PSR2 src tests", - "vendor/bin/phpcpd --suffix *.php src tests" + "./vendor/bin/phpcs --standard=PSR2 --extensions=php --ignore=\"vendor/\" .", + "./vendor/bin/phpcpd --suffix *.php --exclude vendor . " ], "test": [ "@check", - "vendor/bin/phpunit" + "php ./vendor/bin/simple-phpunit" ] }, + "conflict": { + "symfony/symfony": "*" + }, + "extra": { + "symfony": { + "allow-contrib": false, + "require": "4.4.*" + } + }, "license": "MIT", "authors": [ { diff --git a/composer.lock b/composer.lock index 6d48e7d..4fa5871 100644 --- a/composer.lock +++ b/composer.lock @@ -4,352 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "78f0710c3f0e1f76dfe9357f7bb945df", + "content-hash": "cb135e6d413d7e49be0fe4d822ba4ada", "packages": [ - { - "name": "doctrine/cache", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/cache.git", - "reference": "ac77408b22cc6c4d0b4947d20a3889be3043566e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/ac77408b22cc6c4d0b4947d20a3889be3043566e", - "reference": "ac77408b22cc6c4d0b4947d20a3889be3043566e", - "shasum": "" - }, - "require": { - "php": "~7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": ">2.2,<2.4" - }, - "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", - "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^8.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "predis/predis": "~1.0", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", - "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", - "homepage": "https://www.doctrine-project.org/projects/cache.html", - "keywords": [ - "abstraction", - "apcu", - "cache", - "caching", - "couchdb", - "memcached", - "php", - "redis", - "xcache" - ], - "support": { - "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/2.1.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache", - "type": "tidelift" - } - ], - "time": "2021-07-14T11:22:57+00:00" - }, - { - "name": "doctrine/dbal", - "version": "2.13.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/8dd39d2ead4409ce652fd4f02621060f009ea5e4", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4", - "shasum": "" - }, - "require": { - "doctrine/cache": "^1.0|^2.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1 || ^8" - }, - "require-dev": { - "doctrine/coding-standard": "9.0.0", - "jetbrains/phpstorm-stubs": "2020.2", - "phpstan/phpstan": "0.12.81", - "phpunit/phpunit": "^7.5.20|^8.5|9.5.5", - "squizlabs/php_codesniffer": "3.6.0", - "symfony/cache": "^4.4", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "4.6.4" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "bin": [ - "bin/doctrine-dbal" - ], - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlanywhere", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/2.13.2" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", - "type": "tidelift" - } - ], - "time": "2021-06-18T21:48:39+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "v0.5.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "psr/log": "^1.0" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v0.5.3" - }, - "time": "2021-03-21T12:59:47+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/common": "<2.9@dev" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.x" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", - "type": "tidelift" - } - ], - "time": "2020-05-29T18:28:51+00:00" - }, { "name": "easyrdf/easyrdf", "version": "1.1.1", @@ -498,16 +154,16 @@ }, { "name": "guzzlehttp/promises", - "version": "1.4.1", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", "shasum": "" }, "require": { @@ -519,7 +175,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.5-dev" } }, "autoload": { @@ -535,10 +191,25 @@ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], "description": "Guzzle promises library", @@ -547,22 +218,36 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.1" + "source": "https://github.com/guzzle/promises/tree/1.5.1" }, - "time": "2021-03-07T09:25:29+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:56:57+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.8.2", + "version": "1.8.3", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "dc960a912984efb74d0a90222870c72c87f10c91" + "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91", - "reference": "dc960a912984efb74d0a90222870c72c87f10c91", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", + "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85", "shasum": "" }, "require": { @@ -599,13 +284,34 @@ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, { "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" } ], @@ -622,13 +328,27 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.2" + "source": "https://github.com/guzzle/psr7/tree/1.8.3" }, - "time": "2021-04-26T09:17:50+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2021-10-05T13:56:00+00:00" }, { "name": "islandora/chullo", - "version": "dev-dev", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/Islandora/chullo.git", @@ -652,7 +372,6 @@ "sebastian/phpcpd": "^6.0", "squizlabs/php_codesniffer": "^3.0" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -794,51 +513,64 @@ }, { "name": "monolog/monolog", - "version": "1.26.1", + "version": "2.3.5", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5" + "reference": "fd4380d6fc37626e2f799f29d91195040137eba9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c6b00f05152ae2c9b04a448f99c7590beb6042f5", - "reference": "c6b00f05152ae2c9b04a448f99c7590beb6042f5", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9", + "reference": "fd4380d6fc37626e2f799f29d91195040137eba9", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "1.0.0" + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" }, "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "php-amqplib/php-amqplib": "~2.4", + "elasticsearch/elasticsearch": "^7", + "graylog2/gelf-php": "^1.4.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", "php-console/php-console": "^3.1.3", - "phpstan/phpstan": "^0.12.59", - "phpunit/phpunit": "~4.5", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", + "phpspec/prophecy": "^1.6.1", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3", + "ruflin/elastica": ">=0.90@dev", "swiftmailer/swiftmailer": "^5.3|^6.0" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, "autoload": { "psr-4": { "Monolog\\": "src/Monolog" @@ -852,11 +584,11 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "homepage": "https://github.com/Seldaek/monolog", "keywords": [ "log", "logging", @@ -864,7 +596,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.26.1" + "source": "https://github.com/Seldaek/monolog/tree/2.3.5" }, "funding": [ { @@ -876,7 +608,7 @@ "type": "tidelift" } ], - "time": "2021-05-28T08:32:12+00:00" + "time": "2021-10-01T21:08:31+00:00" }, { "name": "namshi/jose", @@ -946,74 +678,21 @@ "time": "2016-12-05T07:27:31+00:00" }, { - "name": "pimple/pimple", - "version": "v3.4.0", + "name": "psr/container", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "86406047271859ffc13424a048541f4531f53601" + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/86406047271859ffc13424a048541f4531f53601", - "reference": "86406047271859ffc13424a048541f4531f53601", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" - }, - "require-dev": { - "symfony/phpunit-bridge": "^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Pimple": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "https://pimple.symfony.com", - "keywords": [ - "container", - "dependency injection" - ], - "support": { - "source": "https://github.com/silexphp/Pimple/tree/v3.4.0" - }, - "time": "2021-03-06T08:28:00+00:00" - }, - { - "name": "psr/container", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" + "php": ">=7.2.0" }, "type": "library", "autoload": { @@ -1194,69 +873,47 @@ "time": "2019-03-08T08:55:37+00:00" }, { - "name": "silex/silex", - "version": "v2.3.0", + "name": "symfony/config", + "version": "v4.4.33", "source": { "type": "git", - "url": "https://github.com/silexphp/Silex.git", - "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131" + "url": "https://github.com/symfony/config.git", + "reference": "25c11934bf20c1633f3f125fed0bd7e29f5d8f24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Silex/zipball/6bc31c1b8c4ef614a7115320fd2d3b958032f131", - "reference": "6bc31c1b8c4ef614a7115320fd2d3b958032f131", + "url": "https://api.github.com/repos/symfony/config/zipball/25c11934bf20c1633f3f125fed0bd7e29f5d8f24", + "reference": "25c11934bf20c1633f3f125fed0bd7e29f5d8f24", "shasum": "" }, "require": { "php": ">=7.1.3", - "pimple/pimple": "^3.0", - "symfony/event-dispatcher": "^4.0", - "symfony/http-foundation": "^4.0", - "symfony/http-kernel": "^4.0", - "symfony/routing": "^4.0" + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22" }, - "replace": { - "silex/api": "self.version", - "silex/providers": "self.version" + "conflict": { + "symfony/finder": "<3.4" }, "require-dev": { - "doctrine/dbal": "^2.2", - "monolog/monolog": "^1.4.1", - "swiftmailer/swiftmailer": "^5", - "symfony/asset": "^4.0", - "symfony/browser-kit": "^4.0", - "symfony/config": "^4.0", - "symfony/css-selector": "^4.0", - "symfony/debug": "^4.0", - "symfony/doctrine-bridge": "^4.0", - "symfony/dom-crawler": "^4.0", - "symfony/expression-language": "^4.0", - "symfony/finder": "^4.0", - "symfony/form": "^4.0", - "symfony/intl": "^4.0", - "symfony/monolog-bridge": "^4.0", - "symfony/options-resolver": "^4.0", - "symfony/phpunit-bridge": "^3.2", - "symfony/process": "^4.0", - "symfony/security": "^4.0", - "symfony/serializer": "^4.0", - "symfony/translation": "^4.0", - "symfony/twig-bridge": "^4.0", - "symfony/validator": "^4.0", - "symfony/var-dumper": "^4.0", - "symfony/web-link": "^4.0", - "twig/twig": "^2.0" + "symfony/event-dispatcher": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/messenger": "^4.1|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" }, + "type": "library", "autoload": { "psr-4": { - "Silex\\": "src/Silex" - } + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1268,40 +925,48 @@ "email": "fabien@symfony.com" }, { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "The PHP micro-framework based on the Symfony Components", - "homepage": "http://silex.sensiolabs.org", - "keywords": [ - "microframework" - ], + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/silexphp/Silex/issues", - "source": "https://github.com/silexphp/Silex/tree/v2.3.0" + "source": "https://github.com/symfony/config/tree/v4.4.33" }, - "abandoned": "symfony/flex", - "time": "2018-04-20T05:17:01+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-19T15:09:42+00:00" }, { "name": "symfony/debug", - "version": "v4.4.25", + "version": "v4.4.31", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f" + "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/a8d2d5c94438548bff9f998ca874e202bb29d07f", - "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f", + "url": "https://api.github.com/repos/symfony/debug/zipball/43ede438d4cb52cd589ae5dc070e9323866ba8e0", + "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0", "shasum": "" }, "require": { "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/polyfill-php80": "^1.15" + "psr/log": "^1|^2|^3" }, "conflict": { "symfony/http-kernel": "<3.4" @@ -1335,7 +1000,93 @@ "description": "Provides tools to ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.25" + "source": "https://github.com/symfony/debug/tree/v4.4.31" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-09-24T13:30:14+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v4.4.33", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "ad364e599a4059db29c0aa424537e6ba668f54e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ad364e599a4059db29c0aa424537e6ba668f54e6", + "reference": "ad364e599a4059db29c0aa424537e6ba668f54e6", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "psr/container": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/config": "<4.3|>=5.0", + "symfony/finder": "<3.4", + "symfony/proxy-manager-bridge": "<3.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0|2.0" + }, + "require-dev": { + "symfony/config": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/yaml": "^4.4|^5.0" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows you to standardize and centralize the way objects are constructed in your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dependency-injection/tree/v4.4.33" }, "funding": [ { @@ -1351,7 +1102,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2021-10-17T07:04:24+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1422,23 +1173,22 @@ }, { "name": "symfony/error-handler", - "version": "v4.4.26", + "version": "v4.4.30", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "4001f01153d0eb5496fe11d8c76d1e56b47fdb88" + "reference": "51f98f7aa99f00f3b1da6bafe934e67ae6ba6dc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/4001f01153d0eb5496fe11d8c76d1e56b47fdb88", - "reference": "4001f01153d0eb5496fe11d8c76d1e56b47fdb88", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/51f98f7aa99f00f3b1da6bafe934e67ae6ba6dc5", + "reference": "51f98f7aa99f00f3b1da6bafe934e67ae6ba6dc5", "shasum": "" }, "require": { "php": ">=7.1.3", - "psr/log": "~1.0", + "psr/log": "^1|^2|^3", "symfony/debug": "^4.4.5", - "symfony/polyfill-php80": "^1.15", "symfony/var-dumper": "^4.4|^5.0" }, "require-dev": { @@ -1471,7 +1221,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.26" + "source": "https://github.com/symfony/error-handler/tree/v4.4.30" }, "funding": [ { @@ -1487,25 +1237,26 @@ "type": "tidelift" } ], - "time": "2021-06-24T07:57:22+00:00" + "time": "2021-08-27T17:42:48+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.25", + "version": "v4.4.30", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f" + "reference": "2fe81680070043c4c80e7cedceb797e34f377bac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/047773e7016e4fd45102cedf4bd2558ae0d0c32f", - "reference": "047773e7016e4fd45102cedf4bd2558ae0d0c32f", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/2fe81680070043c4c80e7cedceb797e34f377bac", + "reference": "2fe81680070043c4c80e7cedceb797e34f377bac", "shasum": "" }, "require": { "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" + "symfony/event-dispatcher-contracts": "^1.1", + "symfony/polyfill-php80": "^1.16" }, "conflict": { "symfony/dependency-injection": "<3.4" @@ -1515,7 +1266,7 @@ "symfony/event-dispatcher-implementation": "1.1" }, "require-dev": { - "psr/log": "~1.0", + "psr/log": "^1|^2|^3", "symfony/config": "^3.4|^4.0|^5.0", "symfony/dependency-injection": "^3.4|^4.0|^5.0", "symfony/error-handler": "~3.4|~4.4", @@ -1554,7 +1305,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.25" + "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.30" }, "funding": [ { @@ -1570,7 +1321,7 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2021-08-04T20:31:23+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -1651,6 +1402,69 @@ ], "time": "2020-07-06T13:19:58+00:00" }, + { + "name": "symfony/filesystem", + "version": "v5.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/343f4fe324383ca46792cae728a3b6e2f708fb32", + "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v5.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-07-21T12:40:44+00:00" + }, { "name": "symfony/http-client-contracts", "version": "v2.4.0", @@ -1731,23 +1545,23 @@ }, { "name": "symfony/http-foundation", - "version": "v4.4.26", + "version": "v4.4.33", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "8759ed5c27c2a8a47cb60f367f4be6727f08d58b" + "reference": "b9a91102f548e0111f4996e8c622fb1d1d479850" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8759ed5c27c2a8a47cb60f367f4be6727f08d58b", - "reference": "8759ed5c27c2a8a47cb60f367f4be6727f08d58b", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b9a91102f548e0111f4996e8c622fb1d1d479850", + "reference": "b9a91102f548e0111f4996e8c622fb1d1d479850", "shasum": "" }, "require": { "php": ">=7.1.3", "symfony/mime": "^4.3|^5.0", "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "require-dev": { "predis/predis": "~1.0", @@ -1779,7 +1593,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.26" + "source": "https://github.com/symfony/http-foundation/tree/v4.4.33" }, "funding": [ { @@ -1795,32 +1609,32 @@ "type": "tidelift" } ], - "time": "2021-06-26T21:56:04+00:00" + "time": "2021-10-07T15:31:35+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.26", + "version": "v4.4.33", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "e08b2fb8a6eedd81c70522e514bad9b2c1fff881" + "reference": "6f1fcca1154f782796549f4f4e5090bae9525c0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e08b2fb8a6eedd81c70522e514bad9b2c1fff881", - "reference": "e08b2fb8a6eedd81c70522e514bad9b2c1fff881", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6f1fcca1154f782796549f4f4e5090bae9525c0e", + "reference": "6f1fcca1154f782796549f4f4e5090bae9525c0e", "shasum": "" }, "require": { "php": ">=7.1.3", - "psr/log": "~1.0", + "psr/log": "^1|^2", "symfony/error-handler": "^4.4", "symfony/event-dispatcher": "^4.4", "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-foundation": "^4.4.30|^5.3.7", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "conflict": { "symfony/browser-kit": "<4.3", @@ -1831,7 +1645,7 @@ "twig/twig": "<1.43|<2.13,>=2" }, "provide": { - "psr/log-implementation": "1.0" + "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", @@ -1883,7 +1697,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.26" + "source": "https://github.com/symfony/http-kernel/tree/v4.4.33" }, "funding": [ { @@ -1899,20 +1713,20 @@ "type": "tidelift" } ], - "time": "2021-06-30T08:18:06+00:00" + "time": "2021-10-29T08:14:01+00:00" }, { "name": "symfony/mime", - "version": "v5.3.2", + "version": "v5.3.8", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a" + "reference": "a756033d0a7e53db389618653ae991eba5a19a11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/47dd7912152b82d0d4c8d9040dbc93d6232d472a", - "reference": "47dd7912152b82d0d4c8d9040dbc93d6232d472a", + "url": "https://api.github.com/repos/symfony/mime/zipball/a756033d0a7e53db389618653ae991eba5a19a11", + "reference": "a756033d0a7e53db389618653ae991eba5a19a11", "shasum": "" }, "require": { @@ -1920,7 +1734,7 @@ "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "conflict": { "egulias/email-validator": "~3.0.0", @@ -1966,7 +1780,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.2" + "source": "https://github.com/symfony/mime/tree/v5.3.8" }, "funding": [ { @@ -1982,44 +1796,54 @@ "type": "tidelift" } ], - "time": "2021-06-09T10:58:01+00:00" + "time": "2021-09-10T12:30:38+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "name": "symfony/monolog-bridge", + "version": "v5.2.12", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "2c3943d7c0100983f9c0a82807555273353e3539" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/2c3943d7c0100983f9c0a82807555273353e3539", + "reference": "2c3943d7c0100983f9c0a82807555273353e3539", "shasum": "" }, "require": { - "php": ">=7.1" + "monolog/monolog": "^1.25.1|^2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2" }, - "suggest": { - "ext-ctype": "For best performance" + "conflict": { + "symfony/console": "<4.4", + "symfony/http-foundation": "<4.4" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "symfony/console": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/mailer": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/security-core": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" + }, + "suggest": { + "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", + "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", + "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." }, + "type": "symfony-bridge", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" + "Symfony\\Bridge\\Monolog\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2028,24 +1852,18 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/monolog-bridge/tree/v5.2.12" }, "funding": [ { @@ -2061,45 +1879,205 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-07-23T15:54:19+00:00" }, { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.0", + "name": "symfony/monolog-bundle", + "version": "v3.7.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab" + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "4054b2e940a25195ae15f0a49ab0c51718922eb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab", - "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/4054b2e940a25195ae15f0a49ab0c51718922eb4", + "reference": "4054b2e940a25195ae15f0a49ab0c51718922eb4", "shasum": "" }, "require": { - "php": ">=7.1" + "monolog/monolog": "~1.22 || ~2.0", + "php": ">=7.1.3", + "symfony/config": "~4.4 || ^5.0", + "symfony/dependency-injection": "^4.4 || ^5.0", + "symfony/http-kernel": "~4.4 || ^5.0", + "symfony/monolog-bridge": "~4.4 || ^5.0" }, - "suggest": { - "ext-intl": "For best performance" + "require-dev": { + "symfony/console": "~4.4 || ^5.0", + "symfony/phpunit-bridge": "^5.1", + "symfony/yaml": "~4.4 || ^5.0" }, - "type": "library", + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + "Symfony\\Bundle\\MonologBundle\\": "" }, - "files": [ - "bootstrap.php" - ] + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony MonologBundle", + "homepage": "https://symfony.com", + "keywords": [ + "log", + "logging" + ], + "support": { + "issues": "https://github.com/symfony/monolog-bundle/issues", + "source": "https://github.com/symfony/monolog-bundle/tree/v3.7.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-03-31T07:20:47+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", + "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2126,7 +2104,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" }, "funding": [ { @@ -2142,7 +2120,7 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2021-05-27T12:26:48+00:00" }, { "name": "symfony/polyfill-intl-idn", @@ -2317,16 +2295,16 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.23.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1" + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2df51500adbaebdc4c38dea4c89a2e131c45c8a1", - "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", "shasum": "" }, "require": { @@ -2377,7 +2355,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" }, "funding": [ { @@ -2393,7 +2371,7 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2021-05-27T12:26:48+00:00" }, { "name": "symfony/polyfill-php56", @@ -2556,25 +2534,356 @@ "require": { "php": ">=7.1" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-02-19T12:13:01+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-07-28T13:41:28+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "e66119f3de95efc359483f810c4c3e6436279436" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", + "reference": "e66119f3de95efc359483f810c4c3e6436279436", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-05-21T13:25:03+00:00" + }, + { + "name": "symfony/property-access", + "version": "v5.3.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "2fbab5f95ddb6b8e85f38a6a8a04a17c0acc4d66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/2fbab5f95ddb6b8e85f38a6a8a04a17c0acc4d66", + "reference": "2fbab5f95ddb6b8e85f38a6a8a04a17c0acc4d66", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.16", + "symfony/property-info": "^5.2" + }, + "require-dev": { + "symfony/cache": "^4.4|^5.0" + }, + "suggest": { + "psr/cache-implementation": "To cache access methods." + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property path", + "reflection" + ], + "support": { + "source": "https://github.com/symfony/property-access/tree/v5.3.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-09-10T11:55:24+00:00" + }, + { + "name": "symfony/property-info", + "version": "v5.3.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-info.git", + "reference": "39de5bed8c036f76ec0457ec52908e45d5497947" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-info/zipball/39de5bed8c036f76ec0457ec52908e45d5497947", + "reference": "39de5bed8c036f76ec0457ec52908e45d5497947", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.16", + "symfony/string": "^5.1" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/cache": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "suggest": { + "phpdocumentor/reflection-docblock": "To use the PHPDoc", + "psr/cache-implementation": "To cache results", + "symfony/doctrine-bridge": "To use Doctrine metadata", + "symfony/serializer": "To use Serializer metadata" }, + "type": "library", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" + "Symfony\\Component\\PropertyInfo\\": "" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2583,24 +2892,26 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "description": "Extracts information about PHP class' properties using metadata of popular sources", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" + "source": "https://github.com/symfony/property-info/tree/v5.3.8" }, "funding": [ { @@ -2616,44 +2927,67 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-09-07T07:41:40+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.23.0", + "name": "symfony/security-bundle", + "version": "v4.4.27", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0" + "url": "https://github.com/symfony/security-bundle.git", + "reference": "49a09063f633d059b34d53c47adee7144c883bbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0", - "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/49a09063f633d059b34d53c47adee7144c883bbe", + "reference": "49a09063f633d059b34d53c47adee7144c883bbe", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-xml": "*", + "php": ">=7.1.3", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^4.4", + "symfony/security-csrf": "^4.2|^5.0", + "symfony/security-guard": "^4.2|^5.0", + "symfony/security-http": "^4.4.5" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "conflict": { + "symfony/browser-kit": "<4.2", + "symfony/console": "<3.4", + "symfony/framework-bundle": "<4.4", + "symfony/ldap": "<4.4", + "symfony/twig-bundle": "<4.4" + }, + "require-dev": { + "doctrine/annotations": "^1.10.4", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.2|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^3.4|^4.0|^5.0", + "symfony/framework-bundle": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/translation": "^3.4|^4.0|^5.0", + "symfony/twig-bridge": "^3.4|^4.0|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.43|^2.13|^3.0.4" }, + "type": "symfony-bundle", "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" + "Symfony\\Bundle\\SecurityBundle\\": "" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2662,28 +2996,18 @@ ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0" + "source": "https://github.com/symfony/security-bundle/tree/v4.4.27" }, "funding": [ { @@ -2699,38 +3023,55 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-07-24T09:09:34+00:00" }, { - "name": "symfony/property-access", - "version": "v5.3.0", + "name": "symfony/security-core", + "version": "v4.4.33", "source": { "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "8988399a556cffb0fba9bb3603f8d1ba4543eceb" + "url": "https://github.com/symfony/security-core.git", + "reference": "8c89331d8d22b585652d0217de2dd0f423c2c980" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/8988399a556cffb0fba9bb3603f8d1ba4543eceb", - "reference": "8988399a556cffb0fba9bb3603f8d1ba4543eceb", + "url": "https://api.github.com/repos/symfony/security-core/zipball/8c89331d8d22b585652d0217de2dd0f423c2c980", + "reference": "8c89331d8d22b585652d0217de2dd0f423c2c980", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php80": "^1.15", - "symfony/property-info": "^5.2" + "php": ">=7.1.3", + "symfony/event-dispatcher-contracts": "^1.1|^2", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/ldap": "<4.4", + "symfony/security-guard": "<4.3" }, "require-dev": { - "symfony/cache": "^4.4|^5.0" + "psr/container": "^1.0|^2.0", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/ldap": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/validator": "^3.4.31|^4.3.4|^5.0" }, "suggest": { - "psr/cache-implementation": "To cache access methods." + "psr/container-implementation": "To instantiate the Security class", + "symfony/event-dispatcher": "", + "symfony/expression-language": "For using the expression voter", + "symfony/http-foundation": "", + "symfony/ldap": "For using LDAP integration", + "symfony/validator": "For using the user password constraint" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" + "Symfony\\Component\\Security\\Core\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2750,21 +3091,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", - "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property path", - "reflection" - ], "support": { - "source": "https://github.com/symfony/property-access/tree/v5.3.0" + "source": "https://github.com/symfony/security-core/tree/v4.4.33" }, "funding": [ { @@ -2780,50 +3110,40 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:43:10+00:00" + "time": "2021-10-23T07:49:03+00:00" }, { - "name": "symfony/property-info", - "version": "v5.3.1", + "name": "symfony/security-csrf", + "version": "v5.2.12", "source": { "type": "git", - "url": "https://github.com/symfony/property-info.git", - "reference": "6f8bff281f215dbf41929c7ec6f8309cdc0912cf" + "url": "https://github.com/symfony/security-csrf.git", + "reference": "f0af6689451582e55f6b3439362e72e536e916e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/6f8bff281f215dbf41929c7ec6f8309cdc0912cf", - "reference": "6f8bff281f215dbf41929c7ec6f8309cdc0912cf", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/f0af6689451582e55f6b3439362e72e536e916e4", + "reference": "f0af6689451582e55f6b3439362e72e536e916e4", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-php80": "^1.15", - "symfony/string": "^5.1" + "symfony/polyfill-php80": "^1.16", + "symfony/security-core": "^4.4|^5.0" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4" + "symfony/http-foundation": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/cache": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/http-foundation": "^4.4|^5.0" }, "suggest": { - "phpdocumentor/reflection-docblock": "To use the PHPDoc", - "psr/cache-implementation": "To cache results", - "symfony/doctrine-bridge": "To use Doctrine metadata", - "symfony/serializer": "To use Serializer metadata" + "symfony/http-foundation": "For using the class SessionTokenStorage." }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\PropertyInfo\\": "" + "Symfony\\Component\\Security\\Csrf\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2835,26 +3155,18 @@ ], "authors": [ { - "name": "Kévin Dunglas", - "email": "dunglas@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Extracts information about PHP class' properties using metadata of popular sources", + "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", - "keywords": [ - "doctrine", - "phpdoc", - "property", - "symfony", - "type", - "validator" - ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.3.1" + "source": "https://github.com/symfony/security-csrf/tree/v5.2.12" }, "funding": [ { @@ -2870,50 +3182,34 @@ "type": "tidelift" } ], - "time": "2021-05-31T12:40:48+00:00" + "time": "2021-07-21T12:38:00+00:00" }, { - "name": "symfony/routing", - "version": "v4.4.25", + "name": "symfony/security-guard", + "version": "v4.4.27", "source": { "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434" + "url": "https://github.com/symfony/security-guard.git", + "reference": "68d4be4fe90f4eccbbf379d478f2067550a25469" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/3a3c2f197ad0846ac6413225fc78868ba1c61434", - "reference": "3a3c2f197ad0846ac6413225fc78868ba1c61434", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/68d4be4fe90f4eccbbf379d478f2067550a25469", + "reference": "68d4be4fe90f4eccbbf379d478f2067550a25469", "shasum": "" }, "require": { - "php": ">=7.1.3" - }, - "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "php": ">=7.1.3", + "symfony/security-core": "^3.4.22|^4.2.3|^5.0", + "symfony/security-http": "^4.4.1" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "psr/log": "~1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "psr/log": "^1|^2|^3" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Routing\\": "" + "Symfony\\Component\\Security\\Guard\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2933,16 +3229,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Maps an HTTP request to a set of configuration variables", + "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.25" + "source": "https://github.com/symfony/security-guard/tree/v4.4.27" }, "funding": [ { @@ -2958,70 +3248,50 @@ "type": "tidelift" } ], - "time": "2021-05-26T17:39:37+00:00" + "time": "2021-07-18T14:08:08+00:00" }, { - "name": "symfony/security", - "version": "v4.4.26", + "name": "symfony/security-http", + "version": "v4.4.30", "source": { "type": "git", - "url": "https://github.com/symfony/security.git", - "reference": "64b34827d764ef3cd2c86f3f6a3c56742efbfde5" + "url": "https://github.com/symfony/security-http.git", + "reference": "ebbf7f1c871c1c3c1d54738d0e0f3ae7815a559b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security/zipball/64b34827d764ef3cd2c86f3f6a3c56742efbfde5", - "reference": "64b34827d764ef3cd2c86f3f6a3c56742efbfde5", + "url": "https://api.github.com/repos/symfony/security-http/zipball/ebbf7f1c871c1c3c1d54738d0e0f3ae7815a559b", + "reference": "ebbf7f1c871c1c3c1d54738d0e0f3ae7815a559b", "shasum": "" }, "require": { "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1|^2", "symfony/http-foundation": "^3.4.40|^4.4.7|^5.0.7", "symfony/http-kernel": "^4.4", + "symfony/polyfill-php80": "^1.16", "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2" + "symfony/security-core": "^4.4.8" }, "conflict": { "symfony/event-dispatcher": ">=5", - "symfony/ldap": "<4.4" - }, - "replace": { - "symfony/security-core": "self.version", - "symfony/security-csrf": "self.version", - "symfony/security-guard": "self.version", - "symfony/security-http": "self.version" + "symfony/security-csrf": "<3.4.11|~4.0,<4.0.11" }, "require-dev": { - "psr/container": "^1.0|^2.0", - "psr/log": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/ldap": "^4.4|^5.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-icu": "~1.0", + "psr/log": "^1|^2|^3", "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/validator": "^3.4.31|^4.3.4|^5.0" + "symfony/security-csrf": "^3.4.11|^4.0.11|^5.0" }, "suggest": { - "psr/container-implementation": "To instantiate the Security class", - "symfony/expression-language": "For using the expression voter", - "symfony/form": "", - "symfony/ldap": "For using the LDAP user and authentication providers", "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", - "symfony/validator": "For using the user password constraint" + "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Security\\": "" + "Symfony\\Component\\Security\\Http\\": "" }, "exclude-from-classmap": [ - "/Core/Tests/", - "/Csrf/Tests/", - "/Guard/Tests/", - "/Http/Tests/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3038,10 +3308,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a complete security system for your web application", + "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security/tree/v4.4.26" + "source": "https://github.com/symfony/security-http/tree/v4.4.30" }, "funding": [ { @@ -3057,7 +3327,7 @@ "type": "tidelift" } ], - "time": "2021-06-23T21:43:12+00:00" + "time": "2021-08-18T09:30:30+00:00" }, { "name": "symfony/service-contracts", @@ -3140,16 +3410,16 @@ }, { "name": "symfony/string", - "version": "v5.3.3", + "version": "v5.3.10", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1" + "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", - "reference": "bd53358e3eccec6a670b5f33ab680d8dbe1d4ae1", + "url": "https://api.github.com/repos/symfony/string/zipball/d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", + "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", "shasum": "" }, "require": { @@ -3203,7 +3473,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.3" + "source": "https://github.com/symfony/string/tree/v5.3.10" }, "funding": [ { @@ -3219,26 +3489,26 @@ "type": "tidelift" } ], - "time": "2021-06-27T11:44:38+00:00" + "time": "2021-10-27T18:21:46+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.3.3", + "version": "v5.3.10", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "46aa709affb9ad3355bd7a810f9662d71025c384" + "reference": "875432adb5f5570fff21036fd22aee244636b7d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/46aa709affb9ad3355bd7a810f9662d71025c384", - "reference": "46aa709affb9ad3355bd7a810f9662d71025c384", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/875432adb5f5570fff21036fd22aee244636b7d1", + "reference": "875432adb5f5570fff21036fd22aee244636b7d1", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "conflict": { "phpunit/phpunit": "<5.4.3", @@ -3291,7 +3561,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.3.3" + "source": "https://github.com/symfony/var-dumper/tree/v5.3.10" }, "funding": [ { @@ -3307,20 +3577,20 @@ "type": "tidelift" } ], - "time": "2021-06-24T08:13:00+00:00" + "time": "2021-10-26T09:30:15+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.26", + "version": "v4.4.29", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8" + "reference": "3abcc4db06d4e776825eaa3ed8ad924d5bc7432a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8", - "reference": "e096ef4b4c4c9a2f72c2ac660f54352cd31c60f8", + "url": "https://api.github.com/repos/symfony/yaml/zipball/3abcc4db06d4e776825eaa3ed8ad924d5bc7432a", + "reference": "3abcc4db06d4e776825eaa3ed8ad924d5bc7432a", "shasum": "" }, "require": { @@ -3362,7 +3632,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.26" + "source": "https://github.com/symfony/yaml/tree/v4.4.29" }, "funding": [ { @@ -3378,7 +3648,7 @@ "type": "tidelift" } ], - "time": "2021-06-23T19:06:53+00:00" + "time": "2021-07-27T16:19:30+00:00" } ], "packages-dev": [ @@ -3453,16 +3723,16 @@ }, { "name": "mikey179/vfsstream", - "version": "v1.6.8", + "version": "v1.6.10", "source": { "type": "git", "url": "https://github.com/bovigo/vfsStream.git", - "reference": "231c73783ebb7dd9ec77916c10037eff5a2b6efe" + "reference": "250c0825537d501e327df879fb3d4cd751933b85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/231c73783ebb7dd9ec77916c10037eff5a2b6efe", - "reference": "231c73783ebb7dd9ec77916c10037eff5a2b6efe", + "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/250c0825537d501e327df879fb3d4cd751933b85", + "reference": "250c0825537d501e327df879fb3d4cd751933b85", "shasum": "" }, "require": { @@ -3500,7 +3770,7 @@ "source": "https://github.com/bovigo/vfsStream/tree/master", "wiki": "https://github.com/bovigo/vfsStream/wiki" }, - "time": "2019-10-30T15:31:00+00:00" + "time": "2021-09-25T08:05:01+00:00" }, { "name": "myclabs/deep-copy", @@ -3562,16 +3832,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.11.0", + "version": "v4.13.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94" + "reference": "50953a2691a922aa1769461637869a0a2faa3f53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/fe14cf3672a149364fb66dfe11bf6549af899f94", - "reference": "fe14cf3672a149364fb66dfe11bf6549af899f94", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/50953a2691a922aa1769461637869a0a2faa3f53", + "reference": "50953a2691a922aa1769461637869a0a2faa3f53", "shasum": "" }, "require": { @@ -3612,22 +3882,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.11.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.0" }, - "time": "2021-07-03T13:36:55+00:00" + "time": "2021-09-20T12:20:58+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.1", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { @@ -3672,9 +3942,9 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "time": "2020-06-27T14:33:11+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", @@ -3782,16 +4052,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { @@ -3802,7 +4072,8 @@ "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -3832,22 +4103,22 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" }, - "time": "2020-09-03T19:13:55+00:00" + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.4.0", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/a12f7e301eb7258bb68acd89d4aefa05c2906cae", + "reference": "a12f7e301eb7258bb68acd89d4aefa05c2906cae", "shasum": "" }, "require": { @@ -3855,7 +4126,8 @@ "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "*" + "ext-tokenizer": "*", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -3881,39 +4153,39 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.1" }, - "time": "2020-09-17T18:55:26+00:00" + "time": "2021-10-02T14:08:47+00:00" }, { "name": "phpspec/prophecy", - "version": "1.13.0", + "version": "1.14.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" + "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", "shasum": "" }, "require": { "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.1", + "php": "^7.2 || ~8.0, <8.2", "phpdocumentor/reflection-docblock": "^5.2", "sebastian/comparator": "^3.0 || ^4.0", "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { - "phpspec/phpspec": "^6.0", + "phpspec/phpspec": "^6.0 || ^7.0", "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -3948,9 +4220,9 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.13.0" + "source": "https://github.com/phpspec/prophecy/tree/1.14.0" }, - "time": "2021-03-17T13:42:18+00:00" + "time": "2021-09-10T09:02:12+00:00" }, { "name": "phpspec/prophecy-phpunit", @@ -4006,23 +4278,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.6", + "version": "9.2.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" + "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d4c798ed8d51506800b441f7a13ecb0f76f12218", + "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", + "nikic/php-parser": "^4.12.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -4071,7 +4343,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.7" }, "funding": [ { @@ -4079,7 +4351,7 @@ "type": "github" } ], - "time": "2021-03-28T07:26:59+00:00" + "time": "2021-09-17T05:39:03+00:00" }, { "name": "phpunit/php-file-iterator", @@ -4324,16 +4596,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.6", + "version": "9.5.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb" + "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb", - "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c814a05837f2edb0d1471d6e3f4ab3501ca3899a", + "reference": "c814a05837f2edb0d1471d6e3f4ab3501ca3899a", "shasum": "" }, "require": { @@ -4345,11 +4617,11 @@ "ext-xml": "*", "ext-xmlwriter": "*", "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.1", + "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-code-coverage": "^9.2.7", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", @@ -4411,7 +4683,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.6" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.10" }, "funding": [ { @@ -4423,7 +4695,7 @@ "type": "github" } ], - "time": "2021-06-23T05:14:38+00:00" + "time": "2021-09-25T07:38:51+00:00" }, { "name": "sebastian/cli-parser", @@ -5452,16 +5724,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.0", + "version": "3.6.1", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" + "reference": "f268ca40d54617c6e06757f83f699775c9b3ff2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/f268ca40d54617c6e06757f83f699775c9b3ff2e", + "reference": "f268ca40d54617c6e06757f83f699775c9b3ff2e", "shasum": "" }, "require": { @@ -5504,20 +5776,102 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-04-09T00:54:41+00:00" + "time": "2021-10-11T04:00:11+00:00" + }, + { + "name": "symfony/phpunit-bridge", + "version": "v4.4.33", + "source": { + "type": "git", + "url": "https://github.com/symfony/phpunit-bridge.git", + "reference": "87aa6bd620145070f148fe79d79e03d710bbe3a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/87aa6bd620145070f148fe79d79e03d710bbe3a9", + "reference": "87aa6bd620145070f148fe79d79e03d710bbe3a9", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0|9.1.2" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0" + }, + "suggest": { + "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" + }, + "bin": [ + "bin/simple-phpunit" + ], + "type": "symfony-bridge", + "extra": { + "thanks": { + "name": "phpunit/phpunit", + "url": "https://github.com/sebastianbergmann/phpunit" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Bridge\\PhpUnit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides utilities for PHPUnit, especially user deprecation notices management", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/phpunit-bridge/tree/v4.4.33" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-28T13:06:20+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "75a63c33a8577608444246075ea0af0d052e452a" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", - "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { @@ -5546,7 +5900,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/master" + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" }, "funding": [ { @@ -5554,7 +5908,7 @@ "type": "github" } ], - "time": "2020-07-12T23:59:07+00:00" + "time": "2021-07-28T10:34:58+00:00" }, { "name": "webmozart/assert", @@ -5617,12 +5971,10 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": { - "islandora/chullo": 20 - }, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.1.0" } diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 67a52f9..d4aa25e 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,20 +1,49 @@ - - + + + + + + + + + + + + + - - tests + + Tests - - - src/ + + + + . + - tests/ + Tests + vendor - - - - - + + + + + + + + + + + diff --git a/src/Provider/IslandoraServiceProvider.php b/src/Provider/IslandoraServiceProvider.php deleted file mode 100644 index 4ad871a..0000000 --- a/src/Provider/IslandoraServiceProvider.php +++ /dev/null @@ -1,94 +0,0 @@ -register(new MonologServiceProvider()); - $container->register(new ServiceControllerServiceProvider()); - $container->register(new SecurityServiceProvider()); - $container->register(new DoctrineServiceProvider()); - - // Configure external services - $container['monolog.logfile'] = function ($container) { - return strtolower($container['crayfish.log.level']) == 'none' ? null : $container['crayfish.log.file']; - }; - $container['monolog.level'] = function ($container) { - return $container['crayfish.log.level']; - }; - - $container['security.firewalls'] = function ($container) { - if ($container['crayfish.syn.enable']) { - return [ - 'default' => [ - 'stateless' => true, - 'anonymous' => false, - 'guard' => [ - 'authenticators' => [ - 'crayfish.syn.jwt_authentication' - ], - ], - ], - ]; - } else { - return []; - } - }; - - // Register our services - $container['crayfish.cmd_execute_service'] = function ($container) { - return new CmdExecuteService( - $container['monolog']->withName('crayfish.cmd_execute_service') - ); - }; - - $container['crayfish.apix_middleware'] = function ($container) { - return new ApixMiddleware( - FedoraApi::create($container['crayfish.fedora_resource.base_url']), - $container['monolog']->withName('crayfish.apix_middleware') - ); - }; - - $container['crayfish.syn.settings_parser'] = function ($container) { - if (file_exists($container['crayfish.syn.config'])) { - $xml = file_get_contents($container['crayfish.syn.config']); - } else { - $xml = ''; - $container['monolog'] - ->error("Securty configuration not found. ${container['crayfish.syn.config']}"); - } - - return new SettingsParser( - $xml, - $container['monolog']->withName('crayfish.syn.settings_parser') - ); - }; - - $container['crayfish.syn.jwt_authentication'] = function ($app) { - return new JwtAuthenticator( - $app['crayfish.syn.settings_parser'], - new JwtFactory(), - $app['monolog']->withName('crayfish.syn.jwt_authentication') - ); - }; - } -} diff --git a/src/Provider/YamlConfigServiceProvider.php b/src/Provider/YamlConfigServiceProvider.php deleted file mode 100644 index b162ad3..0000000 --- a/src/Provider/YamlConfigServiceProvider.php +++ /dev/null @@ -1,61 +0,0 @@ -config = $config; - $this->basename = $basename; - } - - protected function getName($name, $key) - { - return "$name.$key"; - } - - protected function isAssocArray($array) - { - if (!is_array($array)) { - return false; - } - - if (array() === $array) { - return false; - } - - return array_keys($array) !== range(0, count($array) - 1); - } - - protected function parse($container, $array, $name) - { - foreach ($array as $key => $value) { - if ($this->isAssocArray($value)) { - $this->parse($container, $value, $this->getName($name, $key)); - } else { - $container[$this->getName($name, $key)] = $value; - } - } - } - - /** - * @inheritDoc - */ - public function register(Container $container) - { - if (!file_exists($this->config)) { - throw new InvalidArgumentException("File does not exist!"); - } - $data = Yaml::parse(file_get_contents($this->config)); - $this->parse($container, $data, $this->basename); - } -} diff --git a/tests/Provider/IslandoraServiceProviderTest.php b/tests/Provider/IslandoraServiceProviderTest.php deleted file mode 100644 index 7b7480c..0000000 --- a/tests/Provider/IslandoraServiceProviderTest.php +++ /dev/null @@ -1,71 +0,0 @@ -register($container); - $this->container = $container; - } - - public function testMonolog() - { - $this->container['crayfish.log.file'] = 'test'; - $this->container['crayfish.log.level'] = 'debug'; - $this->assertInstanceOf(Logger::class, $this->container['monolog']); - } - - public function testSecurityEnable() - { - $this->container['crayfish.syn.enable'] = true; - $this->assertArrayHasKey('default', $this->container['security.firewalls']); - } - - public function testSecurityDisable() - { - $this->container['crayfish.syn.enable'] = false; - $this->assertEquals([], $this->container['security.firewalls']); - } - - public function testCmdExecute() - { - // Uses log - $this->container['crayfish.log.level'] = 'none'; - $this->assertInstanceOf(CmdExecuteService::class, $this->container['crayfish.cmd_execute_service']); - } - - public function testApixMiddleware() - { - $this->container['crayfish.log.level'] = 'none'; - $this->container['crayfish.fedora_resource.base_url'] = 'http://localhost:8080/fcrepo/rest'; - $this->assertInstanceOf(ApixMiddleware::class, $this->container['crayfish.apix_middleware']); - } - - public function testSyn() - { - // Uses log - $this->container['crayfish.log.level'] = 'none'; - - // Syn variables - $this->container['crayfish.syn.config'] = ''; - - $this->assertInstanceOf(SettingsParser::class, $this->container['crayfish.syn.settings_parser']); - $this->assertInstanceOf(JwtAuthenticator::class, $this->container['crayfish.syn.jwt_authentication']); - } -} diff --git a/tests/Provider/YamlConfigServiceProviderTest.php b/tests/Provider/YamlConfigServiceProviderTest.php deleted file mode 100644 index 999f81e..0000000 --- a/tests/Provider/YamlConfigServiceProviderTest.php +++ /dev/null @@ -1,44 +0,0 @@ -url(); - $file = $dir . DIRECTORY_SEPARATOR . "test_config.yaml"; - $yaml = <<register($container); - $this->assertEquals([1, 2, 3], $container['crayfish.test.this']); - $this->assertEquals('wowza', $container['crayfish.test.that']); - $this->assertEquals('bar', $container['crayfish.another.foo']); - } - - public function testYamlNoFile() - { - $this->expectException(InvalidArgumentException::class); - $parser = new YamlConfigServiceProvider('/does/not/exist'); - $container = new Container(); - $parser->register($container); - } -}