From 8314ce6871c3e6f28c5bc374d1b73afc85f58b85 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sat, 14 Feb 2015 15:59:29 +0100 Subject: [PATCH 1/2] [ticket/13612] Run meta refresh until extension is fully enabled PHPBB3-13612 --- .../phpbb_functional_test_case.php | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php index b6769f08d0..7479221263 100644 --- a/tests/test_framework/phpbb_functional_test_case.php +++ b/tests/test_framework/phpbb_functional_test_case.php @@ -410,7 +410,26 @@ class phpbb_functional_test_case extends phpbb_test_case $form = $crawler->selectButton('Enable')->form(); $crawler = self::submit($form); $this->add_lang('acp/extensions'); - $this->assertContainsLang('EXTENSION_ENABLE_SUCCESS', $crawler->filter('div.successbox')->text()); + + $meta_refresh = $crawler->filter('meta[http-equiv="refresh"]'); + + // Wait for extension to be fully enabled + while (sizeof($meta_refresh)) + { + preg_match('#url=.+/(adm+.+)#', $meta_refresh->attr('content'), $match); + $url = $match[1]; + $crawler = self::request('POST', $url); + $meta_refresh = $crawler->filter('meta[http-equiv="refresh"]'); + } + + if (!empty($meta_refresh)) + { + $this->assertContainsLang('EXTENSIONS_ADMIN', $crawler->filter('.main > h1')->text()); + } + else + { + $this->assertContainsLang('EXTENSION_ENABLE_SUCCESS', $crawler->filter('div.successbox')->text()); + } $this->logout(); } From 27cfda74fc5085bba8d5baf36450b3f52187dce9 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Sat, 14 Feb 2015 23:32:17 +0100 Subject: [PATCH 2/2] [ticket/13612] Always display success message if extension was enabled An error will already be triggered if enable_step() is not successful. Redirecting for no obvious reason will just confuse users. PHPBB3-13612 --- phpBB/includes/acp/acp_extensions.php | 5 ----- tests/test_framework/phpbb_functional_test_case.php | 9 +-------- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/phpBB/includes/acp/acp_extensions.php b/phpBB/includes/acp/acp_extensions.php index 89fdc8b863..0c9bc0deab 100644 --- a/phpBB/includes/acp/acp_extensions.php +++ b/phpBB/includes/acp/acp_extensions.php @@ -174,11 +174,6 @@ class acp_extensions trigger_error($user->lang['EXTENSION_NOT_ENABLEABLE'] . adm_back_link($this->u_action), E_USER_WARNING); } - if ($phpbb_extension_manager->is_enabled($ext_name)) - { - redirect($this->u_action); - } - try { while ($phpbb_extension_manager->enable_step($ext_name)) diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php index 7479221263..844caa8f54 100644 --- a/tests/test_framework/phpbb_functional_test_case.php +++ b/tests/test_framework/phpbb_functional_test_case.php @@ -422,14 +422,7 @@ class phpbb_functional_test_case extends phpbb_test_case $meta_refresh = $crawler->filter('meta[http-equiv="refresh"]'); } - if (!empty($meta_refresh)) - { - $this->assertContainsLang('EXTENSIONS_ADMIN', $crawler->filter('.main > h1')->text()); - } - else - { - $this->assertContainsLang('EXTENSION_ENABLE_SUCCESS', $crawler->filter('div.successbox')->text()); - } + $this->assertContainsLang('EXTENSION_ENABLE_SUCCESS', $crawler->filter('div.successbox')->text()); $this->logout(); }