X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/6a3cadb52d010b333a4acea8942bc4c13394e236..c1b65d11fd71d3801f4f5e42a3c40dc872a766f9:/test/integration/user_creation_test.rb diff --git a/test/integration/user_creation_test.rb b/test/integration/user_creation_test.rb index 3a9795bc7..bc4ccc97b 100644 --- a/test/integration/user_creation_test.rb +++ b/test/integration/user_creation_test.rb @@ -108,7 +108,7 @@ class UserCreationTest < ActionController::IntegrationTest 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]*)") + confirm_regex = Regexp.new("/user/redirect_tester/confirm\\?confirm_string=([a-zA-Z0-9]*)") assert_match(confirm_regex, register_email.body) confirm_string = confirm_regex.match(register_email.body)[1] @@ -159,5 +159,71 @@ class UserCreationTest < ActionController::IntegrationTest ActionMailer::Base.deliveries.clear end + def test_user_create_openid_failure + new_email = "newtester-openid2@osm.org" + display_name = "new_tester-openid2" + password = "testtest2" + assert_difference('User.count',0) do + assert_difference('ActionMailer::Base.deliveries.size',0) do + post "/user/terms", + {:user => { :email => new_email, :email_confirmation => new_email, :display_name => display_name, :openid_url => "http://localhost:1123/john.doe?openid.failure=newuser", :pass_crypt => "", :pass_crypt_confirmation => ""}} + assert_response :redirect + res = openid_request(@response.redirected_to) + post '/user/terms', res + assert_response :success + assert_template 'user/new' + end + end + + 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/redirect_tester_openid/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