From 580daceb7af750693c96a4cfd63d65b7c5a97502 Mon Sep 17 00:00:00 2001 From: Gunnar Wrobel
Date: Tue, 9 Mar 2010 18:30:04 +0100 Subject: [PATCH] Ensure that only the tasks really completed get removed from the stack. Redirect to the login services page after a confirmation post. The test runs further though it is still not complete. --- framework/LoginTasks/lib/Horde/LoginTasks.php | 6 +++-- .../LoginTasks/lib/Horde/LoginTasks/Tasklist.php | 2 +- .../test/Horde/LoginTasks/LoginTasksTest.php | 31 ++++++++++++++++++---- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/framework/LoginTasks/lib/Horde/LoginTasks.php b/framework/LoginTasks/lib/Horde/LoginTasks.php index 858132ebe..40062ccc3 100644 --- a/framework/LoginTasks/lib/Horde/LoginTasks.php +++ b/framework/LoginTasks/lib/Horde/LoginTasks.php @@ -245,8 +245,10 @@ class Horde_LoginTasks return $this->_backend->redirect($tasklist_target); } - if (!$processed && $need_display) { - $this->_tasklist->target = $url; + if ((!$processed || $confirmed) && $need_display) { + if (empty($this->_tasklist->target)) { + $this->_tasklist->target = $url; + } return $this->_backend->redirect($this->getLoginTasksUrl()); } } diff --git a/framework/LoginTasks/lib/Horde/LoginTasks/Tasklist.php b/framework/LoginTasks/lib/Horde/LoginTasks/Tasklist.php index cdd922f0d..ecdcbbca8 100644 --- a/framework/LoginTasks/lib/Horde/LoginTasks/Tasklist.php +++ b/framework/LoginTasks/lib/Horde/LoginTasks/Tasklist.php @@ -107,7 +107,7 @@ class Horde_LoginTasks_Tasklist } if ($advance) { - $this->_tasks = array_slice($this->_tasks, count($tmp) + $this->_ptr); + $this->_tasks = array_slice($this->_tasks, count($tmp)); $this->_ptr = 0; } diff --git a/framework/LoginTasks/test/Horde/LoginTasks/LoginTasksTest.php b/framework/LoginTasks/test/Horde/LoginTasks/LoginTasksTest.php index 1107e1c1c..1643c7b3c 100644 --- a/framework/LoginTasks/test/Horde/LoginTasks/LoginTasksTest.php +++ b/framework/LoginTasks/test/Horde/LoginTasks/LoginTasksTest.php @@ -422,14 +422,21 @@ class Horde_LoginTasks_LoginTasksTest extends PHPUnit_Framework_TestCase ); $tasks->runTasks(false, 'redirect'); $tasks->displayTasks(); + $this->assertContains( + 'http:///services/logintasks.php?app=test', + (string) $tasks->runTasks(true) + ); + $this->assertNull( + $tasks->runTasks(false) + ); + $tasks->displayTasks(); $this->assertEquals( - 'redirect', $tasks->runTasks(true, null) + 'redirect', $tasks->runTasks(true) ); } public function testConfirmSeriesDisplay() { - //$this->markTestIncomplete(); Horde_LoginTasks_Stub_Task::$executed = array(); $tasks = $this->_getLoginTasks( array( @@ -468,8 +475,9 @@ class Horde_LoginTasks_LoginTasksTest extends PHPUnit_Framework_TestCase ); $_POST['logintasks_confirm_0'] = true; $_POST['logintasks_confirm_1'] = true; - $this->assertNull( - $tasks->runTasks(true) + $this->assertContains( + 'http:///services/logintasks.php?app=test', + (string) $tasks->runTasks(true) ); $this->assertEquals( array( @@ -499,10 +507,23 @@ class Horde_LoginTasks_LoginTasksTest extends PHPUnit_Framework_TestCase asort($classes); $this->assertEquals( array( - 'Horde_LoginTasks_Stub_Confirm' + 'Horde_LoginTasks_Stub_Notice' ), $classes ); + $this->assertContains( + 'http:///services/logintasks.php?app=test', + (string) $tasks->runTasks(true) + ); + $this->assertEquals( + array( + 'Horde_LoginTasks_Stub_ConfirmNo', + 'Horde_LoginTasks_Stub_Confirm', + 'Horde_LoginTasks_Stub_Task', + 'Horde_LoginTasks_Stub_Notice' + ), + Horde_LoginTasks_Stub_Task::$executed + ); } private function _getLoginTasks( -- 2.11.0