Hopefully fix the old_node_controller tests.

This commit is contained in:
Shaun McDonald 2009-04-21 17:07:14 +00:00
parent ac126bced1
commit 0ad724bd92
3 changed files with 75 additions and 13 deletions

View file

@ -4,6 +4,10 @@ class OldNode < ActiveRecord::Base
set_table_name 'nodes'
# Should probably have the composite primary key set in the model
# however there are some weird bugs happening when you do
#set_primary_keys :id, :version
validates_presence_of :changeset_id, :timestamp
validates_inclusion_of :visible, :in => [ true, false ]
validates_numericality_of :latitude, :longitude

View file

@ -35,9 +35,9 @@ public_user_closed_change:
closed_at: "2007-01-02 00:00:00"
num_changes: 0
normal_user_version_change:
public_user_version_change:
id: 4
user_id: 1
user_id: 2
created_at: "2008-01-01 00:00:00"
closed_at: <%= DateTime.now + Rational(1,24) %>
min_lon: <%= 1 * SCALE %>

View file

@ -12,7 +12,11 @@ class OldNodeControllerTest < ActionController::TestCase
# test the version call by submitting several revisions of a new node
# to the API and ensuring that later calls to version return the
# matching versions of the object.
#
##
# FIXME Move this test to being an integration test since it spans multiple controllers
def test_version
## First try this with a non-public user
basic_authorization(users(:normal_user).email, "test")
changeset_id = changesets(:normal_user_first_change).id
@ -28,6 +32,57 @@ class OldNodeControllerTest < ActionController::TestCase
# save a version for later checking
versions[xml_node['version']] = xml_doc.to_s
# randomly move the node about
20.times do
# move the node somewhere else
xml_node['lat'] = precision(rand * 180 - 90).to_s
xml_node['lon'] = precision(rand * 360 - 180).to_s
with_controller(NodeController.new) do
content xml_doc
put :update, :id => nodeid
assert_response :forbidden, "Should have rejected node update"
xml_node['version'] = @response.body.to_s
end
# save a version for later checking
versions[xml_node['version']] = xml_doc.to_s
end
# add a bunch of random tags
30.times do
xml_tag = XML::Node.new("tag")
xml_tag['k'] = random_string
xml_tag['v'] = random_string
xml_node << xml_tag
with_controller(NodeController.new) do
content xml_doc
put :update, :id => nodeid
assert_response :forbidden,
"should have rejected node #{nodeid} (#{@response.body}) with forbidden"
xml_node['version'] = @response.body.to_s
end
# save a version for later checking
versions[xml_node['version']] = xml_doc.to_s
end
# probably should check that they didn't get written to the database
## Now do it with the public user
basic_authorization(users(:public_user).email, "test")
changeset_id = changesets(:public_user_first_change).id
# setup a simple XML node
xml_doc = current_nodes(:node_with_versions).to_xml
xml_node = xml_doc.find("//osm/node").first
nodeid = current_nodes(:node_with_versions).id
# keep a hash of the versions => string, as we'll need something
# to test against later
versions = Hash.new
# save a version for later checking
versions[xml_node['version']] = xml_doc.to_s
# randomly move the node about
20.times do
# move the node somewhere else
@ -74,6 +129,18 @@ class OldNodeControllerTest < ActionController::TestCase
end
end
def test_not_found_version
check_not_found_id_version(70000,312344)
check_not_found_id_version(-1, -13)
check_not_found_id_version(nodes(:visible_node).id, 24354)
check_not_found_id_version(24356, nodes(:visible_node).version)
end
def check_not_found_id_version(id, version)
get :version, :id => id, :version => version
assert_response :not_found
end
##
# Test that getting the current version is identical to picking
# that version with the version URI call.
@ -121,13 +188,4 @@ class OldNodeControllerTest < ActionController::TestCase
def precision(f)
return (f * GeoRecord::SCALE).round.to_f / GeoRecord::SCALE
end
def basic_authorization(user, pass)
@request.env["HTTP_AUTHORIZATION"] = "Basic %s" % Base64.encode64("#{user}:#{pass}")
end
def content(c)
@request.env["RAW_POST_DATA"] = c.to_s
end
end