]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'openstreetmap/pull/1036'
authorTom Hughes <tom@compton.nu>
Fri, 19 Aug 2016 11:26:51 +0000 (12:26 +0100)
committerTom Hughes <tom@compton.nu>
Fri, 19 Aug 2016 11:26:51 +0000 (12:26 +0100)
14 files changed:
app/controllers/user_controller.rb
config/locales/en.yml
db/migrate/20131029121300_set_default_gravatar_to_false_for_privacy.rb [new file with mode: 0644]
script/gravatar [new file with mode: 0755]
test/controllers/user_controller_test.rb
test/fixtures/users.yml
test/http/geocoder_ca.yml
test/http/geocoder_us.yml
test/http/geonames.yml
test/http/gravatar.yml [new file with mode: 0644]
test/http/nominatim.yml
test/http/npemap.yml
test/models/user_test.rb
test/test_helper.rb

index c8abb4d85a3f84ce1389e956b72cad9f558c8319..9413ec6edaf23ac5045a8b1d6f492ff11377f9d4 100644 (file)
@@ -297,6 +297,7 @@ class UserController < ApplicationController
         user = token.user
         user.status = "active"
         user.email_valid = true
+        flash[:notice] = gravatar_status_message(user) if gravatar_enable(user)
         user.save!
         referer = token.referer
         token.destroy
@@ -348,8 +349,9 @@ class UserController < ApplicationController
         @user.email = @user.new_email
         @user.new_email = nil
         @user.email_valid = true
+        changed = gravatar_enable(@user)
         if @user.save
-          flash[:notice] = t "user.confirm_email.success"
+          flash[:notice] = (t "user.confirm_email.success") + (changed ? " " + gravatar_status_message(@user) : "")
         else
           flash[:errors] = @user.errors
         end
@@ -799,4 +801,27 @@ class UserController < ApplicationController
 
     !blocked
   end
+
+  ##
+  # check if this user has a gravatar and set the user pref is true
+  def gravatar_enable(user)
+    # code from example https://en.gravatar.com/site/implement/images/ruby/
+    return false if user.image.present?
+    hash = Digest::MD5.hexdigest(user.email.downcase)
+    url = "https://www.gravatar.com/avatar/#{hash}?d=404" # without d=404 we will always get an image back
+    response = OSM.http_client.get(URI.parse(url))
+    oldsetting = user.image_use_gravatar
+    user.image_use_gravatar = response.success?
+    oldsetting != user.image_use_gravatar
+  end
+
+  ##
+  # display a message about th current status of the gravatar setting
+  def gravatar_status_message(user)
+    if user.image_use_gravatar
+      return t "user.account.gravatar.enabled"
+    else
+      return t "user.account.gravatar.disabled"
+    end
+  end
 end
index c8731ee97ce6404de116a3810acf51729ddd7b93..0d76f5e473549216ba864eae24f114973215ca0f 100644 (file)
@@ -1925,6 +1925,8 @@ en:
         gravatar: "Use Gravatar"
         link: "http://wiki.openstreetmap.org/wiki/Gravatar"
         link text: "what is this?"
+        disabled: "No Gravatar for this email address."
+        enabled: "Display of your Gravatar has been enabled."
       new image: "Add an image"
       keep image: "Keep the current image"
       delete image: "Remove the current image"
diff --git a/db/migrate/20131029121300_set_default_gravatar_to_false_for_privacy.rb b/db/migrate/20131029121300_set_default_gravatar_to_false_for_privacy.rb
new file mode 100644 (file)
index 0000000..49f94c9
--- /dev/null
@@ -0,0 +1,9 @@
+class SetDefaultGravatarToFalseForPrivacy < ActiveRecord::Migration
+  def up
+    change_column :users, :image_use_gravatar, :boolean, :default => false
+  end
+
+  def down
+    change_column :users, :image_use_gravatar, :boolean, :default => true
+  end
+end
diff --git a/script/gravatar b/script/gravatar
new file mode 100755 (executable)
index 0000000..e14e7ea
--- /dev/null
@@ -0,0 +1,17 @@
+#!/usr/bin/env ruby
+
+# require File.dirname(__FILE__) + "/../config/environment"
+
+start = 0
+User.where("image_use_gravatar AND id >=" + start.to_s).order("id").find_each do |user|
+  p "checked up to id " + user.id.to_s if user.id % 1000 == 0 # just give a rough indication where we are for restarting
+  next if user.image.present?
+  hash = Digest::MD5.hexdigest(user.email.downcase)
+  url = "https://www.gravatar.com/avatar/#{hash}?d=404" # without d=404 we will always get an image back
+  response = OSM.http_client.get(URI.parse(url))
+  user.image_use_gravatar = response.success?
+  user.save
+  sleep(1)
+end
+
+exit 0
index 8c3b8adcd88e80fc81a42666695f4de1bdfc97d1..ede841032ef20072514bde568a1f1220f62b228d 100644 (file)
@@ -547,6 +547,42 @@ class UserControllerTest < ActionController::TestCase
     assert_match /confirmation code has expired or does not exist/, flash[:error]
   end
 
+  ##
+  # test if testing for a gravatar works
+  # this happens when the email is actually changed
+  # which is triggered by the confirmation mail
+  def test_gravatar_auto_enable
+    with_http_stubs "gravatar" do
+      # switch to email that has a gravatar
+      user = users(:first_gravatar_user)
+      confirm_string = user.tokens.create.token
+      # precondition gravatar should be turned off
+      assert !user.image_use_gravatar
+      post :confirm_email, :confirm_string => confirm_string
+      assert_response :redirect
+      assert_redirected_to :action => :account, :display_name => user.display_name
+      assert_match /Confirmed your change of email address/, flash[:notice]
+      # gravatar use should now be enabled
+      assert User.find(users(:first_gravatar_user).id).image_use_gravatar
+    end
+  end
+
+  def test_gravatar_auto_disable
+    with_http_stubs "gravatar" do
+      # switch to email without a gravatar
+      user = users(:second_gravatar_user)
+      confirm_string = user.tokens.create.token
+      # precondition gravatar should be turned on
+      assert user.image_use_gravatar
+      post :confirm_email, :confirm_string => confirm_string
+      assert_response :redirect
+      assert_redirected_to :action => :account, :display_name => user.display_name
+      assert_match /Confirmed your change of email address/, flash[:notice]
+      # gravatar use should now be disabled
+      assert !User.find(users(:second_gravatar_user).id).image_use_gravatar
+    end
+  end
+
   def test_terms_new_user
     get :terms, {}, { :new_user => User.new }
     assert_response :success
@@ -961,7 +997,7 @@ class UserControllerTest < ActionController::TestCase
     assert_select "contributor-terms", :count => 1 do
       assert_select "[agreed='true']"
     end
-    assert_select "img", :count => 1
+    assert_select "img", :count => 0
     assert_select "roles", :count => 1 do
       assert_select "role", :count => 0
     end
@@ -1013,7 +1049,7 @@ class UserControllerTest < ActionController::TestCase
     assert_select "contributor-terms", :count => 1 do
       assert_select "[agreed='true'][pd='false']"
     end
-    assert_select "img", :count => 1
+    assert_select "img", :count => 0
     assert_select "roles", :count => 1 do
       assert_select "role", :count => 0
     end
@@ -1334,7 +1370,7 @@ class UserControllerTest < ActionController::TestCase
     get :list, :page => 3
     assert_response :success
     assert_template :list
-    assert_select "table#user_list tr", :count => 23
+    assert_select "table#user_list tr", :count => 25
   end
 
   def test_list_post_confirm
index 74365904a758270feb0aea8f1f79a75ba8b680f0..10633e05d267e1a8634653e42cfa7fe40867352d 100644 (file)
@@ -304,3 +304,32 @@ github_user:
   terms_agreed: "2010-01-01 11:22:33"
   terms_seen: true
   languages: en
+
+first_gravatar_user:
+  id: 23
+  email: g1@OpenStreetMap.org
+  new_email: new_g1@OpenStreetMap.org
+  status: active
+  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
+  creation_time: "2008-05-01 01:23:45"
+  display_name: gravatar1
+  data_public: true
+  description: some test description
+  terms_agreed: "2010-01-01 11:22:33"
+  terms_seen: true
+  creation_ip: "1.2.3.4"
+
+second_gravatar_user:
+  id: 24
+  email: g2@OpenStreetMap.org
+  new_email: new_g2@OpenStreetMap.org
+  image_use_gravatar: true
+  status: active
+  pass_crypt: <%= Digest::MD5.hexdigest('test') %>
+  creation_time: "2008-05-01 01:23:45"
+  display_name: gravatar2
+  data_public: true
+  description: some test description
+  terms_agreed: "2010-01-01 11:22:33"
+  terms_seen: true
+  creation_ip: "1.2.3.4"
index 754885a5b691792b75674aafb8c39b084fd2e9f6..88a3fdc94a8d5040febd86ee2ff039940e4f92a5 100644 (file)
@@ -1,48 +1,54 @@
-/?geoit=XML&postal=A1B+2C3: |
-  <?xml version="1.0" encoding="UTF-8"?>
-  <geodata>
-    <latt>47.172520</latt>
-    <longt>-55.440515</longt>
-    <postal>A1B2C3</postal>
-    <standard>
-      <stnumber>1</stnumber>
-      <staddress/>
-      <city>ST. JOHN&amp;'S</city>
-      <prov>NL</prov>
-      <confidence>0.9</confidence>
-    </standard>
-  </geodata>
+/?geoit=XML&postal=A1B+2C3: 
+  code: 200 
+  body: |
+    <?xml version="1.0" encoding="UTF-8"?>
+    <geodata>
+        <latt>47.172520</latt>
+      <longt>-55.440515</longt>
+      <postal>A1B2C3</postal>
+      <standard>
+        <stnumber>1</stnumber>
+        <staddress/>
+        <city>ST. JOHN&amp;'S</city>
+        <prov>NL</prov>
+        <confidence>0.9</confidence>
+      </standard>
+    </geodata>
 
-/?geoit=XML&postal=k1a+0b1: |
-  <?xml version="1.0" encoding="UTF-8"?>
-  <geodata>
-    <latt>45.375437</latt>
-    <longt>-75.691041</longt>
-    <postal>K1A0B1</postal>
-    <standard>
-      <stnumber>1</stnumber>
-      <staddress/>
-      <city>OTTAWA</city>
-      <prov>ON</prov>
-      <confidence>0.9</confidence>
-    </standard>
-  </geodata>
-
-/?geoit=XML&postal=Q0Q+0Q0: |
-  <?xml version="1.0" encoding="UTF-8"?>
-  <geodata>
-    <error>
-      <code>008</code>
-      <description>Your request did not produce any results. Check your spelling and try again.</description>
-    </error>
-    <latt/>
-    <longt>-</longt>
-    <postal>Q0Q0Q0</postal>
-    <standard>
-      <stnumber>1</stnumber>
-      <staddress/>
-      <city/>
-      <prov/>
-      <confidence>0.9</confidence>
-    </standard>
-  </geodata>
+/?geoit=XML&postal=k1a+0b1:
+  code: 200 
+  body: |
+    <?xml version="1.0" encoding="UTF-8"?>
+    <geodata>
+      <latt>45.375437</latt>
+      <longt>-75.691041</longt>
+      <postal>K1A0B1</postal>
+      <standard>
+        <stnumber>1</stnumber>
+        <staddress/>
+        <city>OTTAWA</city>
+        <prov>ON</prov>
+        <confidence>0.9</confidence>
+      </standard>
+    </geodata>
+  
+/?geoit=XML&postal=Q0Q+0Q0:
+  code: 200 
+  body: |
+    <?xml version="1.0" encoding="UTF-8"?>
+    <geodata>
+      <error>
+        <code>008</code>
+        <description>Your request did not produce any results. Check your spelling and try again.</description>
+      </error>
+      <latt/>
+      <longt>-</longt>
+      <postal>Q0Q0Q0</postal>
+      <standard>
+        <stnumber>1</stnumber>
+        <staddress/>
+        <city/>
+        <prov/>
+        <confidence>0.9</confidence>
+      </standard>
+    </geodata>
index 1e451d60a05831048ad344695c98c361e963e909..de54aa306122bf25030eef2cee5540339718601e 100644 (file)
@@ -1,2 +1,6 @@
-/service/csv?zip=90210: "34.088808, -118.40612, Beverly Hills, CA, 90210"
-/service/csv?zip=00000: "1: couldn't find this zip code: 00000! sorry"
+/service/csv?zip=90210: 
+  code: 200 
+  body: "34.088808, -118.40612, Beverly Hills, CA, 90210"
+/service/csv?zip=00000: 
+  code: 200 
+  body: "1: couldn't find this zip code: 00000! sorry"
index 3527e3ced129ded75c8508a0adcb8a86bd351805..65356c80754f11ef445b8ff815c0682a825a2fdf 100644 (file)
-/search?lang=en&maxRows=20&q=Hoddesdon&username=dummy: |
-  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-  <geonames style="MEDIUM">
-    <totalResultsCount>1</totalResultsCount>
-    <geoname>
-      <toponymName>Hoddesdon</toponymName>
-      <name>Hoddesdon</name>
-      <lat>51.76148</lat>
-      <lng>-0.01144</lng>
-      <geonameId>2646807</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>P</fcl>
-      <fcode>PPL</fcode>
-    </geoname>
-  </geonames>
-
-/search?lang=en&maxRows=20&q=Broxbourne&username=dummy: |
-  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-  <geonames style="MEDIUM">
-    <totalResultsCount>17</totalResultsCount>
-    <geoname>
-      <toponymName>Broxbourne</toponymName>
-      <name>Broxbourne</name>
-      <lat>51.74712</lat>
-      <lng>-0.01923</lng>
-      <geonameId>2654481</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>P</fcl>
-      <fcode>PPL</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Broxbourne District</toponymName>
-      <name>Broxbourne District</name>
-      <lat>51.73026</lat>
-      <lng>-0.04821</lng>
-      <geonameId>7290563</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>A</fcl>
-      <fcode>ADM3</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Cheshunt</toponymName>
-      <name>Cheshunt</name>
-      <lat>51.70791</lat>
-      <lng>-0.03739</lng>
-      <geonameId>2653232</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>P</fcl>
-      <fcode>PPL</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Hoddesdon</toponymName>
-      <name>Hoddesdon</name>
-      <lat>51.76148</lat>
-      <lng>-0.01144</lng>
-      <geonameId>2646807</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>P</fcl>
-      <fcode>PPL</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Waltham Cross</toponymName>
-      <name>Waltham Cross</name>
-      <lat>51.68905</lat>
-      <lng>-0.0333</lng>
-      <geonameId>2634842</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>P</fcl>
-      <fcode>PPL</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Goffs Oak</toponymName>
-      <name>Goffs Oak</name>
-      <lat>51.71015</lat>
-      <lng>-0.0872</lng>
-      <geonameId>2648362</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>P</fcl>
-      <fcode>PPL</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Wormley</toponymName>
-      <name>Wormley</name>
-      <lat>51.7324</lat>
-      <lng>-0.0242</lng>
-      <geonameId>2633535</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>P</fcl>
-      <fcode>PPL</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Broxbourne</toponymName>
-      <name>Broxbourne</name>
-      <lat>-27.50314</lat>
-      <lng>151.378</lng>
-      <geonameId>8792801</geonameId>
-      <countryCode>AU</countryCode>
-      <countryName>Australia</countryName>
-      <fcl>S</fcl>
-      <fcode>HMSD</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Lee Valley White Water Centre</toponymName>
-      <name>Lee Valley White Water Centre</name>
-      <lat>51.68814</lat>
-      <lng>-0.01682</lng>
-      <geonameId>7670551</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>S</fcl>
-      <fcode>FCL</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Cheshunt Railway Station</toponymName>
-      <name>Cheshunt Railway Station</name>
-      <lat>51.703</lat>
-      <lng>-0.024</lng>
-      <geonameId>6952282</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>S</fcl>
-      <fcode>RSTN</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Theobalds Grove Railway Station</toponymName>
-      <name>Theobalds Grove Railway Station</name>
-      <lat>51.692</lat>
-      <lng>-0.035</lng>
-      <geonameId>6953715</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>S</fcl>
-      <fcode>RSTN</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Waltham Cross Railway Station</toponymName>
-      <name>Waltham Cross Railway Station</name>
-      <lat>51.685</lat>
-      <lng>-0.027</lng>
-      <geonameId>6953801</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>S</fcl>
-      <fcode>RSTN</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Rye House Station</toponymName>
-      <name>Rye House Station</name>
-      <lat>51.76938</lat>
-      <lng>0.00562</lng>
-      <geonameId>6691700</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>S</fcl>
-      <fcode>RSTN</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Broxbourne Station</toponymName>
-      <name>Broxbourne Station</name>
-      <lat>51.74697</lat>
-      <lng>-0.01105</lng>
-      <geonameId>6691701</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>S</fcl>
-      <fcode>RSTN</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Broxbornebury Park</toponymName>
-      <name>Broxbornebury Park</name>
-      <lat>51.75252</lat>
-      <lng>-0.03839</lng>
-      <geonameId>6286417</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>S</fcl>
-      <fcode>CSTL</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Marriott Cheshunt</toponymName>
-      <name>Marriott Cheshunt</name>
-      <lat>51.7208</lat>
-      <lng>-0.0324</lng>
-      <geonameId>6512481</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>S</fcl>
-      <fcode>HTL</fcode>
-    </geoname>
-    <geoname>
-      <toponymName>Cheshunt Community Hospital</toponymName>
-      <name>Cheshunt Community Hospital</name>
-      <lat>51.68396</lat>
-      <lng>-0.03951</lng>
-      <geonameId>6289233</geonameId>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <fcl>S</fcl>
-      <fcode>HSP</fcode>
-    </geoname>
-  </geonames>
-
-/countrySubdivision?lang=en&lat=51.7632&lng=-0.0076&username=dummy: |
-  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-  <geonames>
-    <countrySubdivision>
-      <countryCode>GB</countryCode>
-      <countryName>United Kingdom</countryName>
-      <adminCode1>ENG</adminCode1>
-      <adminName1>England</adminName1>
-      <code type="ISO3166-2">ENG</code>
-      <distance>0.0</distance>
-    </countrySubdivision>
-  </geonames>
+/search?lang=en&maxRows=20&q=Hoddesdon&username=dummy:
+  code: 200
+  body: |
+    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+    <geonames style="MEDIUM">
+      <totalResultsCount>1</totalResultsCount>
+      <geoname>
+        <toponymName>Hoddesdon</toponymName>
+        <name>Hoddesdon</name>
+        <lat>51.76148</lat>
+        <lng>-0.01144</lng>
+        <geonameId>2646807</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>P</fcl>
+        <fcode>PPL</fcode>
+      </geoname>
+    </geonames>
+  
+/search?lang=en&maxRows=20&q=Broxbourne&username=dummy:
+  code: 200
+  body: |
+    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+    <geonames style="MEDIUM">
+      <totalResultsCount>17</totalResultsCount>
+      <geoname>
+        <toponymName>Broxbourne</toponymName>
+        <name>Broxbourne</name>
+        <lat>51.74712</lat>
+        <lng>-0.01923</lng>
+        <geonameId>2654481</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>P</fcl>
+        <fcode>PPL</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Broxbourne District</toponymName>
+        <name>Broxbourne District</name>
+        <lat>51.73026</lat>
+        <lng>-0.04821</lng>
+        <geonameId>7290563</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>A</fcl>
+        <fcode>ADM3</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Cheshunt</toponymName>
+        <name>Cheshunt</name>
+        <lat>51.70791</lat>
+        <lng>-0.03739</lng>
+        <geonameId>2653232</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>P</fcl>
+        <fcode>PPL</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Hoddesdon</toponymName>
+        <name>Hoddesdon</name>
+        <lat>51.76148</lat>
+        <lng>-0.01144</lng>
+        <geonameId>2646807</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>P</fcl>
+        <fcode>PPL</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Waltham Cross</toponymName>
+        <name>Waltham Cross</name>
+        <lat>51.68905</lat>
+        <lng>-0.0333</lng>
+        <geonameId>2634842</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>P</fcl>
+        <fcode>PPL</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Goffs Oak</toponymName>
+        <name>Goffs Oak</name>
+        <lat>51.71015</lat>
+        <lng>-0.0872</lng>
+        <geonameId>2648362</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>P</fcl>
+        <fcode>PPL</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Wormley</toponymName>
+        <name>Wormley</name>
+        <lat>51.7324</lat>
+        <lng>-0.0242</lng>
+        <geonameId>2633535</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>P</fcl>
+        <fcode>PPL</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Broxbourne</toponymName>
+        <name>Broxbourne</name>
+        <lat>-27.50314</lat>
+        <lng>151.378</lng>
+        <geonameId>8792801</geonameId>
+        <countryCode>AU</countryCode>
+        <countryName>Australia</countryName>
+        <fcl>S</fcl>
+        <fcode>HMSD</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Lee Valley White Water Centre</toponymName>
+        <name>Lee Valley White Water Centre</name>
+        <lat>51.68814</lat>
+        <lng>-0.01682</lng>
+        <geonameId>7670551</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>S</fcl>
+        <fcode>FCL</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Cheshunt Railway Station</toponymName>
+        <name>Cheshunt Railway Station</name>
+        <lat>51.703</lat>
+        <lng>-0.024</lng>
+        <geonameId>6952282</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>S</fcl>
+        <fcode>RSTN</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Theobalds Grove Railway Station</toponymName>
+        <name>Theobalds Grove Railway Station</name>
+        <lat>51.692</lat>
+        <lng>-0.035</lng>
+        <geonameId>6953715</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>S</fcl>
+        <fcode>RSTN</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Waltham Cross Railway Station</toponymName>
+        <name>Waltham Cross Railway Station</name>
+        <lat>51.685</lat>
+        <lng>-0.027</lng>
+        <geonameId>6953801</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>S</fcl>
+        <fcode>RSTN</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Rye House Station</toponymName>
+        <name>Rye House Station</name>
+        <lat>51.76938</lat>
+        <lng>0.00562</lng>
+        <geonameId>6691700</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>S</fcl>
+        <fcode>RSTN</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Broxbourne Station</toponymName>
+        <name>Broxbourne Station</name>
+        <lat>51.74697</lat>
+        <lng>-0.01105</lng>
+        <geonameId>6691701</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>S</fcl>
+        <fcode>RSTN</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Broxbornebury Park</toponymName>
+        <name>Broxbornebury Park</name>
+        <lat>51.75252</lat>
+        <lng>-0.03839</lng>
+        <geonameId>6286417</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>S</fcl>
+        <fcode>CSTL</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Marriott Cheshunt</toponymName>
+        <name>Marriott Cheshunt</name>
+        <lat>51.7208</lat>
+        <lng>-0.0324</lng>
+        <geonameId>6512481</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>S</fcl>
+        <fcode>HTL</fcode>
+      </geoname>
+      <geoname>
+        <toponymName>Cheshunt Community Hospital</toponymName>
+        <name>Cheshunt Community Hospital</name>
+        <lat>51.68396</lat>
+        <lng>-0.03951</lng>
+        <geonameId>6289233</geonameId>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <fcl>S</fcl>
+        <fcode>HSP</fcode>
+      </geoname>
+    </geonames>
+  
+/countrySubdivision?lang=en&lat=51.7632&lng=-0.0076&username=dummy:
+  code: 200
+  body: |
+    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+    <geonames>
+      <countrySubdivision>
+        <countryCode>GB</countryCode>
+        <countryName>United Kingdom</countryName>
+        <adminCode1>ENG</adminCode1>
+        <adminName1>England</adminName1>
+        <code type="ISO3166-2">ENG</code>
+        <distance>0.0</distance>
+      </countrySubdivision>
+    </geonames>
diff --git a/test/http/gravatar.yml b/test/http/gravatar.yml
new file mode 100644 (file)
index 0000000..c954bc8
--- /dev/null
@@ -0,0 +1,7 @@
+/avatar/842bc90353fac655450e62223e4e105d?d=404 :
+  code: 404
+  body: Ignored, test for new_g2@openstreetmap.org
+
+/avatar/d2e95ef0ac6933916bf42ff1ee4eca4b?d=404 :
+  code: 200
+  body: Ignored, test for new_g1@openstreetmap.org
index 4431493469cba630ac7917bc866a530272b99aa7..2fd25d184d99219ce7363443813ccf907c6ce9fa 100644 (file)
@@ -1,45 +1,53 @@
-/search?accept-language=&format=xml&q=Hoddesdon&viewbox=-0.559%2C51.766%2C0.836%2C51.217: |
-  <?xml version="1.0" encoding="UTF-8" ?>
-  <searchresults timestamp='Sun, 01 Mar 15 20:02:29 +0000' attribution='Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright' querystring='Hoddesdon' viewbox='-0.559,51.766,0.836,51.217' polygon='false' exclude_place_ids='110741' more_url='http://nominatim.openstreetmap.org/search?format=xml&amp;exclude_place_ids=110741&amp;viewbox=-0.559%2C51.766%2C0.836%2C51.217&amp;q=Hoddesdon'>
-    <place place_id='110741' osm_type='node' osm_id='18007599' place_rank='18' boundingbox="51.7216709,51.8016709,-0.0512898,0.0287102" lat='51.7616709' lon='-0.0112898' display_name='Hoddesdon, Hertfordshire, East of England, England, United Kingdom' class='place' type='town' importance='0.50547792382382' icon='http://nominatim.openstreetmap.org/images/mapicons/poi_place_town.p.20.png'/>
-  </searchresults>
-
-/search?accept-language=&format=xml&q=Broxbourne&viewbox=-0.559%2C51.766%2C0.836%2C51.217: |
-  <?xml version="1.0" encoding="UTF-8" ?>
-  <searchresults timestamp='Sun, 01 Mar 15 20:42:25 +0000' attribution='Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright' querystring='Broxbourne' viewbox='-0.559,51.766,0.836,51.217' polygon='false' exclude_place_ids='150696,127984131,109724' more_url='http://nominatim.openstreetmap.org/search?format=xml&amp;exclude_place_ids=150696,127984131,109724&amp;viewbox=-0.559%2C51.766%2C0.836%2C51.217&amp;q=Broxbourne'>
-    <place place_id='150696' osm_type='node' osm_id='28825933' place_rank='20' boundingbox="51.7265723,51.7665723,-0.0390782,0.0009218" lat='51.7465723' lon='-0.0190782' display_name='Broxbourne, Hertfordshire, East of England, England, United Kingdom' class='place' type='suburb' importance='0.52141385408531' icon='http://nominatim.openstreetmap.org/images/mapicons/poi_place_village.p.20.png'/>
-    <place place_id='127984131' osm_type='relation' osm_id='2677978' place_rank='16' boundingbox="51.6808751,51.7806237,-0.114204,0.0145267" lat='51.73083995' lon='-0.0579457295222991' display_name='Broxbourne, Hertfordshire, East of England, England, United Kingdom' class='boundary' type='administrative' importance='0.46' icon='http://nominatim.openstreetmap.org/images/mapicons/poi_boundary_administrative.p.20.png'/>
-    <place place_id='109724' osm_type='node' osm_id='17044599' place_rank='30' boundingbox="51.7418469,51.7518469,-0.0156773,-0.0056773" lat='51.7468469' lon='-0.0106773' display_name='Broxbourne, Stafford Drive, Broxbourne, Hertfordshire, East of England, England, United Kingdom' class='railway' type='station' importance='0.111' icon='http://nominatim.openstreetmap.org/images/mapicons/transport_train_station2.p.20.png'/>
-  </searchresults>
-
-/reverse?accept-language=&lat=51.7632&lon=-0.0076&zoom=15: |
-  <?xml version="1.0" encoding="UTF-8"?>
-  <reversegeocode timestamp="Sun, 01 Mar 15 22:49:45 +0000" attribution="Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright" querystring="accept-language=&amp;lat=51.7632&amp;lon=-0.0076&amp;zoom=15">
-    <result place_id="150696" osm_type="node" osm_id="28825933" ref="Broxbourne" lat="51.7465723" lon="-0.0190782">Broxbourne, Hertfordshire, East of England, England, United Kingdom</result>
-    <addressparts>
-      <suburb>Broxbourne</suburb>
-      <city>Broxbourne</city>
-      <county>Hertfordshire</county>
-      <state_district>East of England</state_district>
-      <state>England</state>
-      <country>United Kingdom</country>
-      <country_code>gb</country_code>
-    </addressparts>
-  </reversegeocode>
-
-/reverse?accept-language=&lat=51.7632&lon=-0.0076&zoom=17: |
-  <?xml version="1.0" encoding="UTF-8"?>
-  <reversegeocode timestamp="Sun, 01 Mar 15 22:58:16 +0000" attribution="Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright" querystring="accept-language=&amp;lat=51.7632&amp;lon=-0.0076&amp;zoom=17">
-    <result place_id="46484711" osm_type="way" osm_id="3489841" ref="A1170" lat="51.7634883" lon="-0.0088373">Dinant Link Road, Broxbourne, Hertfordshire, East of England, England, EN11 8HX, United Kingdom</result>
-    <addressparts>
-      <road>Dinant Link Road</road>
-      <suburb>Broxbourne</suburb>
-      <city>Broxbourne</city>
-      <county>Hertfordshire</county>
-      <state_district>East of England</state_district>
-      <state>England</state>
-      <postcode>EN11 8HX</postcode>
-      <country>United Kingdom</country>
-      <country_code>gb</country_code>
-    </addressparts>
-  </reversegeocode>
+/search?accept-language=&format=xml&q=Hoddesdon&viewbox=-0.559%2C51.766%2C0.836%2C51.217:
+  code: 200
+  body: |
+    <?xml version="1.0" encoding="UTF-8" ?>
+    <searchresults timestamp='Sun, 01 Mar 15 20:02:29 +0000' attribution='Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright' querystring='Hoddesdon' viewbox='-0.559,51.766,0.836,51.217' polygon='false' exclude_place_ids='110741' more_url='http://nominatim.openstreetmap.org/search?format=xml&amp;exclude_place_ids=110741&amp;viewbox=-0.559%2C51.766%2C0.836%2C51.217&amp;q=Hoddesdon'>
+      <place place_id='110741' osm_type='node' osm_id='18007599' place_rank='18' boundingbox="51.7216709,51.8016709,-0.0512898,0.0287102" lat='51.7616709' lon='-0.0112898' display_name='Hoddesdon, Hertfordshire, East of England, England, United Kingdom' class='place' type='town' importance='0.50547792382382' icon='http://nominatim.openstreetmap.org/images/mapicons/poi_place_town.p.20.png'/>
+    </searchresults>
+  
+/search?accept-language=&format=xml&q=Broxbourne&viewbox=-0.559%2C51.766%2C0.836%2C51.217:
+  code: 200
+  body: |
+    <?xml version="1.0" encoding="UTF-8" ?>
+    <searchresults timestamp='Sun, 01 Mar 15 20:42:25 +0000' attribution='Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright' querystring='Broxbourne' viewbox='-0.559,51.766,0.836,51.217' polygon='false' exclude_place_ids='150696,127984131,109724' more_url='http://nominatim.openstreetmap.org/search?format=xml&amp;exclude_place_ids=150696,127984131,109724&amp;viewbox=-0.559%2C51.766%2C0.836%2C51.217&amp;q=Broxbourne'>
+      <place place_id='150696' osm_type='node' osm_id='28825933' place_rank='20' boundingbox="51.7265723,51.7665723,-0.0390782,0.0009218" lat='51.7465723' lon='-0.0190782' display_name='Broxbourne, Hertfordshire, East of England, England, United Kingdom' class='place' type='suburb' importance='0.52141385408531' icon='http://nominatim.openstreetmap.org/images/mapicons/poi_place_village.p.20.png'/>
+      <place place_id='127984131' osm_type='relation' osm_id='2677978' place_rank='16' boundingbox="51.6808751,51.7806237,-0.114204,0.0145267" lat='51.73083995' lon='-0.0579457295222991' display_name='Broxbourne, Hertfordshire, East of England, England, United Kingdom' class='boundary' type='administrative' importance='0.46' icon='http://nominatim.openstreetmap.org/images/mapicons/poi_boundary_administrative.p.20.png'/>
+      <place place_id='109724' osm_type='node' osm_id='17044599' place_rank='30' boundingbox="51.7418469,51.7518469,-0.0156773,-0.0056773" lat='51.7468469' lon='-0.0106773' display_name='Broxbourne, Stafford Drive, Broxbourne, Hertfordshire, East of England, England, United Kingdom' class='railway' type='station' importance='0.111' icon='http://nominatim.openstreetmap.org/images/mapicons/transport_train_station2.p.20.png'/>
+    </searchresults>
+  
+/reverse?accept-language=&lat=51.7632&lon=-0.0076&zoom=15:
+  code: 200
+  body: |
+    <?xml version="1.0" encoding="UTF-8"?>
+    <reversegeocode timestamp="Sun, 01 Mar 15 22:49:45 +0000" attribution="Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright" querystring="accept-language=&amp;lat=51.7632&amp;lon=-0.0076&amp;zoom=15">
+      <result place_id="150696" osm_type="node" osm_id="28825933" ref="Broxbourne" lat="51.7465723" lon="-0.0190782">Broxbourne, Hertfordshire, East of England, England, United Kingdom</result>
+      <addressparts>
+        <suburb>Broxbourne</suburb>
+        <city>Broxbourne</city>
+        <county>Hertfordshire</county>
+        <state_district>East of England</state_district>
+        <state>England</state>
+        <country>United Kingdom</country>
+        <country_code>gb</country_code>
+      </addressparts>
+    </reversegeocode>
+  
+/reverse?accept-language=&lat=51.7632&lon=-0.0076&zoom=17:
+  code: 200
+  body: |
+    <?xml version="1.0" encoding="UTF-8"?>
+    <reversegeocode timestamp="Sun, 01 Mar 15 22:58:16 +0000" attribution="Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright" querystring="accept-language=&amp;lat=51.7632&amp;lon=-0.0076&amp;zoom=17">
+      <result place_id="46484711" osm_type="way" osm_id="3489841" ref="A1170" lat="51.7634883" lon="-0.0088373">Dinant Link Road, Broxbourne, Hertfordshire, East of England, England, EN11 8HX, United Kingdom</result>
+      <addressparts>
+        <road>Dinant Link Road</road>
+        <suburb>Broxbourne</suburb>
+        <city>Broxbourne</city>
+        <county>Hertfordshire</county>
+        <state_district>East of England</state_district>
+        <state>England</state>
+        <postcode>EN11 8HX</postcode>
+        <country>United Kingdom</country>
+        <country_code>gb</country_code>
+      </addressparts>
+    </reversegeocode>
index 39c585a135a3d1e7cccd80eb5204761b98e20ee9..e9e3f45c41d101925a6b5ff2a891e486ec8a62a6 100644 (file)
@@ -1,6 +1,10 @@
-/cgi/geocoder.fcgi?format=text&postcode=CV4+7AL: |
-  # Easting,Northing,Matched Postcode,Latitude,Longitude
-  429926,276058,'CV4 7AL',52.381748701968,-1.56176420939232
+/cgi/geocoder.fcgi?format=text&postcode=CV4+7AL:
+  code: 200
+  body: |
+    # Easting,Northing,Matched Postcode,Latitude,Longitude
+    429926,276058,'CV4 7AL',52.381748701968,-1.56176420939232
 
-/cgi/geocoder.fcgi?format=text&postcode=XX9+9XX: |
-  Error: Postcode area 'XX' not found, postcode probably invalid
+/cgi/geocoder.fcgi?format=text&postcode=XX9+9XX:
+  code: 200
+  body: |
+    Error: Postcode area 'XX' not found, postcode probably invalid
index 1c58acc611484d732fe4204408d2ffae73c3ea97..f9d94cc17cf1fabc9e386252c445bcd0bbe53ab4 100644 (file)
@@ -163,7 +163,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   def test_visible
-    assert_equal 20, User.visible.count
+    assert_equal 22, User.visible.count
     assert_raise ActiveRecord::RecordNotFound do
       User.visible.find(users(:suspended_user).id)
     end
@@ -173,7 +173,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   def test_active
-    assert_equal 19, User.active.count
+    assert_equal 21, User.active.count
     assert_raise ActiveRecord::RecordNotFound do
       User.active.find(users(:inactive_user).id)
     end
@@ -186,7 +186,7 @@ class UserTest < ActiveSupport::TestCase
   end
 
   def test_identifiable
-    assert_equal 21, User.identifiable.count
+    assert_equal 23, User.identifiable.count
     assert_raise ActiveRecord::RecordNotFound do
       User.identifiable.find(users(:normal_user).id)
     end
index 15b03b4da1919c24623484c5dd6d3ea6d5eebaf0..0baf922704d24af5c7f3ecf7a32ef443868a479e 100644 (file)
@@ -167,8 +167,8 @@ module ActiveSupport
 
         OSM.http_client = Faraday.new do |builder|
           builder.adapter :test do |stub|
-            stubs.each do |url, body|
-              stub.get(url) { |_env| [200, {}, body] }
+            stubs.each do |url, response|
+              stub.get(url) { |_env| [response["code"], {}, response["body"]] }
             end
           end
         end