Created
December 7, 2009 04:30
-
-
Save sminnee/250613 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Index: sapphire/tests/cuke/step_definitions/db-fixture.rb | |
| =================================================================== | |
| --- sapphire/tests/cuke/step_definitions/db-fixture.rb (revision 0) | |
| +++ sapphire/tests/cuke/step_definitions/db-fixture.rb (revision 0) | |
| @@ -0,0 +1,3 @@ | |
| +# Reset database | |
| +$browser.goto $baseURL + 'dev/tests/endsession' | |
| +$browser.goto $baseURL + 'dev/tests/startsession?fixture=sapphire/tests/Bare.yml&flush=1' | |
| Index: cms/tests/cuke/login.feature | |
| =================================================================== | |
| --- cms/tests/cuke/login.feature (revision 0) | |
| +++ cms/tests/cuke/login.feature (revision 0) | |
| @@ -0,0 +1,36 @@ | |
| +Feature: Log in | |
| + As a CMS user | |
| + I want to security log into the CMS | |
| + So that I can make changes, knowing that other people can't. | |
| + | |
| + Background: | |
| + Given I visit Security/logout | |
| + | |
| + Scenario: opening admin asks user log-in | |
| + And I visit admin | |
| + Then I am sent to Security/login | |
| + | |
| + Scenario: valid login | |
| + When I fill out the log in form with user "admin" and password "password" | |
| + Then I see "Your are logged in as" | |
| + | |
| + Scenario: no password login | |
| + When I fill out the log in form with user "admin" and password "password" | |
| + Then I see "That doesn't seem to be the right e-mail address or password." | |
| + | |
| + Scenario: no user login | |
| + When I fill out the log in form with user "" and password "password" | |
| + Then I see "That doesn't seem to be the right e-mail address or password." | |
| + | |
| + Scenario: invalid login, getting right 2nd time | |
| + Given I visit admin | |
| + And I put "admin" in the "Email" field | |
| + And I put "wrongpassword" in the "Password" field | |
| + And I click the "Log in" button | |
| + Then I am sent to Security/login | |
| + And I see "That doesn't seem to be the right e-mail address or password." | |
| + Given I put "admin" in the "Email" field | |
| + And I put "password" in the "Password" field | |
| + And I click the "Log in" button | |
| + Then I am sent to admin | |
| + | |
| Index: cms/tests/cuke/logout.feature | |
| =================================================================== | |
| --- cms/tests/cuke/logout.feature (revision 0) | |
| +++ cms/tests/cuke/logout.feature (revision 0) | |
| @@ -0,0 +1,20 @@ | |
| +Feature: Log out | |
| + As a CMS user | |
| + I want to be able to log and be locked out of the CMS | |
| + So that I can know other people can't edit my site | |
| + | |
| + Scenario: Log out from CMS | |
| + Given I log into the CMS as admin | |
| + And I click the "log out" link | |
| + When I visit admin/ | |
| + Then I see "Enter your username and password to access the CMS." | |
| + When I visit admin/assets/ | |
| + Then I see "Enter your username and password to access the CMS." | |
| + When I visit admin/comments/ | |
| + Then I see "Enter your username and password to access the CMS." | |
| + When I visit admin/reports/ | |
| + Then I see "Enter your username and password to access the CMS." | |
| + When I visit admin/security/ | |
| + Then I see "Enter your username and password to access the CMS." | |
| + When I visit admin/subsites/ | |
| + Then I see "Enter your username and password to access the CMS." | |
| \ No newline at end of file | |
| Index: cms/tests/cuke/delete-page.feature | |
| =================================================================== | |
| --- cms/tests/cuke/delete-page.feature (revision 0) | |
| +++ cms/tests/cuke/delete-page.feature (revision 0) | |
| @@ -0,0 +1,40 @@ | |
| +Feature: Page deletion in the CMS | |
| + As a content author | |
| + I want to delete pages in the CMS | |
| + So that out of date content can be removed | |
| + | |
| + Scenario: User can delete a page without making any changes | |
| + Given I log into the CMS as admin | |
| + And I create a new page | |
| + And I save the page | |
| + When I delete the current page | |
| + Then there are 0 root pages with navigation label "New Page" | |
| + | |
| + Scenario: A deleted page can't be viewed | |
| + Given I create a new page | |
| + And I save the page | |
| + When I delete the current page | |
| + And I log out | |
| + Then url new-page does not exist | |
| + | |
| + Scenario: A deleted URL can be re-used | |
| + Given I log into the CMS as admin | |
| + And I create a new page | |
| + And I click on the "Metadata" tab | |
| + And the "URLSegment" field is "new-page" | |
| + And I save the page | |
| + And I delete the current page | |
| + When I create a new page | |
| + And I click on the "Metadata" tab | |
| + Then the "URLSegment" field is "new-page" | |
| + | |
| + Then delete the current page | |
| + | |
| + Scenario: A deleted page doesn't appear after re-login | |
| + Given I create a new page | |
| + And I save the page | |
| + And I delete the current page | |
| + When I log out | |
| + And I log into the CMS as admin | |
| + Then there are 0 root pages with navigation label "New Page" | |
| + | |
| \ No newline at end of file | |
| Index: cms/tests/cuke/step_definitions/general.rb | |
| =================================================================== | |
| --- cms/tests/cuke/step_definitions/general.rb (revision 0) | |
| +++ cms/tests/cuke/step_definitions/general.rb (revision 0) | |
| @@ -0,0 +1,25 @@ | |
| +## | |
| +## General rules for the SilverStripe CMS as a whole. They mostly have to do with the LeftAndMain | |
| +## interface | |
| + | |
| +Given /I click on the "([^\"]*)" tab/ do |tab| | |
| + Given "I click the \"tab-Root_Content_set_#{tab}\" link" | |
| +end | |
| + | |
| +Given /I wait for a status message/ do | |
| + Watir::Waiter::wait_until { | |
| + @browser.p(:id, 'statusMessage').exists? && @browser.p(:id, 'statusMessage').visible? | |
| + } | |
| +end | |
| + | |
| +Given /I wait for a success message/ do | |
| + # We have to wait until after messages of the form 'Saving...', to get either a good message or | |
| + # a bad message | |
| + Watir::Waiter::wait_until { | |
| + @browser.p(:id, 'statusMessage').exists? && @browser.p(:id, 'statusMessage').visible? && @browser.p(:id, 'statusMessage').class_name != "" | |
| + } | |
| + | |
| + @browser.p(:id, 'statusMessage').class_name.should == 'good' | |
| +end | |
| + | |
| + | |
| Index: cms/tests/cuke/step_definitions/log-in.rb | |
| =================================================================== | |
| --- cms/tests/cuke/step_definitions/log-in.rb (revision 0) | |
| +++ cms/tests/cuke/step_definitions/log-in.rb (revision 0) | |
| @@ -0,0 +1,25 @@ | |
| + | |
| +# Log in | |
| +Given /log in as (.*)$/ do |user| | |
| + Given "I fill out the log in form with user \"#{user}\" and password \"password\"" | |
| + And 'I see "Your are logged in as"' | |
| +end | |
| + | |
| +Given /log into the CMS as (.*)/ do |user| | |
| + Given "I log in as #{user}" | |
| + And "I visit admin/" | |
| + And "I load the root node" | |
| +end | |
| + | |
| +Given /log out$/ do | |
| + Given "I visit Security/logout" | |
| +end | |
| + | |
| +Given /fill out the log in form with user "(.*)" and password "(.*)"/ do |user, password| | |
| + Given 'I visit Security/logout' | |
| + And 'I visit Security/login?BackURL=Security/login' | |
| + And "I put \"#{user}\" in the \"Email\" field" | |
| + And "I put \"#{password}\" in the \"Password\" field" | |
| + And "I click the \"Log in\" button" | |
| +end | |
| + | |
| \ No newline at end of file | |
| Index: cms/tests/cuke/step_definitions/security.rb | |
| =================================================================== | |
| --- cms/tests/cuke/step_definitions/security.rb (revision 0) | |
| +++ cms/tests/cuke/step_definitions/security.rb (revision 0) | |
| @@ -0,0 +1,23 @@ | |
| +# Steps definitions for security | |
| + | |
| +# Fixture instantiation | |
| +Given /a "(.*)" group/ do |group| | |
| + Given 'I visit admin/security' | |
| + And 'I click the "Security Groups" link' | |
| + And 'I click the "Create" button' | |
| + And "I put \"#{group}\" in the \"Title\" field" | |
| + And 'I click the "Save" button' | |
| +end | |
| + | |
| +Given /a user called "(.*)" in the "(.*)" group/ do |user, group| | |
| + Given 'I visit admin/security' | |
| + And "I click the \"#{group} (global group)\" link" | |
| + And "I put \"#{user}\" in the \"FirstName\" field" | |
| + And "I put \"#{user}\" in the \"Email\" field" | |
| + And "I put \"password\" in the \"SetPassword\" field" | |
| + And "I click the \"Add\" button" | |
| +end | |
| + | |
| +Given /^I get a permission denied error$/ do | |
| + pending | |
| +end | |
| Index: cms/tests/cuke/step_definitions/content.rb | |
| =================================================================== | |
| --- cms/tests/cuke/step_definitions/content.rb (revision 0) | |
| +++ cms/tests/cuke/step_definitions/content.rb (revision 0) | |
| @@ -0,0 +1,92 @@ | |
| +## FIXTURE GENERATON | |
| + | |
| +Given /^the site can be edited by the "([^\"]*)" group$/i do |arg1| | |
| + pending | |
| +end | |
| + | |
| +Given /^the "([^\"]*)" page can be edited by the "([^\"]*)" group$/i do |arg1, arg2| | |
| + pending | |
| +end | |
| + | |
| +Given /a "(.*)" page called "(.*)" as a child of "(.*)"/i do |type, title, parent| | |
| + Given "I click the \"#{parent}\" link" | |
| + And 'I click the "Create" button' | |
| + And "I select \"#{type}\" from \"PageType\"" | |
| + And 'I click the "Go" button' | |
| + And 'I click the "Create" button' | |
| + And "I put \"#{title}\" in the \"Title\" field" | |
| + And "I click \"Save\"" | |
| +end | |
| + | |
| +Given /^a top\-level "(.*)" page called "(.*)"$/i do |type,title| | |
| + Given "I click the \"Site Content\" link" | |
| + And "I create a page " | |
| + And "I put \"#{title}\" in the \"Title\" field" | |
| + And "I click \"Save\"" | |
| +end | |
| + | |
| +## ACTIONS | |
| + | |
| +Given /load the "(.*)" page/i do |title| | |
| + Given "I click the \"#{title}\" link" | |
| +end | |
| + | |
| +Given /I load the "(.*)" root-level page/ do |nav| | |
| + @browser.link(:xpath, "//ul[@id='sitetree']/li/ul/li//a[.='#{nav}']").click | |
| +end | |
| + | |
| +Given /I load the root node/ do | |
| + Given 'I click the "admin/0" link' | |
| +end | |
| + | |
| +Given /create a new page$/i do | |
| + Given "I create a new page using template \"Page\"" | |
| +end | |
| + | |
| +Given /create a new page using template \"(.*)\"/i do |type| | |
| + Given 'I load the root node (ajax)' | |
| + And 'I click the "Create" button' | |
| + And "I select \"#{type}\" from \"PageType\"" | |
| + And 'I click the "Go" button (ajax)' | |
| + And 'I click the "Create" button' | |
| +end | |
| + | |
| +Given /save the page$/i do | |
| + Given 'I click the "Form_EditForm_action_save" button (ajax)' | |
| +end | |
| + | |
| +Given /delete the current page$/i do | |
| + Given 'I click the "Delete from the draft site" button' | |
| +end | |
| + | |
| + | |
| +## ASSERTIONS | |
| + | |
| +Given /There are ([0-9]+) root pages with navigation label "(.*)"/i do |count, nav| | |
| + @browser.elements_by_xpath("//ul[@id='sitetree']/li/ul/li//a[.='#{nav}']").count.should == count.to_i | |
| +end | |
| + | |
| +Given /The "(.*)" page does not exist/i do | page| | |
| + @browser.link(:title, title).should empty? | |
| + #|''get url''|@{root_url}PAGE| | |
| + #|''title''|'''is not'''|PAGE| | |
| +end | |
| + | |
| + | |
| +## Current Page | |
| + | |
| +Given /^The (.*) of the current page is "([^\"]*)"$/i do |arg1| | |
| + pending | |
| +end | |
| + | |
| +Then /^The current page is editable$/i do | |
| + pending | |
| +end | |
| + | |
| +Then /^The current page is read-only$/i do | |
| + pending | |
| +end | |
| + | |
| +Then /^The current page is at the top\-level$/i do | |
| + pending | |
| +end | |
| Index: cms/tests/cuke/step_definitions/front-end.rb | |
| =================================================================== | |
| --- cms/tests/cuke/step_definitions/front-end.rb (revision 0) | |
| +++ cms/tests/cuke/step_definitions/front-end.rb (revision 0) | |
| @@ -0,0 +1,21 @@ | |
| +## | |
| +## Step definitions for testing the front-end site | |
| +## | |
| + | |
| + | |
| +Given /I go to the draft site/ do | |
| + pending | |
| + Given 'I click the "viewStageSite" link' | |
| +# |''element''|//a[@id="viewStageSite"]|''exists''| | |
| +# |''checking timeout''|@{fast_checking_timeout}| | |
| +# |''optionally''|''element''|//a[@id="viewStageSite"][@style=""]|''exists''| | |
| +# |''checking timeout''|@{checking_timeout}| | |
| +# |''click''|viewStageSite| | |
| +end | |
| + | |
| +Given /I close window and go back to clean state/ do | |
| +# |''close''| | |
| +# |''select initial window''| | |
| +# |default frame| | |
| +# |''go to root node''| | |
| +end | |
| Index: cms/tests/cuke/create-page.feature | |
| =================================================================== | |
| --- cms/tests/cuke/create-page.feature (revision 0) | |
| +++ cms/tests/cuke/create-page.feature (revision 0) | |
| @@ -0,0 +1,115 @@ | |
| +Feature: Page creation in the CMS | |
| + As a content author | |
| + I want to create a basic text page at the root level and save it | |
| + So that our website can be kept up to date | |
| + | |
| + Scenario: An initial change to page name modifies key fields | |
| + Given I log into the CMS as admin | |
| + And I create a new page | |
| + When I put "Change Name" in the "Page name" field | |
| + And I click on the "Metadata" tab | |
| + Then the "URLSegment" field is "change-name" | |
| + And the "MetaTitle" field is "Change Name" | |
| + When I click on the "Main" tab | |
| + Then the "Navigation label" field is "Change Name" | |
| + | |
| + Scenario: Every subsequent change does not change the key fields | |
| + Given I save the page | |
| + And I cancel pop-ups | |
| + When I put "Change Again" in the "Page name" field | |
| + And I click on the "Metadata" tab | |
| + Then the "URLSegment" field is "change-name" | |
| + And the "MetaTitle" field is "Change Name" | |
| + When I click on the "Main" tab | |
| + Then the "Navigation label" field is "Change Name" | |
| + Then I delete the current page | |
| + | |
| + Scenario: I can populate all fields | |
| + And I create a new page | |
| + And I set "Page name" to "Populate name" | |
| + And I set "Navigation label" to "Populate label" | |
| + And I click on the "Metadata" tab | |
| + And I set "URLSegment" to "populate-url-segment" | |
| + And I set "MetaTitle" to "Populate MetaTitle" | |
| + And I set "Description" to "Populate Description" | |
| + And I set "Keywords" to "Populate Keywords" | |
| + And I set "Custom Meta Tags" to "Populate Custom Meta Tags" | |
| + And I click on the "Main" tab | |
| + And I save the page | |
| + When I load the "Populate label" page | |
| + Then the "Page name" field is "Populate name" | |
| + And the "Navigation label" field is "Populate label" | |
| + When I click on the "Metadata" tab | |
| + Then the "URLSegment" field is "populate-url-segment" | |
| + And the "MetaTitle" field is "Populate MetaTitle" | |
| + And the "Description" field is "Populate Description" | |
| + And the "Custom Meta Tags" field is "Populate Custom Meta Tags" | |
| + And I click on the "Main" tab | |
| + Then I delete the current page | |
| + | |
| + Scenario: I can create 2 identical pages | |
| + When I create a new page | |
| + And I create a new page | |
| + Then there are 2 root pages with navigation label "New Page" | |
| + Then I delete the current page | |
| + And I load the "New Page" root-level page | |
| + Then I delete the current page | |
| + | |
| + Scenario: Each change to page name changes the URL | |
| + When I create a new page | |
| + And I set "Page name" to "First Change" | |
| + And I click on the "Metadata" tab | |
| + Then the "URLSegment" field is "first-change" | |
| + | |
| + When I confirm pop-ups | |
| + And I click on the "Main" tab | |
| + And I set "Page name" to "Second Change" | |
| + And I click on the "Metadata" tab | |
| + Then the "URLSegment" field is "second-change" | |
| + | |
| + When I cancel pop-ups | |
| + And I click on the "Main" tab | |
| + And I set "Page name" to "Third Change" | |
| + And I click on the "Metadata" tab | |
| + Then the "URLSegment" field is "second-change" | |
| + And I click on the "Main" tab | |
| + | |
| + Then I delete the current page | |
| + | |
| + Scenario: Changes aren't saved if I cancel the warning | |
| + Given I create a new page | |
| + And I set "Page name" to "Change name" | |
| + When I confirm pop-ups to ignore the warning that their is unsaved content | |
| + And I load the "New Page" page | |
| + Then the "Page name" field is "New Page" | |
| + | |
| + Then I delete the current page | |
| + | |
| + Scenario: Page name and navigation label default to new page | |
| + Given I create a new page | |
| + Then the "Page name" field is "New Page" | |
| + And the "Navigation label" field is "New Page" | |
| + | |
| + When I click on the "Metadata" tab | |
| + Then the "URLSegment" field is "new-page" | |
| + And the "MetaTitle" field is blank | |
| + And the "Description" field is blank | |
| + And the "Keywords" field is blank | |
| + And the "Custom Meta Tags" field is blank | |
| + And I click on the "Main" tab | |
| + | |
| + Then I delete the current page | |
| + | |
| + Scenario: The navigation label is displayed in the site tree | |
| + Given I create a new page | |
| + And I set "Navigation label" to "New Label" | |
| + And I save the page | |
| + When I load the "New Label" page | |
| + Then the "Navigation label" field is "New Label" | |
| + | |
| + Scenario: If the navigation label is blanked out, it takes the value in the Page Name field | |
| + Given I set "Page name" to "Page Title" | |
| + When I set "Navigation label" to "" | |
| + And I save the page | |
| + And I load the "Page Title" page | |
| + Then the "Navigation label" field is "Page Title" | |
| \ No newline at end of file | |
| Index: cms/tests/test_windmill/__init__.py | |
| =================================================================== | |
| --- cms/tests/test_windmill/__init__.py (revision 94431) | |
| +++ cms/tests/test_windmill/__init__.py (working copy) | |
| @@ -1 +0,0 @@ | |
| -from windmill.authoring import setup_module, teardown_module, enable_collector | |
| Index: cms/tests/test_windmill/test_admin/__init__.py | |
| =================================================================== | |
| --- cms/tests/test_windmill/test_admin/__init__.py (revision 94431) | |
| +++ cms/tests/test_windmill/test_admin/__init__.py (working copy) | |
| @@ -1,24 +0,0 @@ | |
| -from windmill.authoring import setup_module, teardown_module, enable_collector, WindmillTestClient | |
| -import windmill | |
| - | |
| -def setup_module(module): | |
| - client = WindmillTestClient(__name__) | |
| - | |
| - client.type(text=u'cms/tests/CMSMainTest.yml', id=u'fixture-file') | |
| - client.click(id=u'start-session') | |
| - | |
| - client.waits.forPageLoad(timeout=u'20000') | |
| - client.click(id=u'admin-link') | |
| - client.waits.forPageLoad(timeout=u'20000') | |
| - | |
| - client.type(text=u'[email protected]', id=u'MemberLoginForm_LoginForm_Email') | |
| - client.type(text=u'ZXXlkwecxz2390232233', id=u'MemberLoginForm_LoginForm_Password') | |
| - client.click(id=u'MemberLoginForm_LoginForm_action_dologin') | |
| - client.waits.forPageLoad(timeout=u'300000') | |
| - | |
| -def teardown_module(module): | |
| - client = WindmillTestClient(__name__) | |
| - | |
| - client.open(url=windmill.settings['TEST_URL'], id=u'fixture-file') | |
| - client.click(id=u'end-session') | |
| - | |
| \ No newline at end of file | |
| Index: cms/tests/test_windmill/test_admin/test_CreateGroup.py | |
| =================================================================== | |
| --- cms/tests/test_windmill/test_admin/test_CreateGroup.py (revision 94431) | |
| +++ cms/tests/test_windmill/test_admin/test_CreateGroup.py (working copy) | |
| @@ -1,26 +0,0 @@ | |
| -# Generated by the windmill services transformer | |
| -from windmill.authoring import WindmillTestClient | |
| - | |
| -def test(): | |
| - client = WindmillTestClient(__name__) | |
| - | |
| - client.click(link=u'Security') | |
| - client.waits.forPageLoad(timeout=u'20000') | |
| - client.click(xpath=u"/html/body/div[@id='left']/div[@id='treepanes']/ul[@id='TreeActions']/li[@id='addgroup']/button") | |
| - client.waits.sleep(milliseconds=u'5000') | |
| - | |
| - client.asserts.assertText(validator=u'New Group', id=u'record-2') | |
| - client.asserts.assertValue(validator=u'New Group', id=u'Form_EditForm_Title') | |
| - | |
| - client.click(id=u'Form_EditForm_Title') | |
| - client.type(text=u'Test Group', id=u'Form_EditForm_Title') | |
| - client.click(id=u'Form_EditForm_action_save') | |
| - client.waits.sleep(milliseconds=u'5000') | |
| - | |
| - client.asserts.assertText(validator=u'Test Group', id=u'record-2') | |
| - | |
| - client.click(id=u'Form_AddRecordForm_FirstName') | |
| - client.type(text=u'Test', id=u'Form_AddRecordForm_FirstName') | |
| - client.type(text=u'Person', id=u'Form_AddRecordForm_Surname') | |
| - client.type(text=u'[email protected]', id=u'Form_AddRecordForm_Email') | |
| - client.click(id=u'Form_AddRecordForm_action_addtogroup') | |
| \ No newline at end of file |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment