[rspec-users] Cucumber login problem

David Chelimsky dchelimsky at gmail.com
Thu Apr 29 11:55:18 EDT 2010


On Apr 29, 2010, at 9:54 AM, Amit Kulkarni wrote:

> Hello all,
> I am facing a weird problem.I am just trying to login but after entering
> correct parameters it is showing error as invalid username and password.
> I think there is some configuration or fixtures problem because if i try
> to login from GUI then it is working fine(using same database)
> Following are the detailed list of gems and code.
> Rspec (1.3.0, 1.1.12)
> Rspec-rails (1.3.2, 1.1.12)
> cucumber (0.6.3)
> cucumber-rails (0.3.0)
> Webrat (0.5.3, 0.4.3)
> 
> config/environments/cucumber.rb
> # Edit at your own peril - it's recommended to regenerate this file
> # in the future when you upgrade to a newer version of Cucumber.
> 
> # IMPORTANT: Setting config.cache_classes to false is known to
> # break Cucumber's use_transactional_fixtures method.
> # For more information see
> https://rspec.lighthouseapp.com/projects/16211/tickets/165
> config.cache_classes = true
> 
> # Log error messages when you accidentally call methods on nil.
> config.whiny_nils = true
> 
> # Show full error reports and disable caching
> config.action_controller.consider_all_requests_local = true
> config.action_controller.perform_caching             = false
> 
> # Disable request forgery protection in test environment
> config.action_controller.allow_forgery_protection    = false
> 
> # Tell Action Mailer not to deliver emails to the real world.
> # The :test delivery method accumulates sent emails in the
> # ActionMailer::Base.deliveries array.
> config.action_mailer.delivery_method = :test
> 
> config.gem 'cucumber-rails',   :lib => false, :version => '>=0.3.0'
> unless File.directory?(File.join(Rails.root,
> 'vendor/plugins/cucumber-rails'))
> config.gem 'database_cleaner', :lib => false, :version => '>=0.5.0'
> unless File.directory?(File.join(Rails.root,
> 'vendor/plugins/database_cleaner'))
> config.gem 'webrat',           :lib => false, :version => '>=0.5.3'
> unless File.directory?(File.join(Rails.root, 'vendor/plugins/webrat'))
> config.gem 'rspec',            :lib => false, :version => '>=1.3.0'
> unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec'))
> config.gem 'rspec-rails',      :lib => false, :version => '>=1.3.2'
> unless File.directory?(File.join(Rails.root,
> 'vendor/plugins/rspec-rails'))
> 
> features/support/env.rb
> # IMPORTANT: This file is generated by cucumber-rails - edit at your own
> peril.
> # It is recommended to regenerate this file in the future when you
> upgrade to a
> # newer version of cucumber-rails. Consider adding your own code to a
> new file
> # instead of editing this one. Cucumber will automatically load all
> features/**/*.rb
> # files.
> 
> ENV["RAILS_ENV"] ||= "test"
> require File.expand_path(File.dirname(__FILE__) +
> '/../../config/environment')
> 
> require 'cucumber/formatter/unicode' # Remove this line if you don't
> want Cucumber Unicode support
> require 'cucumber/rails/rspec'
> require 'cucumber/rails/world'
> require 'cucumber/rails/active_record'
> require 'cucumber/web/tableish'
> 
> require 'webrat'
> require 'webrat/core/matchers'
> 
> Webrat.configure do |config|
>  config.mode = :rails
>  config.open_error_files = false # Set to true if you want error pages
> to pop up in the browser
> end
> 
> Before do
>  Fixtures.reset_cache
>  fixtures_folder = File.join(RAILS_ROOT, 'spec', 'fixtures')
>  fixtures = Dir[File.join(fixtures_folder, '*.yml')].map {|f|
> File.basename(f, '.yml') }
>  Fixtures.create_fixtures(fixtures_folder, fixtures)
> end
> 
> 
> # If you set this to false, any error raised from within your app will
> bubble
> # up to your step definition and out to cucumber unless you catch it
> somewhere
> # on the way. You can make Rails rescue errors and render error pages on
> a
> # per-scenario basis by tagging a scenario or feature with the
> @allow-rescue tag.
> #
> # If you set this to true, Rails will rescue all errors and render error
> # pages, more or less in the same way your application would behave in
> the
> # default production environment. It's not recommended to do this for
> all
> # of your scenarios, as this makes it hard to discover errors in your
> application.
> ActionController::Base.allow_rescue = false
> 
> # If you set this to true, each scenario will run in a database
> transaction.
> # You can still turn off transactions on a per-scenario basis, simply
> tagging
> # a feature or scenario with the @no-txn tag. If you are using Capybara,
> # tagging with @culerity or @javascript will also turn transactions off.
> #
> # If you set this to false, transactions will be off for all scenarios,
> # regardless of whether you use @no-txn or not.
> #
> # Beware that turning transactions off will leave data in your database
> # after each scenario, which can lead to hard-to-debug failures in
> # subsequent scenarios. If you do this, we recommend you create a Before
> # block that will explicitly put your database in a known state.
> Cucumber::Rails::World.use_transactional_fixtures = true
> 
> # How to clean your database when transactions are turned off. See
> # http://github.com/bmabey/database_cleaner for more info.
> if defined?(ActiveRecord::Base)
>  begin
>    require 'database_cleaner'
>    DatabaseCleaner.strategy = :truncation
>  rescue LoadError => ignore_if_database_cleaner_not_present
>  end
> end
> 
> features/manage_users.feature
>    Given a registered user
>    When he clicks on login link
>    And after filling all the details
>    Then the user should be logged in
> 
> features/step_definitions/user_steps.rb
> Given /^a registered user$/ do
>  visit '/login'
> end
> 
> When /^he clicks on login link$/ do
>  visit '/login'
>  fill_in("login", :with => "test")
>  fill_in("password", :with => "test123")
>  click_button "Log in"
>  p current_url
>  p response.body
> end
> 
> Then /^that user should get created$/ do
>  @user = User.find_by_login("test")
>  @user.test.should == "test"
> end
> 
> This is my whole scenario.Now if i see the current url it says
> '/session' which actually should be '/users'  and in response.body it
> says 'invalid username and password'
> 
> Also in my database list of users are already present
> Please suggest

Please post cucumber issues to http://groups.google.com/group/cukes.

Good luck!

David


More information about the rspec-users mailing list