[rspec-users] Cucumber login problem

Amit Kulkarni lists at ruby-forum.com
Thu Apr 29 10:54:32 EDT 2010


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
-- 
Posted via http://www.ruby-forum.com/.


More information about the rspec-users mailing list