Hopefully fix the old_node_controller tests.
This commit is contained in:
parent
ac126bced1
commit
0ad724bd92
3 changed files with 75 additions and 13 deletions
|
@ -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
|
||||
|
|
4
test/fixtures/changesets.yml
vendored
4
test/fixtures/changesets.yml
vendored
|
@ -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 %>
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue