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