]> git.openstreetmap.org Git - rails.git/blobdiff - test/functional/changeset_controller_test.rb
Use join to construct tag strings instead of mucking around counting
[rails.git] / test / functional / changeset_controller_test.rb
index bc1fdb835403bb001f4e16a626131810ad9726da..d60fe2fbc9621344512f373f479916ee85b3942d 100644 (file)
@@ -82,7 +82,7 @@ class ChangesetControllerTest < ActionController::TestCase
     post :create
     assert_response :method_not_allowed
   end
-    
+
   ##
   # check that the changeset can be read and returns the correct
   # document structure.
@@ -128,7 +128,7 @@ class ChangesetControllerTest < ActionController::TestCase
     # test that it really is closed now
     cs = Changeset.find(cs_id)
     assert(!cs.is_open?, 
-           "changeset should be closed now (#{cs.closed_at} > #{Time.now}.")
+           "changeset should be closed now (#{cs.closed_at} > #{Time.now.getutc}.")
   end
 
   ##
@@ -446,6 +446,31 @@ EOF
     assert_equal true, Relation.find(current_relations(:visible_relation).id).visible
   end
 
+  ##
+  # upload an element with a really long tag value
+  def test_upload_invalid_too_long_tag
+    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
+    diff = <<EOF
+<osmChange>
+ <create>
+  <node id='-1' lon='0' lat='0' changeset='#{cs_id}'>
+   <tag k='foo' v='#{"x"*256}'/>
+  </node>
+ </create>
+</osmChange>
+EOF
+
+    # upload it
+    content diff
+    post :upload, :id => cs_id
+    assert_response :bad_request, 
+      "shoudln't be able to upload too long a tag to changeset: #{@response.body}"
+
+  end
+    
   ##
   # upload something which creates new objects and inserts them into
   # existing containers using placeholders.
@@ -645,7 +670,7 @@ EOF
   content diff
   post :upload, :id => cs_id
   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
 
   ##
@@ -1122,6 +1147,21 @@ EOF
     assert_select "osmChange>modify>way", 1
   end
 
+  def test_changeset_download
+    get :download, :id => changesets(:normal_user_first_change).id
+    assert_response :success
+    assert_template nil
+    #print @response.body
+    # FIXME needs more assert_select tests
+    assert_select "osmChange[version='#{API_VERSION}'][generator='#{GENERATOR}']" do
+      assert_select "create", :count => 5
+      assert_select "create>node[id=#{nodes(:used_node_2).id}][visible=#{nodes(:used_node_2).visible?}][version=#{nodes(:used_node_2).version}]" do
+        assert_select "tag[k=#{node_tags(:t3).k}][v=#{node_tags(:t3).v}]"
+      end
+      assert_select "create>node[id=#{nodes(:visible_node).id}]"
+    end
+  end
+  
   ##
   # check that the bounding box of a changeset gets updated correctly
   ## FIXME: This should really be moded to a integration test due to the with_controller
@@ -1270,7 +1310,7 @@ EOF
 
     get :query, :time => '2007-12-31T23:59Z,2008-01-01T00:01Z'
     assert_response :success, "can't get changesets by time-range"
-    assert_changesets [1,4,5,6]
+    assert_changesets [1,5,6]
 
     get :query, :open => 'true'
     assert_response :success, "can't get changesets by open-ness"