rendered paste body## rspec
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'