From 86301e627b62431f4176aade675c98aeba68079e Mon Sep 17 00:00:00 2001 From: Sriram Venkatesh Date: Fri, 29 Nov 2013 16:44:22 +1300 Subject: [PATCH] NEW STEP: Pages editable by and renamed manage page permissions feature file --- .../features/bootstrap/FeatureContext.php | 1 - .../Cms/Test/Behaviour/FixtureContext.php | 35 +++++++++++++++---- ...eature => manage-page-permissions.feature} | 14 ++++---- 3 files changed, 34 insertions(+), 16 deletions(-) rename tests/behat/features/{manage-page-permisions.feature => manage-page-permissions.feature} (84%) diff --git a/tests/behat/features/bootstrap/FeatureContext.php b/tests/behat/features/bootstrap/FeatureContext.php index 579ea3bd..371d0986 100644 --- a/tests/behat/features/bootstrap/FeatureContext.php +++ b/tests/behat/features/bootstrap/FeatureContext.php @@ -47,5 +47,4 @@ class FeatureContext extends \SilverStripe\Framework\Test\Behaviour\FeatureConte } } - } diff --git a/tests/behat/features/bootstrap/SilverStripe/Cms/Test/Behaviour/FixtureContext.php b/tests/behat/features/bootstrap/SilverStripe/Cms/Test/Behaviour/FixtureContext.php index 7c2ac887..207d4339 100644 --- a/tests/behat/features/bootstrap/SilverStripe/Cms/Test/Behaviour/FixtureContext.php +++ b/tests/behat/features/bootstrap/SilverStripe/Cms/Test/Behaviour/FixtureContext.php @@ -21,7 +21,7 @@ require_once 'PHPUnit/Framework/Assert/Functions.php'; */ class FixtureContext extends \SilverStripe\BehatExtension\Context\FixtureContext { - /** + /** * Find or create a redirector page and link to another existing page. * Example: Given a "page" "My Redirect" which redirects to a "page" "Page 1" * @@ -30,13 +30,13 @@ class FixtureContext extends \SilverStripe\BehatExtension\Context\FixtureContext public function stepCreateRedirectorPage($type, $id, $targetType, $targetId) { $class = 'RedirectorPage'; $targetClass = $this->convertTypeToClass($targetType); - + $targetObj = $this->fixtureFactory->get($targetClass, $targetId); - if(!$targetObj) $targetObj = $this->fixtureFactory->get($targetClass, $targetId); - + if (!$targetObj) $targetObj = $this->fixtureFactory->get($targetClass, $targetId); + $fields = array('LinkToID' => $targetObj->ID); $obj = $this->fixtureFactory->get($class, $id); - if($obj) { + if ($obj) { $obj->update($fields); } else { $obj = $this->fixtureFactory->createObject($class, $id, $fields); @@ -44,5 +44,26 @@ class FixtureContext extends \SilverStripe\BehatExtension\Context\FixtureContext $obj->write(); $obj->publish('Stage', 'Live'); } - -} \ No newline at end of file + + /** + * + * Check if the user can edit a page + * + * Example: Then pages should be editable by "Admin" + * Then pages should not be editable by "Admin" + * + * @Then /^pages should( not? |\s*)be editable by "([^"]*)"$/ + */ + public function pagesShouldBeEditableBy($negative, $member){ + $edit = '"/admin/pages/edit"'; + $editable = 'I should'.$negative.'see an edit page form'; + + return array( + new Step\Given('I am not logged in'), + new Step\Given('I am logged in with "'.$member.'" permissions'), + new Step\Given('I go to '.$edit), + new Step\Given($editable), + new Step\Then('I am on the homepage') + ); + } +} diff --git a/tests/behat/features/manage-page-permisions.feature b/tests/behat/features/manage-page-permissions.feature similarity index 84% rename from tests/behat/features/manage-page-permisions.feature rename to tests/behat/features/manage-page-permissions.feature index f751f3c7..4fada427 100644 --- a/tests/behat/features/manage-page-permisions.feature +++ b/tests/behat/features/manage-page-permissions.feature @@ -43,18 +43,16 @@ Scenario: I can limit global view permissions to certain groups And I go to the homepage Then I should see "Welcome" -@todo Scenario: I can limit global edit permissions to logged-in users - Given I select "Logged-in users" in "Who can edit pages on this site?" input group + Given I select "Anyone who can log-in to the CMS" from "Who can edit pages on this site?" input group And I press the "Save" button - Then pages should be editable by "Content Authors" - And pages should be editable by "Administrators" + Then pages should be editable by "AUTHOR" + And pages should be editable by "ADMIN" -@todo Scenario: I can limit global edit permissions to certain groups Given I select "Only these people (choose from list)" from "Who can edit pages on this site?" input group - And I select "Administrators" from "Viewer Groups" + And I select "ADMIN group" from "Viewer Groups" And I press the "Save" button - Then pages should not be editable by "Content Authors" - But pages should be editable by "Administrators" + Then pages should not be editable by "AUTHOR" + But pages should be editable by "ADMIN"