78 lines
2.0 KiB
Ruby
78 lines
2.0 KiB
Ruby
Before('@site_up') do
|
|
create_site_and_admin_account
|
|
create_layout_samples
|
|
end
|
|
|
|
Before('@another_site_up') do
|
|
add_new_site
|
|
end
|
|
|
|
Before('@authenticated') do
|
|
Given %{I am an authenticated user}
|
|
end
|
|
|
|
### Authentication
|
|
|
|
Given /^I am not authenticated$/ do
|
|
visit('/admin/sign_out')
|
|
end
|
|
|
|
|
|
Given /^I am an authenticated user$/ do
|
|
Given %{I go to login}
|
|
And %{I fill in "admin_email" with "admin@locomotiveapp.org"}
|
|
And %{I fill in "admin_password" with "easyone"}
|
|
And %{I press "Log in"}
|
|
end
|
|
|
|
Then /^I am redirected to "([^\"]*)"$/ do |url|
|
|
assert [301, 302].include?(@integration_session.status), "Expected status to be 301 or 302, got #{@integration_session.status}"
|
|
location = @integration_session.headers["Location"]
|
|
assert_equal url, location
|
|
visit location
|
|
end
|
|
|
|
### Pages
|
|
|
|
|
|
Then /^I should have "(.*)" in the (.*) page (.*)$/ do |content, page_slug, slug|
|
|
page = @site.pages.where(:slug => page_slug).first
|
|
part = page.parts.where(:slug => slug).first
|
|
part.should_not be_nil
|
|
part.value.should == content
|
|
end
|
|
|
|
### Cross-domain authentication
|
|
|
|
When /^I forget to press the button on the cross-domain notice page$/ do
|
|
@admin.updated_at = 2.minutes.ago
|
|
Mongoid::Persistence::Update.new(@admin).send(:update)
|
|
end
|
|
|
|
### Common
|
|
|
|
def create_site_and_admin_account
|
|
@site = Factory(:site, :name => 'Locomotive test website', :subdomain => 'test')
|
|
@admin = Factory(:account, { :name => 'Admin', :email => 'admin@locomotiveapp.org' })
|
|
@site.memberships.build :account => @admin, :admin => true
|
|
@site.save
|
|
end
|
|
|
|
def add_new_site
|
|
@another_site = Factory.build(:site, :name => 'Locomotive test website #2', :subdomain => 'test2')
|
|
@another_site.memberships.build :account => @admin, :admin => true
|
|
@another_site.save
|
|
end
|
|
|
|
def create_layout_samples
|
|
Factory(:layout, :site => @site, :name => 'One column', :value => %{<html>
|
|
<head>
|
|
<title>My website</title>
|
|
</head>
|
|
<body>
|
|
<div id="main">{{ content_for_layout }}</div>
|
|
</body>
|
|
</html>})
|
|
Factory(:layout, :site => @site)
|
|
end
|