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'
|
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_presence_of :changeset_id, :timestamp
|
||||||
validates_inclusion_of :visible, :in => [ true, false ]
|
validates_inclusion_of :visible, :in => [ true, false ]
|
||||||
validates_numericality_of :latitude, :longitude
|
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"
|
closed_at: "2007-01-02 00:00:00"
|
||||||
num_changes: 0
|
num_changes: 0
|
||||||
|
|
||||||
normal_user_version_change:
|
public_user_version_change:
|
||||||
id: 4
|
id: 4
|
||||||
user_id: 1
|
user_id: 2
|
||||||
created_at: "2008-01-01 00:00:00"
|
created_at: "2008-01-01 00:00:00"
|
||||||
closed_at: <%= DateTime.now + Rational(1,24) %>
|
closed_at: <%= DateTime.now + Rational(1,24) %>
|
||||||
min_lon: <%= 1 * SCALE %>
|
min_lon: <%= 1 * SCALE %>
|
||||||
|
|
|
@ -12,7 +12,11 @@ class OldNodeControllerTest < ActionController::TestCase
|
||||||
# test the version call by submitting several revisions of a new node
|
# test the version call by submitting several revisions of a new node
|
||||||
# to the API and ensuring that later calls to version return the
|
# to the API and ensuring that later calls to version return the
|
||||||
# matching versions of the object.
|
# matching versions of the object.
|
||||||
|
#
|
||||||
|
##
|
||||||
|
# FIXME Move this test to being an integration test since it spans multiple controllers
|
||||||
def test_version
|
def test_version
|
||||||
|
## First try this with a non-public user
|
||||||
basic_authorization(users(:normal_user).email, "test")
|
basic_authorization(users(:normal_user).email, "test")
|
||||||
changeset_id = changesets(:normal_user_first_change).id
|
changeset_id = changesets(:normal_user_first_change).id
|
||||||
|
|
||||||
|
@ -28,6 +32,57 @@ class OldNodeControllerTest < ActionController::TestCase
|
||||||
# save a version for later checking
|
# save a version for later checking
|
||||||
versions[xml_node['version']] = xml_doc.to_s
|
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
|
# randomly move the node about
|
||||||
20.times do
|
20.times do
|
||||||
# move the node somewhere else
|
# move the node somewhere else
|
||||||
|
@ -74,6 +129,18 @@ class OldNodeControllerTest < ActionController::TestCase
|
||||||
end
|
end
|
||||||
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
|
# Test that getting the current version is identical to picking
|
||||||
# that version with the version URI call.
|
# that version with the version URI call.
|
||||||
|
@ -121,13 +188,4 @@ class OldNodeControllerTest < ActionController::TestCase
|
||||||
def precision(f)
|
def precision(f)
|
||||||
return (f * GeoRecord::SCALE).round.to_f / GeoRecord::SCALE
|
return (f * GeoRecord::SCALE).round.to_f / GeoRecord::SCALE
|
||||||
end
|
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
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue