Skip to content

Instantly share code, notes, and snippets.

@antarestrader
Created February 21, 2009 00:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save antarestrader/67795 to your computer and use it in GitHub Desktop.
Save antarestrader/67795 to your computer and use it in GitHub Desktop.
Feature: Login # features/authentication/login.feature
To ensure the safety of the application
A regular user of the system
Must authenticate before using the app
Scenario Outline: Failed Login # features/authentication/login.feature:6
Given I am not authenticated # features/authentication/login.feature:7
When I go to /login # features/authentication/login.feature:8
And I fill in "Login" with "<login>" # features/authentication/login.feature:9
And I fill in "Password" with "<password>" # features/authentication/login.feature:10
And I press "Log In" # features/authentication/login.feature:11
Then the login request should fail # features/authentication/login.feature:12
Then I should see an error message # features/authentication/login.feature:13
|login |password|
|not_an_address|nil |
Scenario: Admin login # features/authentication/login.feature:19
Given I logged in as Admin # features/steps/shared_steps.rb:21
When I go to / # features/steps/webrat_steps.rb:9
Then I should see "admin" # features/steps/result_steps.rb:1
expected: /admin/m,
got: "<?xml version='1.0' encoding='utf-8' ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html lang='en-US' xml:lang='en-US' xmlns='http://www.w3.org/1999/xhtml'>\n <head>\n <title>Learn Korean easy way!</title>\n <meta http-equiv=”content-type” content=”text/html;charset=UTF-8” />\n <link type=\"text/css\" media=\"screen\" charset=\"utf-8\" rel=\"Stylesheet\" href=\"/stylesheets/base.css\" />\n <link type=\"text/css\" media=\"screen\" charset=\"utf-8\" rel=\"Stylesheet\" href=\"/stylesheets/style.css\" />\n <script type=\"text/javascript\" src=\"/javascripts/jquery-1.3.1.min.js\"></script><script type=\"text/javascript\" src=\"/javascripts/application.js\"></script>\n </head>\n <body>\n <div id='container'>\n <div id='header'>\n <h1>\n <a href=\"/\">Learn Korean.kr</a>\n </h1>\n <div id='user-navigation'>\n <ul>\n <li>\n <a href=\"/signup\">Sign up</a>\n </li>\n <li>\n <a href=\"/login\">Sign in</a>\n </li>\n </ul>\n <div class='clear'></div>\n </div>\n <div id='main-navigation'>\n <ul>\n <li class='first active'>\n <a href=\"#\">Main Page</a>\n </li>\n <li>\n <a href=\"#\">Courses</a>\n </li>\n <li class=''>\n <a href=\"#\">Class Materials</a>\n </li>\n <li class=''>\n <a href=\"#\">Forum</a>\n </li>\n <li class=''>\n <a href=\"#\">About Us</a>\n </li>\n </ul>\n </div>\n <div id='main2-navigation'>\n <ul>\n <li class='first'>\n <a href=\"#\">Calener</a>\n </li>\n <li>\n <a href=\"#\">Chatting</a>\n </li>\n <li>\n <a href=\"#\">단어장</a>\n </li>\n <li class=''>\n <a href=\"#\">Test</a>\n </li>\n </ul>\n <div class='clear'></div>\n </div>\n </div>\n <div id='wrapper'>\n <div id='main'>\n \n <div class='block' id='block-text'>\n <div class='secondary-navigation'>\n <ul>\n <li class='active first'>\n <a href=\"/\">Text</a>\n </li>\n <li class=''>\n <a href=\"/\">Text</a>\n </li>\n <li class=''>\n <a href=\"/\">Text</a>\n </li>\n </ul>\n <div class='clear'></div>\n </div>\n <div class='content'>\n <h2 class='title'>You're in Home</h2>\n <div class='inner'>\n <p>\n Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. <span class=\"hightlight\">Excepteur sint occaecat cupidatat non proident</span>, sunt in culpa qui officia deserunt mollit anim id est laborum.\n </p>\n <p>\n <span class='small'>small text</span>\n </p>\n <p>\n <span class='grey'>grey text</span>\n </p>\n <hr />\n <p>\n Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. <span class=\"hightlight\">Excepteur sint occaecat cupidatat non proident</span>, sunt in culpa qui officia deserunt mollit anim id est laborum.\n </p>\n </div>\n </div>\n </div>\n </div>\n <div id='sidebar'>\n <div class='block'>\n <h3>Simple Block</h3>\n <div class='content'>\n <p>\n Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n </p>\n </div>\n </div>\n <div class='block'>\n <h3>Sidebar</h3>\n <ul class='navigation'>\n <li>\n <a href=\"#\">Course A</a>\n </li>\n <li>\n <a href=\"#\">Course B</a>\n </li>\n <li>\n <a href=\"#\">Course C</a>\n </li>\n <li>\n <a href=\"#\">Course D</a>\n </li>\n </ul>\n </div>\n <div class='block notice'>\n <h4>Notice Title</h4>\n <p>\n Morbi posuere urna vitae nunc. Curabitur ultrices, lorem ac aliquam blandit, lectus eros hendrerit eros, at eleifend libero ipsum hendrerit urna. Suspendisse viverra. Morbi ut magna. Praesent id ipsum. Sed feugiat ipsum ut felis. Fusce vitae nibh sed risus commodo pulvinar. Duis ut dolor. Cras ac erat pulvinar tortor porta sodales. Aenean tempor venenatis dolor.\n </p>\n </div>\n <div class='block'>\n <div class='sidebar-block'>\n <h4>Sidebar Inner block Title</h4>\n <p>\n Morbi posuere urna vitae nunc. Curabitur ultrices, lorem ac <a href=\"#\">aliquam blandit</a>, lectus eros hendrerit eros, at eleifend libero ipsum hendrerit urna. Suspendisse viverra. Morbi ut magna. Praesent id ipsum. Sed feugiat ipsum ut felis. Fusce vitae nibh sed risus commodo pulvinar. Duis ut dolor. Cras ac erat pulvinar tortor porta sodales. Aenean tempor venenatis dolor.\n </p>\n </div>\n </div>\n <div class='clear'></div>\n </div>\n <div id='footer'>\n <div class='block'>\n <p>\n Copyright &copy; 2009 LearnKorean.kr, All rights are reserved.\n </p>\n </div>\n </div>\n </div>\n </div>\n </body>\n</html>\n" (using =~)
Diff:
@@ -1,2 +1,2 @@
-/admin/m
+"<?xml version='1.0' encoding='utf-8' ?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html lang='en-US' xml:lang='en-US' xmlns='http://www.w3.org/1999/xhtml'>\n <head>\n <title>Learn Korean easy way!</title>\n <meta http-equiv=”content-type” content=”text/html;charset=UTF-8” />\n <link type=\"text/css\" media=\"screen\" charset=\"utf-8\" rel=\"Stylesheet\" href=\"/stylesheets/base.css\" />\n <link type=\"text/css\" media=\"screen\" charset=\"utf-8\" rel=\"Stylesheet\" href=\"/stylesheets/style.css\" />\n <script type=\"text/javascript\" src=\"/javascripts/jquery-1.3.1.min.js\"></script><script type=\"text/javascript\" src=\"/javascripts/application.js\"></script>\n </head>\n <body>\n <div id='container'>\n <div id='header'>\n <h1>\n <a href=\"/\">Learn Korean.kr</a>\n </h1>\n <div id='user-navigation'>\n <ul>\n <li>\n <a href=\"/signup\">Sign up</a>\n </li>\n <li>\n <a href=\"/login\">Sign in</a>\n </li>\n </ul>\n <div class='clear'></div>\n </div>\n <div id='main-navigation'>\n <ul>\n <li class='first active'>\n <a href=\"#\">Main Page</a>\n </li>\n <li>\n <a href=\"#\">Courses</a>\n </li>\n <li class=''>\n <a href=\"#\">Class Materials</a>\n </li>\n <li class=''>\n <a href=\"#\">Forum</a>\n </li>\n <li class=''>\n <a href=\"#\">About Us</a>\n </li>\n </ul>\n </div>\n <div id='main2-navigation'>\n <ul>\n <li class='first'>\n <a href=\"#\">Calener</a>\n </li>\n <li>\n <a href=\"#\">Chatting</a>\n </li>\n <li>\n <a href=\"#\">단어장</a>\n </li>\n <li class=''>\n <a href=\"#\">Test</a>\n </li>\n </ul>\n <div class='clear'></div>\n </div>\n </div>\n <div id='wrapper'>\n <div id='main'>\n \n <div class='block' id='block-text'>\n <div class='secondary-navigation'>\n <ul>\n <li class='active first'>\n <a href=\"/\">Text</a>\n </li>\n <li class=''>\n <a href=\"/\">Text</a>\n </li>\n <li class=''>\n <a href=\"/\">Text</a>\n </li>\n </ul>\n <div class='clear'></div>\n </div>\n <div class='content'>\n <h2 class='title'>You're in Home</h2>\n <div class='inner'>\n <p>\n Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. <span class=\"hightlight\">Excepteur sint occaecat cupidatat non proident</span>, sunt in culpa qui officia deserunt mollit anim id est laborum.\n </p>\n <p>\n <span class='small'>small text</span>\n </p>\n <p>\n <span class='grey'>grey text</span>\n </p>\n <hr />\n <p>\n Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. <span class=\"hightlight\">Excepteur sint occaecat cupidatat non proident</span>, sunt in culpa qui officia deserunt mollit anim id est laborum.\n </p>\n </div>\n </div>\n </div>\n </div>\n <div id='sidebar'>\n <div class='block'>\n <h3>Simple Block</h3>\n <div class='content'>\n <p>\n Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.\n </p>\n </div>\n </div>\n <div class='block'>\n <h3>Sidebar</h3>\n <ul class='navigation'>\n <li>\n <a href=\"#\">Course A</a>\n </li>\n <li>\n <a href=\"#\">Course B</a>\n </li>\n <li>\n <a href=\"#\">Course C</a>\n </li>\n <li>\n <a href=\"#\">Course D</a>\n </li>\n </ul>\n </div>\n <div class='block notice'>\n <h4>Notice Title</h4>\n <p>\n Morbi posuere urna vitae nunc. Curabitur ultrices, lorem ac aliquam blandit, lectus eros hendrerit eros, at eleifend libero ipsum hendrerit urna. Suspendisse viverra. Morbi ut magna. Praesent id ipsum. Sed feugiat ipsum ut felis. Fusce vitae nibh sed risus commodo pulvinar. Duis ut dolor. Cras ac erat pulvinar tortor porta sodales. Aenean tempor venenatis dolor.\n </p>\n </div>\n <div class='block'>\n <div class='sidebar-block'>\n <h4>Sidebar Inner block Title</h4>\n <p>\n Morbi posuere urna vitae nunc. Curabitur ultrices, lorem ac <a href=\"#\">aliquam blandit</a>, lectus eros hendrerit eros, at eleifend libero ipsum hendrerit urna. Suspendisse viverra. Morbi ut magna. Praesent id ipsum. Sed feugiat ipsum ut felis. Fusce vitae nibh sed risus commodo pulvinar. Duis ut dolor. Cras ac erat pulvinar tortor porta sodales. Aenean tempor venenatis dolor.\n </p>\n </div>\n </div>\n <div class='clear'></div>\n </div>\n <div id='footer'>\n <div class='block'>\n <p>\n Copyright &copy; 2009 LearnKorean.kr, All rights are reserved.\n </p>\n </div>\n </div>\n </div>\n </div>\n </body>\n</html>\n" (Spec::Expectations::ExpectationNotMetError)
./features/steps/result_steps.rb:2:in `Then /^I should see "(.*)"$/'
features/authentication/login.feature:22:in `Then I should see "admin"'
feature: admin/dashboard # features/admin/dashboard.feature
So that I can manage site
As a admin and also an instructor
I want to see admin dashboard
Scenario: Hide admin link # features/admin/dashboard.feature:6
Given I did not log in # features/steps/webrat_steps.rb:3
When I login as "jaigouk" with "5425" # features/steps/shared_steps.rb:12
Then I should not see "admin" # features/steps/result_steps.rb:5
4 scenarios
12 steps passed
1 step failed
rake aborted!
Command failed with status (1): [/usr/local/bin/ruby1.8 -I "/usr/local/lib/...]
Feature: Login
To ensure the safety of the application
A regular user of the system
Must authenticate before using the app
Scenario Outline: Failed Login
Given I am not authenticated
When I go to /login
And I fill in "Login" with "<login>"
And I fill in "Password" with "<password>"
And I press "Log In"
Then the login request should fail
Then I should see an error message
Examples:
| login | password |
| not_an_address | nil |
Scenario: Admin login
Given I am an admin
And I login
When I go to /admin
Then the request should succeed
Given 'I am a registered user' do
#because this is a given, we can talk directly to the model class if it is easier.
@user = User.new(
:login => 'user-#{rand(10000)}', #keep login unique
:name => "Joe User", #different data should look different. Easier to debug
:email => 'edgemerb@gmail.com',
:password => "{rand(10000)}")
@user.password_confirmation = @user.password
@user.activated_at = Time.now #Is this all a user needs to be active?
@user.save!
end
Given 'I am an admin' do
Given 'I am a registered user'
@user..set_role("admin")
@user.save!
end
When /^I login as "(.*)" with "(.*)"$/ do |name, pass| #I wonder how useful this is
visit "/"
click_link "Sign in"
fill_in "Login", :with => "#{name}"
fill_in "Password", :with => "#{pass}"
#session.user = User.first(:login => "#{name}")
@response = click_button("Log in")
end
Given /^I login$/ do
unless @user do #if there is not a user make one to login with
Given 'I an a registered user'
end
visit "/"
click_link "Sign in"
fill_in "Login", :with => @user.login
fill_in "Password", :with => @user.password
click_button("Log in")
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment