How to test login action in a controller?

My login page has a login form with three fields:login,password,and image verification code,now how to test it?

require File.dirname(FILE) + “/…/spec_helper”

http://www.kirkbushell.com/articles/testing-using-rspec-part-2-the-controller

http://blog.enjoyrails.com/2008/02/18/rspec-basic/

http://rails.anyware-technologies.com.br/2009/04/21/tdd-on-rails-4-rspec-authlogic-factory_girl-and-resource_controller/

http://matthewkwilliams.com/index.php/tag/rspec/

describe AdminController do
integrate_views

before(:each) do
@params = {:login => ‘username’, :pass => ‘password’, :code_image => “1234”}

end

it “should redirect after input login and pass” do
session.should_receive(:[]).with(:code).and_return(“1234”) # this does’nt work!!!

#session.stub!(:[]).with(:code).and_return "1234"
Admin.should_receive(:authenticate).with(params[:login], params[:pass]).and_return(true)
post '/', @params
response.should be_redirect

end

end

错误提示是:
Spec::Mocks::MockExpectationError in ‘AdminController should redirect after input login and pass’

#ActionController::TestSession:0x9e77198 received :[] with unexpected arguments
expected: (:code)

   got: ("flash")

/home/qichunren/gems/actionpack-2.1.0/lib/action_controller/flash.rb:157:in `flash_without_components’

/home/qichunren/gems/actionpack-2.1.0/lib/action_controller/components.rb:105:in flash' /home/qichunren/gems/actionpack-2.1.0/lib/action_controller/flash.rb:167:in assign_shortcuts’

/home/qichunren/gems/actionpack-2.1.0/lib/action_controller/base.rb:523:in process_without_filters' /home/qichunren/gems/actionpack-2.1.0/lib/action_controller/filters.rb:569:in process_without_session_management_support’

/home/qichunren/gems/actionpack-2.1.0/lib/action_controller/session_management.rb:130:in `process_without_test’

/home/qichunren/gems/actionpack-2.1.0/lib/action_controller/test_process.rb:16:in process' /home/qichunren/gems/actionpack-2.1.0/lib/action_controller/test_process.rb:394:in process’

/home/qichunren/gems/actionpack-2.1.0/lib/action_controller/test_process.rb:365:in `post’
./spec/controllers/admin_controller_test.rb:31:

Finished in 0.023053 seconds