]> git.openstreetmap.org Git - rails.git/blobdiff - test/controllers/api/old_nodes_controller_test.rb
Split api old element redacted show tests
[rails.git] / test / controllers / api / old_nodes_controller_test.rb
index b01d768e150bf9adc8294d7d3e5fc93a8db0f1a2..7afa8c99701e2488ac7607aee5997430fc1a9ed3 100644 (file)
@@ -52,25 +52,57 @@ module Api
 
     ##
     # test that redacted nodes aren't visible in the history
-    def test_index_redacted
+    def test_index_redacted_unauthorised
       node = create(:node, :with_history, :version => 2)
-      node_v1 = node.old_nodes.find_by(:version => 1)
-      node_v1.redact!(create(:redaction))
+      node.old_nodes.find_by(:version => 1).redact!(create(:redaction))
 
       get api_node_versions_path(node)
+
       assert_response :success, "Redaction shouldn't have stopped history working."
-      assert_select "osm node[id='#{node_v1.node_id}'][version='#{node_v1.version}']", 0,
-                    "redacted node #{node_v1.node_id} version #{node_v1.version} shouldn't be present in the history."
+      assert_dom "osm node[id='#{node.id}'][version='1']", 0,
+                 "redacted node #{node.id} version 1 shouldn't be present in the history."
+    end
+
+    def test_index_redacted_normal_user
+      node = create(:node, :with_history, :version => 2)
+      node.old_nodes.find_by(:version => 1).redact!(create(:redaction))
+
+      get api_node_versions_path(node), :headers => bearer_authorization_header
 
-      # not even to a logged-in user
-      auth_header = bearer_authorization_header
-      get api_node_versions_path(node), :headers => auth_header
       assert_response :success, "Redaction shouldn't have stopped history working."
-      assert_select "osm node[id='#{node_v1.node_id}'][version='#{node_v1.version}']", 0,
-                    "redacted node #{node_v1.node_id} version #{node_v1.version} shouldn't be present in the history, even when logged in."
+      assert_dom "osm node[id='#{node.id}'][version='1']", 0,
+                 "redacted node #{node.id} version 1 shouldn't be present in the history, even when logged in."
     end
 
-    # TODO: test_show
+    def test_show
+      node = create(:node, :version => 2)
+      create(:old_node, :node_id => node.id, :version => 1, :latitude => 60 * OldNode::SCALE, :longitude => 30 * OldNode::SCALE)
+      create(:old_node, :node_id => node.id, :version => 2, :latitude => 61 * OldNode::SCALE, :longitude => 31 * OldNode::SCALE)
+
+      get api_node_version_path(node, 1)
+
+      assert_response :success
+      assert_dom "osm:root", 1 do
+        assert_dom "> node", 1 do
+          assert_dom "> @id", node.id.to_s
+          assert_dom "> @version", "1"
+          assert_dom "> @lat", "60.0000000"
+          assert_dom "> @lon", "30.0000000"
+        end
+      end
+
+      get api_node_version_path(node, 2)
+
+      assert_response :success
+      assert_dom "osm:root", 1 do
+        assert_dom "> node", 1 do
+          assert_dom "> @id", node.id.to_s
+          assert_dom "> @version", "2"
+          assert_dom "> @lat", "61.0000000"
+          assert_dom "> @lon", "31.0000000"
+        end
+      end
+    end
 
     def test_show_not_found
       check_not_found_id_version(70000, 312344)
@@ -82,17 +114,21 @@ module Api
     ##
     # test that redacted nodes aren't visible, regardless of
     # authorisation except as moderator...
-    def test_show_redacted
+    def test_show_redacted_unauthorised
       node = create(:node, :with_history, :version => 2)
-      node_v1 = node.old_nodes.find_by(:version => 1)
-      node_v1.redact!(create(:redaction))
+      node.old_nodes.find_by(:version => 1).redact!(create(:redaction))
+
+      get api_node_version_path(node, 1)
 
-      get api_node_version_path(node_v1.node_id, node_v1.version)
       assert_response :forbidden, "Redacted node shouldn't be visible via the version API."
+    end
+
+    def test_show_redacted_normal_user
+      node = create(:node, :with_history, :version => 2)
+      node.old_nodes.find_by(:version => 1).redact!(create(:redaction))
+
+      get api_node_version_path(node, 1), :headers => bearer_authorization_header
 
-      # not even to a logged-in user
-      auth_header = bearer_authorization_header
-      get api_node_version_path(node_v1.node_id, node_v1.version), :headers => auth_header
       assert_response :forbidden, "Redacted node shouldn't be visible via the version API, even when logged in."
     end