- # Test that getting the current version is identical to picking
- # that version with the version URI call.
- def test_current_version
- node = create(:node, :with_history)
- used_node = create(:node, :with_history)
- create(:way_node, :node => used_node)
- node_used_by_relationship = create(:node, :with_history)
- create(:relation_member, :member => node_used_by_relationship)
- node_with_versions = create(:node, :with_history, :version => 4)
-
- create(:node_tag, :node => node)
- create(:node_tag, :node => used_node)
- create(:node_tag, :node => node_used_by_relationship)
- create(:node_tag, :node => node_with_versions)
- propagate_tags(node, node.old_nodes.last)
- propagate_tags(used_node, used_node.old_nodes.last)
- propagate_tags(node_used_by_relationship, node_used_by_relationship.old_nodes.last)
- propagate_tags(node_with_versions, node_with_versions.old_nodes.last)
-
- check_current_version(node)
- check_current_version(used_node)
- check_current_version(node_used_by_relationship)
- check_current_version(node_with_versions)
+ # test that redacted nodes aren't visible, regardless of
+ # authorisation except as moderator...
+ def test_show_redacted_unauthorised
+ node = create(:node, :with_history, :version => 2)
+ node.old_nodes.find_by(:version => 1).redact!(create(:redaction))
+
+ get api_node_version_path(node, 1)
+
+ assert_response :forbidden, "Redacted node shouldn't be visible via the version API."
+
+ get api_node_version_path(node, 1, :show_redactions => "true")
+
+ assert_response :forbidden, "Redacted node shouldn't be visible via the version API when passing flag."
+ 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
+
+ assert_response :forbidden, "Redacted node shouldn't be visible via the version API, even when logged in."
+
+ get api_node_version_path(node, 1, :show_redactions => "true"), :headers => bearer_authorization_header
+
+ assert_response :forbidden, "Redacted node shouldn't be visible via the version API, even when logged in and passing flag."
+ end
+
+ def test_show_redacted_moderator
+ node = create(:node, :with_history, :version => 2)
+ node.old_nodes.find_by(:version => 1).redact!(create(:redaction))
+ auth_header = bearer_authorization_header create(:moderator_user)
+
+ get api_node_version_path(node, 1), :headers => auth_header
+
+ assert_response :forbidden, "Redacted node should be gone for moderator, when flag not passed."
+
+ get api_node_version_path(node, 1, :show_redactions => "true"), :headers => auth_header
+
+ assert_response :success, "Redacted node should not be gone for moderator, when flag passed."