From 1e5782f5795b5e22cae191c2956d18defce6dd66 Mon Sep 17 00:00:00 2001 From: Matt Amos Date: Mon, 13 Oct 2008 15:40:32 +0000 Subject: [PATCH 1/1] Fixed up way controller tests for API 0.6. --- app/controllers/way_controller.rb | 2 +- test/fixtures/changesets.yml | 5 ++++ test/functional/way_controller_test.rb | 41 ++++++++++++++++++++------ 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/app/controllers/way_controller.rb b/app/controllers/way_controller.rb index e7cf0f7f1..ac017ca6b 100644 --- a/app/controllers/way_controller.rb +++ b/app/controllers/way_controller.rb @@ -68,7 +68,7 @@ class WayController < ApplicationController way = Way.find(params[:id]) new_way = Way.from_xml(request.raw_post) if new_way and new_way.id == way.id - way.delete_with_history(@user) + way.delete_with_history(new_way, @user) # if we get here, all is fine, otherwise something will catch below. render :nothing => true diff --git a/test/fixtures/changesets.yml b/test/fixtures/changesets.yml index e676ffa7a..de6f4f786 100644 --- a/test/fixtures/changesets.yml +++ b/test/fixtures/changesets.yml @@ -11,3 +11,8 @@ second_user_first_change: created_at: "2008-05-01 01:23:45" open: 1 +normal_user_closed_change: + id: 3 + user_id: 1 + created_at: "2007-01-01 00:00:00" + open: 0 diff --git a/test/functional/way_controller_test.rb b/test/functional/way_controller_test.rb index 558e45489..fbc05086f 100644 --- a/test/functional/way_controller_test.rb +++ b/test/functional/way_controller_test.rb @@ -18,7 +18,7 @@ class WayControllerTest < Test::Unit::TestCase end def content(c) - @request.env["RAW_POST_DATA"] = c + @request.env["RAW_POST_DATA"] = c.to_s end # ------------------------------------- @@ -76,10 +76,13 @@ class WayControllerTest < Test::Unit::TestCase nid2 = current_nodes(:used_node_2).id basic_authorization "test@openstreetmap.org", "test" - # FIXME create a new changeset and use the id that is returned for the next step + # use the first user's open changeset + changeset_id = changesets(:normal_user_first_change).id # create a way with pre-existing nodes - content "" + content "" + + "" + + "" put :create # hope for success assert_response :success, @@ -96,7 +99,9 @@ class WayControllerTest < Test::Unit::TestCase "saved way does not contain the right node on pos 0" assert_equal checkway.nds[1], nid2, "saved way does not contain the right node on pos 1" - assert_equal users(:normal_user).id, checkway.user_id, + assert_equal checkway.changeset_id, changeset_id, + "saved way does not belong to the correct changeset" + assert_equal users(:normal_user).id, checkway.changeset.user_id, "saved way does not belong to user that created it" assert_equal true, checkway.visible, "saved way is not visible" @@ -109,20 +114,34 @@ class WayControllerTest < Test::Unit::TestCase def test_create_invalid basic_authorization "test@openstreetmap.org", "test" - # FIXME All of these will fail because they don't have a valid changeset + # use the first user's open changeset + open_changeset_id = changesets(:normal_user_first_change).id + closed_changeset_id = changesets(:normal_user_closed_change).id + nid1 = current_nodes(:used_node_1).id + # create a way with non-existing node - content "" + content "" + + "" put :create # expect failure assert_response :precondition_failed, "way upload with invalid node did not return 'precondition failed'" # create a way with no nodes - content "" + content "" + + "" put :create # expect failure assert_response :precondition_failed, "way upload with no node did not return 'precondition failed'" + + # create a way inside a closed changeset + content "" + + "" + put :create + # expect failure + assert_response :precondition_failed, + "way upload to closed changeset did not return 'precondition failed'" end # ------------------------------------- @@ -130,7 +149,6 @@ class WayControllerTest < Test::Unit::TestCase # ------------------------------------- def test_delete - # first try to delete way without auth delete :delete, :id => current_ways(:visible_way).id assert_response :unauthorized @@ -143,13 +161,18 @@ class WayControllerTest < Test::Unit::TestCase assert_response :bad_request # Now try without having a changeset - content "" + content "" delete :delete, :id => current_ways(:visible_way).id assert_response :bad_request # Now try and get a changeset + changeset_id = changesets(:normal_user_first_change).id + content current_ways(:visible_way).to_xml + delete :delete, :id => current_ways(:visible_way).id + assert_response :success # this won't work since the way is already deleted + content current_ways(:invisible_way).to_xml delete :delete, :id => current_ways(:invisible_way).id assert_response :gone -- 2.43.2