All pastes #802133 Raw Edit

don-o

public text v1 · immutable
#802133 ·published 2007-11-29 23:04 UTC
rendered paste body
  it "should login with a valid openid credential" do
    my_openid = "http://identityprovider/username"
    # mock Openid model
    oid = mock_model(Openid)
    user = mock_model(User)
    oid.should_receive(:user).and_return(user)
    Openid.should_receive(:find_by_openid).with(my_openid).and_return(oid)
    # mock OpenID::Response
    oid_response = mock("OpenID::Response")
    oid_response.should_receive(:status).and_return(OpenID::Consumer::SUCCESS)
    oid_response.should_receive(:identity_url).and_return(my_openid)
    # mock OpenID::Consumer
    consumer = mock("OpenID::Consumer")
    consumer.should_receive(:complete).and_return(oid_response)
    # mock the lib/OpenidUtility
    controller.should_receive(:consumer).and_return(consumer)
    controller.should_receive(:current_user=)
    get 'complete'
    response.should redirect_to("http://test.host/items")
  end

## controller
  def complete
    return_to = url_for(:action => 'complete', :only_path => false)
    parameters = params.reject{|k,v|request.path_parameters[k]}
    oidresp = consumer.complete(parameters, return_to)
    jump = {:action => :login}
    case oidresp.status
    when OpenID::Consumer::FAILURE
      if oidresp.identity_url
        flash[:error] = "Verification of #{oidresp.identity_url} failed: #{oidresp.message}"
      else
        flash[:error] = "Verification failed: #{oidresp.message}"
      end
    when OpenID::Consumer::SUCCESS
      identity_url = oidresp.identity_url
      flash[:alert] = "Verification of #{identity_url} succeeded."
      openid = Openid.find_by_openid(identity_url)
      if openid
        flash[:alert] += " existing user"
        current_user = openid.user
      else
        flash[:alert] += " new user"
        current_user = User.create
      end
      jump = {:controller => :items}
    when OpenID::Consumer::SETUP_NEEDED
      flash[:alert] = "Immediate request failed - Setup Needed"
    when OpenID::Consumer::CANCEL
      flash[:alert] = "OpenID transaction cancelled."
    end
    redirect_to jump
  end
end

## error
1)
Spec::Mocks::MockExpectationError in 'WelcomeController should login with a valid openid credential'
Mock 'WelcomeController' expected :current_user= with (#<User:0x..fdb8e2d5c @name="User_1001">) once, but received it 0 times
/home/donp/src/ruby/rails/catmystuff/vendor/plugins/rspec_on_rails/lib/spec/rails/example/behaviour/controller_example_group.rb:211:in `should_receive'