X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/e79fd0763854f8cf41aefd7364c6bdf476280811..c8ee1351049ef1bb4d7b50d071b2a96154266d1d:/test/functional/relation_controller_test.rb diff --git a/test/functional/relation_controller_test.rb b/test/functional/relation_controller_test.rb index d44490036..f52981233 100644 --- a/test/functional/relation_controller_test.rb +++ b/test/functional/relation_controller_test.rb @@ -117,10 +117,45 @@ class RelationControllerTest < ActionController::TestCase assert_response :success + ### # create an relation with a node as member + # This time try with a role attribute in the relation nid = current_nodes(:used_node_1).id content "" + - "" + + "" + + "" + put :create + # hope for success + assert_response :success, + "relation upload did not return success status" + # read id of created relation and search for it + relationid = @response.body + checkrelation = Relation.find(relationid) + assert_not_nil checkrelation, + "uploaded relation not found in data base after upload" + # compare values + assert_equal checkrelation.members.length, 1, + "saved relation does not contain exactly one member" + assert_equal checkrelation.tags.length, 1, + "saved relation does not contain exactly one tag" + assert_equal changeset_id, checkrelation.changeset.id, + "saved relation does not belong in the changeset it was assigned to" + assert_equal users(:normal_user).id, checkrelation.changeset.user_id, + "saved relation does not belong to user that created it" + assert_equal true, checkrelation.visible, + "saved relation is not visible" + # ok the relation is there but can we also retrieve it? + + get :read, :id => relationid + assert_response :success + + + ### + # create an relation with a node as member, this time test that we don't + # need a role attribute to be included + nid = current_nodes(:used_node_1).id + content "" + + ""+ "" put :create # hope for success @@ -147,6 +182,7 @@ class RelationControllerTest < ActionController::TestCase get :read, :id => relationid assert_response :success + ### # create an relation with a way and a node as members nid = current_nodes(:used_node_1).id wid = current_ways(:used_way).id @@ -200,6 +236,27 @@ class RelationControllerTest < ActionController::TestCase "relation upload with invalid node did not return 'precondition failed'" end + # ------------------------------------- + # Test creating a relation, with some invalid XML + # ------------------------------------- + def test_create_invalid_xml + basic_authorization "test@openstreetmap.org", "test" + + # put the relation in a dummy fixture changeset that works + changeset_id = changesets(:normal_user_first_change).id + + # create some xml that should return an error + content "" + + "" + + "" + put :create + # expect failure + assert_response :bad_request + assert_match(/Cannot parse valid relation from xml string/, @response.body) + assert_match(/The type is not allowed only, /, @response.body) + end + + # ------------------------------------- # Test deleting relations. # ------------------------------------- @@ -219,7 +276,8 @@ class RelationControllerTest < ActionController::TestCase # try to delete without specifying a changeset content "" delete :delete, :id => current_relations(:visible_relation).id - assert_response :conflict + assert_response :bad_request + assert_match(/You are missing the required changeset in the relation/, @response.body) # try to delete with an invalid (closed) changeset content update_changeset(current_relations(:visible_relation).to_xml, @@ -482,8 +540,7 @@ OSM ## # parse some xml def xml_parse(xml) - parser = XML::Parser.new - parser.string = xml + parser = XML::Parser.string(xml) parser.parse end end