Loading README.md +4 −0 Original line number Diff line number Diff line Loading @@ -77,6 +77,10 @@ $user_manager = \Drupal::service('cas_mock_server.user_manager'); $users = $user_manager->addUser($user); ``` ### Simulate a ticket validation failure Pass `validation_should_fail=1` as query parameter to the CAS URL, e.g `/cas?validation_should_fail=1`. Drush integration ----------------- Loading src/Controller/CasMockServerController.php +10 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,16 @@ class CasMockServerController extends ControllerBase { public function validate(): Response { $request = $this->requestStack->getCurrentRequest(); // Tests may simulate ticket validation failure. if ($service_url = $request->query->get('service')) { if ($service_query_string = parse_url($service_url, PHP_URL_QUERY)) { parse_str($service_query_string, $service_query); if (array_key_exists('validation_should_fail', $service_query)) { throw new \LogicException('Caller requested validation failure'); } } } // If there is no service ticket we can not validate anything. if (!$request->query->has('ticket')) { throw new NotFoundHttpException(); Loading src/Form/LoginForm.php +5 −3 Original line number Diff line number Diff line Loading @@ -102,12 +102,14 @@ class LoginForm extends FormBase { */ public function submitForm(array &$form, FormStateInterface $form_state): void { $user = $this->getUser($form_state); $service_ticket = ServiceTicketHelper::generateServiceTicket(); $this->userManager->assignServiceTicket($user['username'], $service_ticket); $query = $this->getRequest()->query->all(); unset($query['service']); $query['ticket'] = ServiceTicketHelper::generateServiceTicket(); $this->userManager->assignServiceTicket($user['username'], $query['ticket']); // Redirect to the application but append the 'ticket' to the query string. $options = UrlHelper::parse($form_state->getValue('service_url')); $options['query']['ticket'] = $service_ticket; $options['query'] += $query; $uri = $options['path']; unset($options['path']); $form_state->setRedirectUrl(Url::fromUri($uri, $options)); Loading tests/src/Kernel/ServiceResponseAlterTest.php +0 −1 Original line number Diff line number Diff line Loading @@ -47,7 +47,6 @@ class ServiceResponseAlterTest extends KernelTestBase { protected function setUp(): void { parent::setUp(); $this->installSchema('system', ['key_value_expire']); $this->installConfig(['cas', 'cas_mock_server']); $this->userManager = $this->container->get('cas_mock_server.user_manager'); Loading tests/src/Kernel/UserManagerTest.php +0 −1 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ class UserManagerTest extends KernelTestBase { protected function setUp(): void { parent::setUp(); $this->installSchema('system', ['key_value_expire']); $this->installConfig(['cas_mock_server']); $this->userManager = $this->container->get('cas_mock_server.user_manager'); Loading Loading
README.md +4 −0 Original line number Diff line number Diff line Loading @@ -77,6 +77,10 @@ $user_manager = \Drupal::service('cas_mock_server.user_manager'); $users = $user_manager->addUser($user); ``` ### Simulate a ticket validation failure Pass `validation_should_fail=1` as query parameter to the CAS URL, e.g `/cas?validation_should_fail=1`. Drush integration ----------------- Loading
src/Controller/CasMockServerController.php +10 −0 Original line number Diff line number Diff line Loading @@ -76,6 +76,16 @@ class CasMockServerController extends ControllerBase { public function validate(): Response { $request = $this->requestStack->getCurrentRequest(); // Tests may simulate ticket validation failure. if ($service_url = $request->query->get('service')) { if ($service_query_string = parse_url($service_url, PHP_URL_QUERY)) { parse_str($service_query_string, $service_query); if (array_key_exists('validation_should_fail', $service_query)) { throw new \LogicException('Caller requested validation failure'); } } } // If there is no service ticket we can not validate anything. if (!$request->query->has('ticket')) { throw new NotFoundHttpException(); Loading
src/Form/LoginForm.php +5 −3 Original line number Diff line number Diff line Loading @@ -102,12 +102,14 @@ class LoginForm extends FormBase { */ public function submitForm(array &$form, FormStateInterface $form_state): void { $user = $this->getUser($form_state); $service_ticket = ServiceTicketHelper::generateServiceTicket(); $this->userManager->assignServiceTicket($user['username'], $service_ticket); $query = $this->getRequest()->query->all(); unset($query['service']); $query['ticket'] = ServiceTicketHelper::generateServiceTicket(); $this->userManager->assignServiceTicket($user['username'], $query['ticket']); // Redirect to the application but append the 'ticket' to the query string. $options = UrlHelper::parse($form_state->getValue('service_url')); $options['query']['ticket'] = $service_ticket; $options['query'] += $query; $uri = $options['path']; unset($options['path']); $form_state->setRedirectUrl(Url::fromUri($uri, $options)); Loading
tests/src/Kernel/ServiceResponseAlterTest.php +0 −1 Original line number Diff line number Diff line Loading @@ -47,7 +47,6 @@ class ServiceResponseAlterTest extends KernelTestBase { protected function setUp(): void { parent::setUp(); $this->installSchema('system', ['key_value_expire']); $this->installConfig(['cas', 'cas_mock_server']); $this->userManager = $this->container->get('cas_mock_server.user_manager'); Loading
tests/src/Kernel/UserManagerTest.php +0 −1 Original line number Diff line number Diff line Loading @@ -32,7 +32,6 @@ class UserManagerTest extends KernelTestBase { protected function setUp(): void { parent::setUp(); $this->installSchema('system', ['key_value_expire']); $this->installConfig(['cas_mock_server']); $this->userManager = $this->container->get('cas_mock_server.user_manager'); Loading