public function testSkip()
 {
     $tasks = [];
     $taskBuilder = new TestTaskBuilder();
     $tasks[] = $taskBuilder->setPriority(10)->setMandatory(false)->setName('Task 1')->setTarget(['', ['']])->setTaskRoutes(['a', 'b'])->build();
     $tasks[] = $taskBuilder->setPriority(50)->setMandatory(false)->setName('Task 2')->setTarget(['', ['']])->setTaskRoutes(['a', 'b'])->build();
     $tasks[] = $taskBuilder->setPriority(70)->setMandatory(false)->setName('Task 3')->setTarget(['', ['']])->setTaskRoutes(['a', 'b'])->setSkipRoute('skip')->build();
     $task = $this->tasksManager->getNextTask($tasks, 'skip');
     $this->assertEquals(50, $task->getPriority());
 }
 private function checkTasks(GetResponseEvent $event, EventDispatcherInterface $dispatcher)
 {
     $tasksEvent = new GetTasksEvent($event->getRequest());
     $dispatcher->dispatch(LoginCidadaoCoreEvents::GET_TASKS, $tasksEvent);
     $routeName = $event->getRequest()->get('_route');
     $tasks = $tasksEvent->getTasks();
     $task = $this->tasksManager->getNextTask($tasks, $routeName);
     if (!$task instanceof Task) {
         return false;
     }
     if ($this->tasksManager->checkTaskSkipped($task)) {
         return false;
     }
     $target = $task->getTarget();
     if ($task instanceof MigratePasswordEncoderTask) {
         $this->session->set('force_password_change', true);
     }
     // If the user is not trying to access one of the task's routes, redirect to the default route
     if (false === $task->isTaskRoute($routeName)) {
         $this->intentManager->setIntent($event->getRequest(), false);
         $this->redirectRoute($target[0], $target[1]);
     }
     return true;
 }