From: Kai Krueger Date: Fri, 1 Oct 2010 20:09:12 +0000 (+0100) Subject: Test openid based user creation right through to the final save X-Git-Tag: live~6262 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/a0b76fc2c5290534c90d8a16d50eb302424d8c21?hp=7c73eca63dcb6c32bbde68df5e145a46dff845c0 Test openid based user creation right through to the final save --- diff --git a/test/integration/user_creation_test.rb b/test/integration/user_creation_test.rb index 970b35517..86fddf7b2 100644 --- a/test/integration/user_creation_test.rb +++ b/test/integration/user_creation_test.rb @@ -178,4 +178,52 @@ class UserCreationTest < ActionController::IntegrationTest ActionMailer::Base.deliveries.clear end + def test_user_create_openid_redirect + new_email = "redirect_tester_openid@osm.org" + display_name = "redirect_tester_openid" + password = "" + # nothing special about this page, just need a protected page to redirect back to. + referer = "/traces/mine" + assert_difference('User.count') do + assert_difference('ActionMailer::Base.deliveries.size', 1) do + post "/user/terms", + {:user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :openid_url => "http://localhost:1123/john.doe?openid.success=newuser", :pass_crypt => "", :pass_crypt_confirmation => ""}, :referer => referer } + assert_response :redirect + res = openid_request(@response.location) + post '/user/terms', res + assert_response :success + assert_template 'terms' + post_via_redirect "/user/save", + {:user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :openid_url => "http://localhost:1123/john.doe?openid.success=newuser", :pass_crypt => "testtest", :pass_crypt_confirmation => "testtest"} } + end + end + + # Check the e-mail + register_email = ActionMailer::Base.deliveries.first + + assert_equal register_email.to[0], new_email + # Check that the confirm account url is correct + confirm_regex = Regexp.new("/user/confirm\\?confirm_string=([a-zA-Z0-9]*)") + assert_match(confirm_regex, register_email.body) + confirm_string = confirm_regex.match(register_email.body)[1] + + # Check the page + assert_response :success + assert_template 'login' + + ActionMailer::Base.deliveries.clear + + # Go to the confirmation page + get 'user/confirm', { :confirm_string => confirm_string } + assert_response :success + assert_template 'user/confirm' + + post 'user/confirm', { :confirm_string => confirm_string, :confirm_action => 'submit' } + assert_response :redirect # to trace/mine in original referrer + follow_redirect! + assert_response :redirect # but it not redirects to /user//traces + follow_redirect! + assert_response :success + assert_template "trace/list.html.erb" + end end