fix more of the tests, particularly changeset controller. Needed more fixtures to fix them. The last failing changeset controller test needs some more work on the fixtures.
This commit is contained in:
parent
dcca3ab0e9
commit
db17af19bb
4 changed files with 83 additions and 50 deletions
7
test/fixtures/current_relations.yml
vendored
7
test/fixtures/current_relations.yml
vendored
|
@ -32,3 +32,10 @@ public_used_relation:
|
||||||
timestamp: 2009-04-22 00:30:33
|
timestamp: 2009-04-22 00:30:33
|
||||||
visible: true
|
visible: true
|
||||||
version: 1
|
version: 1
|
||||||
|
|
||||||
|
public_visible_relation:
|
||||||
|
id: 6
|
||||||
|
changeset_id: 2
|
||||||
|
timestamp: 2009-04-22 00:34:12
|
||||||
|
visible: true
|
||||||
|
version: 1
|
||||||
|
|
7
test/fixtures/relations.yml
vendored
7
test/fixtures/relations.yml
vendored
|
@ -32,3 +32,10 @@ public_used_relation:
|
||||||
timestamp: 2009-04-22 00:30:03
|
timestamp: 2009-04-22 00:30:03
|
||||||
visible: true
|
visible: true
|
||||||
version: 1
|
version: 1
|
||||||
|
|
||||||
|
public_visible_relation:
|
||||||
|
id: 6
|
||||||
|
changeset_id: 2
|
||||||
|
timestamp: 2009-04-22 00:34:12
|
||||||
|
visible: true
|
||||||
|
version: 1
|
||||||
|
|
|
@ -98,9 +98,21 @@ class ChangesetControllerTest < ActionController::TestCase
|
||||||
##
|
##
|
||||||
# test that the user who opened a change can close it
|
# test that the user who opened a change can close it
|
||||||
def test_close
|
def test_close
|
||||||
basic_authorization "test@openstreetmap.org", "test"
|
## Try without authentication
|
||||||
|
put :close, :id => changesets(:public_user_first_change).id
|
||||||
|
assert_response :unauthorized
|
||||||
|
|
||||||
cs_id = changesets(:normal_user_first_change).id
|
|
||||||
|
## Try using the non-public user
|
||||||
|
basic_authorization users(:normal_user).email, "test"
|
||||||
|
put :close, :id => changesets(:normal_user_first_change).id
|
||||||
|
assert_require_public_data
|
||||||
|
|
||||||
|
|
||||||
|
## The try with the public user
|
||||||
|
basic_authorization users(:public_user).email, "test"
|
||||||
|
|
||||||
|
cs_id = changesets(:public_user_first_change).id
|
||||||
put :close, :id => cs_id
|
put :close, :id => cs_id
|
||||||
assert_response :success
|
assert_response :success
|
||||||
|
|
||||||
|
@ -113,7 +125,7 @@ class ChangesetControllerTest < ActionController::TestCase
|
||||||
##
|
##
|
||||||
# test that a different user can't close another user's changeset
|
# test that a different user can't close another user's changeset
|
||||||
def test_close_invalid
|
def test_close_invalid
|
||||||
basic_authorization user(:public_user).email, "test"
|
basic_authorization users(:public_user).email, "test"
|
||||||
|
|
||||||
put :close, :id => changesets(:normal_user_first_change).id
|
put :close, :id => changesets(:normal_user_first_change).id
|
||||||
assert_response :conflict
|
assert_response :conflict
|
||||||
|
@ -227,22 +239,23 @@ EOF
|
||||||
##
|
##
|
||||||
# upload something which creates new objects using placeholders
|
# upload something which creates new objects using placeholders
|
||||||
def test_upload_create_valid
|
def test_upload_create_valid
|
||||||
basic_authorization "test@openstreetmap.org", "test"
|
basic_authorization users(:public_user).email, "test"
|
||||||
|
cs_id = changesets(:public_user_first_change).id
|
||||||
|
|
||||||
# simple diff to create a node way and relation using placeholders
|
# simple diff to create a node way and relation using placeholders
|
||||||
diff = <<EOF
|
diff = <<EOF
|
||||||
<osmChange>
|
<osmChange>
|
||||||
<create>
|
<create>
|
||||||
<node id='-1' lon='0' lat='0' changeset='1'>
|
<node id='-1' lon='0' lat='0' changeset='#{cs_id}'>
|
||||||
<tag k='foo' v='bar'/>
|
<tag k='foo' v='bar'/>
|
||||||
<tag k='baz' v='bat'/>
|
<tag k='baz' v='bat'/>
|
||||||
</node>
|
</node>
|
||||||
<way id='-1' changeset='1'>
|
<way id='-1' changeset='#{cs_id}'>
|
||||||
<nd ref='3'/>
|
<nd ref='3'/>
|
||||||
</way>
|
</way>
|
||||||
</create>
|
</create>
|
||||||
<create>
|
<create>
|
||||||
<relation id='-1' changeset='1'>
|
<relation id='-1' changeset='#{cs_id}'>
|
||||||
<member type='way' role='some' ref='3'/>
|
<member type='way' role='some' ref='3'/>
|
||||||
<member type='node' role='some' ref='5'/>
|
<member type='node' role='some' ref='5'/>
|
||||||
<member type='relation' role='some' ref='3'/>
|
<member type='relation' role='some' ref='3'/>
|
||||||
|
@ -253,7 +266,7 @@ EOF
|
||||||
|
|
||||||
# upload it
|
# upload it
|
||||||
content diff
|
content diff
|
||||||
post :upload, :id => 1
|
post :upload, :id => cs_id
|
||||||
assert_response :success,
|
assert_response :success,
|
||||||
"can't upload a simple valid creation to changeset: #{@response.body}"
|
"can't upload a simple valid creation to changeset: #{@response.body}"
|
||||||
|
|
||||||
|
@ -289,20 +302,20 @@ EOF
|
||||||
# test a complex delete where we delete elements which rely on eachother
|
# test a complex delete where we delete elements which rely on eachother
|
||||||
# in the same transaction.
|
# in the same transaction.
|
||||||
def test_upload_delete
|
def test_upload_delete
|
||||||
basic_authorization "test@openstreetmap.org", "test"
|
basic_authorization users(:public_user).display_name, "test"
|
||||||
|
|
||||||
diff = XML::Document.new
|
diff = XML::Document.new
|
||||||
diff.root = XML::Node.new "osmChange"
|
diff.root = XML::Node.new "osmChange"
|
||||||
delete = XML::Node.new "delete"
|
delete = XML::Node.new "delete"
|
||||||
diff.root << delete
|
diff.root << delete
|
||||||
delete << current_relations(:visible_relation).to_xml_node
|
delete << current_relations(:public_used_relation).to_xml_node
|
||||||
delete << current_relations(:used_relation).to_xml_node
|
delete << current_relations(:public_visible_relation).to_xml_node
|
||||||
delete << current_ways(:used_way).to_xml_node
|
delete << current_ways(:used_way).to_xml_node
|
||||||
delete << current_nodes(:node_used_by_relationship).to_xml_node
|
delete << current_nodes(:node_used_by_relationship).to_xml_node
|
||||||
|
|
||||||
# upload it
|
# upload it
|
||||||
content diff
|
content diff
|
||||||
post :upload, :id => 1
|
post :upload, :id => changesets(:public_user_first_change).id
|
||||||
assert_response :success,
|
assert_response :success,
|
||||||
"can't upload a deletion diff to changeset: #{@response.body}"
|
"can't upload a deletion diff to changeset: #{@response.body}"
|
||||||
|
|
||||||
|
@ -322,10 +335,10 @@ EOF
|
||||||
# test uploading a delete with no lat/lon, as they are optional in
|
# test uploading a delete with no lat/lon, as they are optional in
|
||||||
# the osmChange spec.
|
# the osmChange spec.
|
||||||
def test_upload_nolatlon_delete
|
def test_upload_nolatlon_delete
|
||||||
basic_authorization "test@openstreetmap.org", "test"
|
basic_authorization users(:public_user).display_name, "test"
|
||||||
|
|
||||||
node = current_nodes(:visible_node)
|
node = current_nodes(:public_visible_node)
|
||||||
cs = changesets(:normal_user_first_change)
|
cs = changesets(:public_user_first_change)
|
||||||
diff = "<osmChange><delete><node id='#{node.id}' version='#{node.version}' changeset='#{cs.id}'/></delete></osmChange>"
|
diff = "<osmChange><delete><node id='#{node.id}' version='#{node.version}' changeset='#{cs.id}'/></delete></osmChange>"
|
||||||
|
|
||||||
# upload it
|
# upload it
|
||||||
|
@ -343,7 +356,7 @@ EOF
|
||||||
|
|
||||||
def test_repeated_changeset_create
|
def test_repeated_changeset_create
|
||||||
30.times do
|
30.times do
|
||||||
basic_authorization "test@openstreetmap.org", "test"
|
basic_authorization users(:public_user).email, "test"
|
||||||
|
|
||||||
# create a temporary changeset
|
# create a temporary changeset
|
||||||
content "<osm><changeset>" +
|
content "<osm><changeset>" +
|
||||||
|
@ -361,19 +374,19 @@ EOF
|
||||||
# test that deleting stuff in a transaction doesn't bypass the checks
|
# test that deleting stuff in a transaction doesn't bypass the checks
|
||||||
# to ensure that used elements are not deleted.
|
# to ensure that used elements are not deleted.
|
||||||
def test_upload_delete_invalid
|
def test_upload_delete_invalid
|
||||||
basic_authorization "test@openstreetmap.org", "test"
|
basic_authorization users(:public_user).email, "test"
|
||||||
|
|
||||||
diff = XML::Document.new
|
diff = XML::Document.new
|
||||||
diff.root = XML::Node.new "osmChange"
|
diff.root = XML::Node.new "osmChange"
|
||||||
delete = XML::Node.new "delete"
|
delete = XML::Node.new "delete"
|
||||||
diff.root << delete
|
diff.root << delete
|
||||||
delete << current_relations(:visible_relation).to_xml_node
|
delete << current_relations(:public_visible_relation).to_xml_node
|
||||||
delete << current_ways(:used_way).to_xml_node
|
delete << current_ways(:used_way).to_xml_node
|
||||||
delete << current_nodes(:node_used_by_relationship).to_xml_node
|
delete << current_nodes(:node_used_by_relationship).to_xml_node
|
||||||
|
|
||||||
# upload it
|
# upload it
|
||||||
content diff
|
content diff
|
||||||
post :upload, :id => 1
|
post :upload, :id => 2
|
||||||
assert_response :precondition_failed,
|
assert_response :precondition_failed,
|
||||||
"shouldn't be able to upload a invalid deletion diff: #{@response.body}"
|
"shouldn't be able to upload a invalid deletion diff: #{@response.body}"
|
||||||
|
|
||||||
|
@ -387,23 +400,24 @@ EOF
|
||||||
# upload something which creates new objects and inserts them into
|
# upload something which creates new objects and inserts them into
|
||||||
# existing containers using placeholders.
|
# existing containers using placeholders.
|
||||||
def test_upload_complex
|
def test_upload_complex
|
||||||
basic_authorization "test@openstreetmap.org", "test"
|
basic_authorization users(:public_user).email, "test"
|
||||||
|
cs_id = changesets(:public_user_first_change).id
|
||||||
|
|
||||||
# simple diff to create a node way and relation using placeholders
|
# simple diff to create a node way and relation using placeholders
|
||||||
diff = <<EOF
|
diff = <<EOF
|
||||||
<osmChange>
|
<osmChange>
|
||||||
<create>
|
<create>
|
||||||
<node id='-1' lon='0' lat='0' changeset='1'>
|
<node id='-1' lon='0' lat='0' changeset='#{cs_id}'>
|
||||||
<tag k='foo' v='bar'/>
|
<tag k='foo' v='bar'/>
|
||||||
<tag k='baz' v='bat'/>
|
<tag k='baz' v='bat'/>
|
||||||
</node>
|
</node>
|
||||||
</create>
|
</create>
|
||||||
<modify>
|
<modify>
|
||||||
<way id='1' changeset='1' version='1'>
|
<way id='1' changeset='#{cs_id}' version='1'>
|
||||||
<nd ref='-1'/>
|
<nd ref='-1'/>
|
||||||
<nd ref='3'/>
|
<nd ref='3'/>
|
||||||
</way>
|
</way>
|
||||||
<relation id='1' changeset='1' version='1'>
|
<relation id='1' changeset='#{cs_id}' version='1'>
|
||||||
<member type='way' role='some' ref='3'/>
|
<member type='way' role='some' ref='3'/>
|
||||||
<member type='node' role='some' ref='-1'/>
|
<member type='node' role='some' ref='-1'/>
|
||||||
<member type='relation' role='some' ref='3'/>
|
<member type='relation' role='some' ref='3'/>
|
||||||
|
@ -414,7 +428,7 @@ EOF
|
||||||
|
|
||||||
# upload it
|
# upload it
|
||||||
content diff
|
content diff
|
||||||
post :upload, :id => 1
|
post :upload, :id => cs_id
|
||||||
assert_response :success,
|
assert_response :success,
|
||||||
"can't upload a complex diff to changeset: #{@response.body}"
|
"can't upload a complex diff to changeset: #{@response.body}"
|
||||||
|
|
||||||
|
@ -442,19 +456,20 @@ EOF
|
||||||
# create a diff which references several changesets, which should cause
|
# create a diff which references several changesets, which should cause
|
||||||
# a rollback and none of the diff gets committed
|
# a rollback and none of the diff gets committed
|
||||||
def test_upload_invalid_changesets
|
def test_upload_invalid_changesets
|
||||||
basic_authorization "test@openstreetmap.org", "test"
|
basic_authorization users(:public_user).email, "test"
|
||||||
|
cs_id = changesets(:public_user_first_change).id
|
||||||
|
|
||||||
# simple diff to create a node way and relation using placeholders
|
# simple diff to create a node way and relation using placeholders
|
||||||
diff = <<EOF
|
diff = <<EOF
|
||||||
<osmChange>
|
<osmChange>
|
||||||
<modify>
|
<modify>
|
||||||
<node id='1' lon='0' lat='0' changeset='1' version='1'/>
|
<node id='1' lon='0' lat='0' changeset='#{cs_id}' version='1'/>
|
||||||
<way id='1' changeset='1' version='1'>
|
<way id='1' changeset='#{cs_id}' version='1'>
|
||||||
<nd ref='3'/>
|
<nd ref='3'/>
|
||||||
</way>
|
</way>
|
||||||
</modify>
|
</modify>
|
||||||
<modify>
|
<modify>
|
||||||
<relation id='1' changeset='1' version='1'>
|
<relation id='1' changeset='#{cs_id}' version='1'>
|
||||||
<member type='way' role='some' ref='3'/>
|
<member type='way' role='some' ref='3'/>
|
||||||
<member type='node' role='some' ref='5'/>
|
<member type='node' role='some' ref='5'/>
|
||||||
<member type='relation' role='some' ref='3'/>
|
<member type='relation' role='some' ref='3'/>
|
||||||
|
@ -475,7 +490,7 @@ EOF
|
||||||
|
|
||||||
# upload it
|
# upload it
|
||||||
content diff
|
content diff
|
||||||
post :upload, :id => 1
|
post :upload, :id => cs_id
|
||||||
assert_response :conflict,
|
assert_response :conflict,
|
||||||
"uploading a diff with multiple changsets should have failed"
|
"uploading a diff with multiple changsets should have failed"
|
||||||
|
|
||||||
|
@ -487,7 +502,8 @@ EOF
|
||||||
##
|
##
|
||||||
# upload multiple versions of the same element in the same diff.
|
# upload multiple versions of the same element in the same diff.
|
||||||
def test_upload_multiple_valid
|
def test_upload_multiple_valid
|
||||||
basic_authorization "test@openstreetmap.org", "test"
|
basic_authorization users(:public_user).email, "test"
|
||||||
|
cs_id = changesets(:public_user_first_change).id
|
||||||
|
|
||||||
# change the location of a node multiple times, each time referencing
|
# change the location of a node multiple times, each time referencing
|
||||||
# the last version. doesn't this depend on version numbers being
|
# the last version. doesn't this depend on version numbers being
|
||||||
|
@ -495,21 +511,21 @@ EOF
|
||||||
diff = <<EOF
|
diff = <<EOF
|
||||||
<osmChange>
|
<osmChange>
|
||||||
<modify>
|
<modify>
|
||||||
<node id='1' lon='0' lat='0' changeset='1' version='1'/>
|
<node id='1' lon='0' lat='0' changeset='#{cs_id}' version='1'/>
|
||||||
<node id='1' lon='1' lat='0' changeset='1' version='2'/>
|
<node id='1' lon='1' lat='0' changeset='#{cs_id}' version='2'/>
|
||||||
<node id='1' lon='1' lat='1' changeset='1' version='3'/>
|
<node id='1' lon='1' lat='1' changeset='#{cs_id}' version='3'/>
|
||||||
<node id='1' lon='1' lat='2' changeset='1' version='4'/>
|
<node id='1' lon='1' lat='2' changeset='#{cs_id}' version='4'/>
|
||||||
<node id='1' lon='2' lat='2' changeset='1' version='5'/>
|
<node id='1' lon='2' lat='2' changeset='#{cs_id}' version='5'/>
|
||||||
<node id='1' lon='3' lat='2' changeset='1' version='6'/>
|
<node id='1' lon='3' lat='2' changeset='#{cs_id}' version='6'/>
|
||||||
<node id='1' lon='3' lat='3' changeset='1' version='7'/>
|
<node id='1' lon='3' lat='3' changeset='#{cs_id}' version='7'/>
|
||||||
<node id='1' lon='9' lat='9' changeset='1' version='8'/>
|
<node id='1' lon='9' lat='9' changeset='#{cs_id}' version='8'/>
|
||||||
</modify>
|
</modify>
|
||||||
</osmChange>
|
</osmChange>
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# upload it
|
# upload it
|
||||||
content diff
|
content diff
|
||||||
post :upload, :id => 1
|
post :upload, :id => cs_id
|
||||||
assert_response :success,
|
assert_response :success,
|
||||||
"can't upload multiple versions of an element in a diff: #{@response.body}"
|
"can't upload multiple versions of an element in a diff: #{@response.body}"
|
||||||
|
|
||||||
|
@ -523,20 +539,21 @@ EOF
|
||||||
# upload multiple versions of the same element in the same diff, but
|
# upload multiple versions of the same element in the same diff, but
|
||||||
# keep the version numbers the same.
|
# keep the version numbers the same.
|
||||||
def test_upload_multiple_duplicate
|
def test_upload_multiple_duplicate
|
||||||
basic_authorization "test@openstreetmap.org", "test"
|
basic_authorization users(:public_user).email, "test"
|
||||||
|
cs_id = changesets(:public_user_first_change).id
|
||||||
|
|
||||||
diff = <<EOF
|
diff = <<EOF
|
||||||
<osmChange>
|
<osmChange>
|
||||||
<modify>
|
<modify>
|
||||||
<node id='1' lon='0' lat='0' changeset='1' version='1'/>
|
<node id='1' lon='0' lat='0' changeset='#{cs_id}' version='1'/>
|
||||||
<node id='1' lon='1' lat='1' changeset='1' version='1'/>
|
<node id='1' lon='1' lat='1' changeset='#{cs_id}' version='1'/>
|
||||||
</modify>
|
</modify>
|
||||||
</osmChange>
|
</osmChange>
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# upload it
|
# upload it
|
||||||
content diff
|
content diff
|
||||||
post :upload, :id => 1
|
post :upload, :id => cs_id
|
||||||
assert_response :conflict,
|
assert_response :conflict,
|
||||||
"shouldn't be able to upload the same element twice in a diff: #{@response.body}"
|
"shouldn't be able to upload the same element twice in a diff: #{@response.body}"
|
||||||
end
|
end
|
||||||
|
@ -544,19 +561,20 @@ EOF
|
||||||
##
|
##
|
||||||
# try to upload some elements without specifying the version
|
# try to upload some elements without specifying the version
|
||||||
def test_upload_missing_version
|
def test_upload_missing_version
|
||||||
basic_authorization "test@openstreetmap.org", "test"
|
basic_authorization users(:public_user).email, "test"
|
||||||
|
cs_id = changesets(:public_user_first_change).id
|
||||||
|
|
||||||
diff = <<EOF
|
diff = <<EOF
|
||||||
<osmChange>
|
<osmChange>
|
||||||
<modify>
|
<modify>
|
||||||
<node id='1' lon='1' lat='1' changeset='1'/>
|
<node id='1' lon='1' lat='1' changeset='cs_id'/>
|
||||||
</modify>
|
</modify>
|
||||||
</osmChange>
|
</osmChange>
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# upload it
|
# upload it
|
||||||
content diff
|
content diff
|
||||||
post :upload, :id => 1
|
post :upload, :id => cs_id
|
||||||
assert_response :bad_request,
|
assert_response :bad_request,
|
||||||
"shouldn't be able to upload an element without version: #{@response.body}"
|
"shouldn't be able to upload an element without version: #{@response.body}"
|
||||||
end
|
end
|
||||||
|
@ -564,17 +582,18 @@ EOF
|
||||||
##
|
##
|
||||||
# try to upload with commands other than create, modify, or delete
|
# try to upload with commands other than create, modify, or delete
|
||||||
def test_action_upload_invalid
|
def test_action_upload_invalid
|
||||||
basic_authorization "test@openstreetmap.org", "test"
|
basic_authorization users(:public_user).email, "test"
|
||||||
|
cs_id = changesets(:public_user_first_change).id
|
||||||
|
|
||||||
diff = <<EOF
|
diff = <<EOF
|
||||||
<osmChange>
|
<osmChange>
|
||||||
<ping>
|
<ping>
|
||||||
<node id='1' lon='1' lat='1' changeset='1' />
|
<node id='1' lon='1' lat='1' changeset='#{cs_id}' />
|
||||||
</ping>
|
</ping>
|
||||||
</osmChange>
|
</osmChange>
|
||||||
EOF
|
EOF
|
||||||
content diff
|
content diff
|
||||||
post :upload, :id => 1
|
post :upload, :id => cs_id
|
||||||
assert_response :bad_request, "Shouldn't be able to upload a diff with the action ping"
|
assert_response :bad_request, "Shouldn't be able to upload a diff with the action ping"
|
||||||
assert_equal @response.body, "Unknown action ping, choices are create, modify, delete."
|
assert_equal @response.body, "Unknown action ping, choices are create, modify, delete."
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,7 +4,7 @@ class RelationTest < Test::Unit::TestCase
|
||||||
api_fixtures
|
api_fixtures
|
||||||
|
|
||||||
def test_relation_count
|
def test_relation_count
|
||||||
assert_equal 5, Relation.count
|
assert_equal 6, Relation.count
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue