Merge remote-tracking branch 'openstreetmap/pull/1492'
authorTom Hughes <tom@compton.nu>
Thu, 16 Mar 2017 19:02:35 +0000 (19:02 +0000)
committerTom Hughes <tom@compton.nu>
Thu, 16 Mar 2017 19:02:35 +0000 (19:02 +0000)
test/controllers/old_node_controller_test.rb
test/controllers/old_relation_controller_test.rb
test/controllers/old_way_controller_test.rb
test/controllers/redactions_controller_test.rb
test/factories/old_node.rb [new file with mode: 0644]
test/factories/redaction.rb [new file with mode: 0644]
test/models/redaction_test.rb

index 181d132917a73d3b2a8d43789298b450f1537fab..babb9df134a735135a561ccafcc03c8ea419ae19 100644 (file)
@@ -188,7 +188,7 @@ class OldNodeControllerTest < ActionController::TestCase
   # authorised.
   def test_redact_node_unauthorised
     do_redact_node(nodes(:node_with_versions_v3),
-                   redactions(:example))
+                   create(:redaction))
     assert_response :unauthorized, "should need to be authenticated to redact."
   end
 
@@ -196,10 +196,10 @@ class OldNodeControllerTest < ActionController::TestCase
   # test the redaction of an old version of a node, while being
   # authorised as a normal user.
   def test_redact_node_normal_user
-    basic_authorization(users(:public_user).email, "test")
+    basic_authorization(create(:user).email, "test")
 
     do_redact_node(nodes(:node_with_versions_v3),
-                   redactions(:example))
+                   create(:redaction))
     assert_response :forbidden, "should need to be moderator to redact."
   end
 
@@ -207,10 +207,10 @@ class OldNodeControllerTest < ActionController::TestCase
   # test that, even as moderator, the current version of a node
   # can't be redacted.
   def test_redact_node_current_version
-    basic_authorization(users(:moderator_user).email, "test")
+    basic_authorization(create(:moderator_user).email, "test")
 
     do_redact_node(nodes(:node_with_versions_v4),
-                   redactions(:example))
+                   create(:redaction))
     assert_response :bad_request, "shouldn't be OK to redact current version as moderator."
   end
 
@@ -250,9 +250,9 @@ class OldNodeControllerTest < ActionController::TestCase
   # authorised as a moderator.
   def test_redact_node_moderator
     node = nodes(:node_with_versions_v3)
-    basic_authorization(users(:moderator_user).email, "test")
+    basic_authorization(create(:moderator_user).email, "test")
 
-    do_redact_node(node, redactions(:example))
+    do_redact_node(node, create(:redaction))
     assert_response :success, "should be OK to redact old version as moderator."
 
     # check moderator can still see the redacted data, when passing
@@ -275,13 +275,13 @@ class OldNodeControllerTest < ActionController::TestCase
   # redacted stuff any more.
   def test_redact_node_is_redacted
     node = nodes(:node_with_versions_v3)
-    basic_authorization(users(:moderator_user).email, "test")
+    basic_authorization(create(:moderator_user).email, "test")
 
-    do_redact_node(node, redactions(:example))
+    do_redact_node(node, create(:redaction))
     assert_response :success, "should be OK to redact old version as moderator."
 
     # re-auth as non-moderator
-    basic_authorization(users(:public_user).email, "test")
+    basic_authorization(create(:user).email, "test")
 
     # check can't see the redacted data
     get :version, :id => node.node_id, :version => node.version
@@ -307,8 +307,9 @@ class OldNodeControllerTest < ActionController::TestCase
   # test the unredaction of an old version of a node, while being
   # authorised as a normal user.
   def test_unredact_node_normal_user
+    user = create(:user)
     node = nodes(:redacted_node_redacted_version)
-    basic_authorization(users(:public_user).email, "test")
+    basic_authorization(user.email, "test")
 
     post :redact, :id => node.node_id, :version => node.version
     assert_response :forbidden, "should need to be moderator to unredact."
@@ -318,8 +319,9 @@ class OldNodeControllerTest < ActionController::TestCase
   # test the unredaction of an old version of a node, while being
   # authorised as a moderator.
   def test_unredact_node_moderator
+    moderator_user = create(:moderator_user)
     node = nodes(:redacted_node_redacted_version)
-    basic_authorization(users(:moderator_user).email, "test")
+    basic_authorization(moderator_user.email, "test")
 
     post :redact, :id => node.node_id, :version => node.version
     assert_response :success, "should be OK to redact old version as moderator."
@@ -334,16 +336,16 @@ class OldNodeControllerTest < ActionController::TestCase
     assert_response :success, "Unredaction shouldn't have stopped history working."
     assert_select "osm node[id='#{node.node_id}'][version='#{node.version}']", 1, "node #{node.node_id} version #{node.version} should now be present in the history for moderators without passing flag."
 
-    basic_authorization(users(:normal_user).email, "test")
+    basic_authorization(create(:user).email, "test")
 
     # check normal user can now see the redacted data
     get :version, :id => node.node_id, :version => node.version
-    assert_response :success, "After unredaction, node should not be gone for moderator."
+    assert_response :success, "After unredaction, node should be visible to normal users."
 
     # and when accessed via history
     get :history, :id => node.node_id
     assert_response :success, "Unredaction shouldn't have stopped history working."
-    assert_select "osm node[id='#{node.node_id}'][version='#{node.version}']", 1, "node #{node.node_id} version #{node.version} should now be present in the history for moderators without passing flag."
+    assert_select "osm node[id='#{node.node_id}'][version='#{node.version}']", 1, "node #{node.node_id} version #{node.version} should now be present in the history for normal users without passing flag."
   end
 
   private
index 6222296610c4a83d5e11b0a6fda439a507ae78af..1c7e691f4c0efc9bdf473e9ce57179cc43b92072 100644 (file)
@@ -39,7 +39,7 @@ class OldRelationControllerTest < ActionController::TestCase
   # authorised.
   def test_redact_relation_unauthorised
     do_redact_relation(relations(:relation_with_versions_v3),
-                       redactions(:example))
+                       create(:redaction))
     assert_response :unauthorized, "should need to be authenticated to redact."
   end
 
@@ -47,10 +47,10 @@ class OldRelationControllerTest < ActionController::TestCase
   # test the redaction of an old version of a relation, while being
   # authorised as a normal user.
   def test_redact_relation_normal_user
-    basic_authorization(users(:public_user).email, "test")
+    basic_authorization(create(:user).email, "test")
 
     do_redact_relation(relations(:relation_with_versions_v3),
-                       redactions(:example))
+                       create(:redaction))
     assert_response :forbidden, "should need to be moderator to redact."
   end
 
@@ -58,10 +58,10 @@ class OldRelationControllerTest < ActionController::TestCase
   # test that, even as moderator, the current version of a relation
   # can't be redacted.
   def test_redact_relation_current_version
-    basic_authorization(users(:moderator_user).email, "test")
+    basic_authorization(create(:moderator_user).email, "test")
 
     do_redact_relation(relations(:relation_with_versions_v4),
-                       redactions(:example))
+                       create(:redaction))
     assert_response :bad_request, "shouldn't be OK to redact current version as moderator."
   end
 
@@ -102,9 +102,9 @@ class OldRelationControllerTest < ActionController::TestCase
   # authorised as a moderator.
   def test_redact_relation_moderator
     relation = relations(:relation_with_versions_v3)
-    basic_authorization(users(:moderator_user).email, "test")
+    basic_authorization(create(:moderator_user).email, "test")
 
-    do_redact_relation(relation, redactions(:example))
+    do_redact_relation(relation, create(:redaction))
     assert_response :success, "should be OK to redact old version as moderator."
 
     # check moderator can still see the redacted data, when passing
@@ -127,9 +127,9 @@ class OldRelationControllerTest < ActionController::TestCase
   # redacted stuff any more.
   def test_redact_relation_is_redacted
     relation = relations(:relation_with_versions_v3)
-    basic_authorization(users(:moderator_user).email, "test")
+    basic_authorization(create(:moderator_user).email, "test")
 
-    do_redact_relation(relation, redactions(:example))
+    do_redact_relation(relation, create(:redaction))
     assert_response :success, "should be OK to redact old version as moderator."
 
     # re-auth as non-moderator
@@ -245,7 +245,7 @@ class OldRelationControllerTest < ActionController::TestCase
 
   def do_redact_relation(relation, redaction)
     get :version, :id => relation.relation_id, :version => relation.version
-    assert_response :success, "should be able to get version #{relation.version} of node #{relation.relation_id}."
+    assert_response :success, "should be able to get version #{relation.version} of relation #{relation.relation_id}."
 
     # now redact it
     post :redact, :id => relation.relation_id, :version => relation.version, :redaction => redaction.id
index 8d3bc6955a80f5873cc4082dd7d0cfdc9279a72d..9e779abb55422361633eda351e8fa3d5577ab0fc 100644 (file)
@@ -72,7 +72,7 @@ class OldWayControllerTest < ActionController::TestCase
   # authorised.
   def test_redact_way_unauthorised
     do_redact_way(ways(:way_with_versions_v3),
-                  redactions(:example))
+                  create(:redaction))
     assert_response :unauthorized, "should need to be authenticated to redact."
   end
 
@@ -80,10 +80,10 @@ class OldWayControllerTest < ActionController::TestCase
   # test the redaction of an old version of a way, while being
   # authorised as a normal user.
   def test_redact_way_normal_user
-    basic_authorization(users(:public_user).email, "test")
+    basic_authorization(create(:user).email, "test")
 
     do_redact_way(ways(:way_with_versions_v3),
-                  redactions(:example))
+                  create(:redaction))
     assert_response :forbidden, "should need to be moderator to redact."
   end
 
@@ -91,10 +91,10 @@ class OldWayControllerTest < ActionController::TestCase
   # test that, even as moderator, the current version of a way
   # can't be redacted.
   def test_redact_way_current_version
-    basic_authorization(users(:moderator_user).email, "test")
+    basic_authorization(create(:moderator_user).email, "test")
 
     do_redact_way(ways(:way_with_versions_v4),
-                  redactions(:example))
+                  create(:redaction))
     assert_response :bad_request, "shouldn't be OK to redact current version as moderator."
   end
 
@@ -108,7 +108,7 @@ class OldWayControllerTest < ActionController::TestCase
     assert_response :forbidden, "Redacted node shouldn't be visible via the version API."
 
     # not even to a logged-in user
-    basic_authorization(users(:public_user).email, "test")
+    basic_authorization(create(:user).email, "test")
     get :version, :id => way.way_id, :version => way.version
     assert_response :forbidden, "Redacted node shouldn't be visible via the version API, even when logged in."
   end
@@ -123,7 +123,7 @@ class OldWayControllerTest < ActionController::TestCase
     assert_select "osm way[id='#{way.way_id}'][version='#{way.version}']", 0, "redacted way #{way.way_id} version #{way.version} shouldn't be present in the history."
 
     # not even to a logged-in user
-    basic_authorization(users(:public_user).email, "test")
+    basic_authorization(create(:user).email, "test")
     get :version, :id => way.way_id, :version => way.version
     get :history, :id => way.way_id
     assert_response :success, "Redaction shouldn't have stopped history working."
@@ -135,9 +135,9 @@ class OldWayControllerTest < ActionController::TestCase
   # authorised as a moderator.
   def test_redact_way_moderator
     way = ways(:way_with_versions_v3)
-    basic_authorization(users(:moderator_user).email, "test")
+    basic_authorization(create(:moderator_user).email, "test")
 
-    do_redact_way(way, redactions(:example))
+    do_redact_way(way, create(:redaction))
     assert_response :success, "should be OK to redact old version as moderator."
 
     # check moderator can still see the redacted data, when passing
@@ -160,13 +160,13 @@ class OldWayControllerTest < ActionController::TestCase
   # redacted stuff any more.
   def test_redact_way_is_redacted
     way = ways(:way_with_versions_v3)
-    basic_authorization(users(:moderator_user).email, "test")
+    basic_authorization(create(:moderator_user).email, "test")
 
-    do_redact_way(way, redactions(:example))
+    do_redact_way(way, create(:redaction))
     assert_response :success, "should be OK to redact old version as moderator."
 
     # re-auth as non-moderator
-    basic_authorization(users(:public_user).email, "test")
+    basic_authorization(create(:user).email, "test")
 
     # check can't see the redacted data
     get :version, :id => way.way_id, :version => way.version
@@ -193,7 +193,7 @@ class OldWayControllerTest < ActionController::TestCase
   # authorised as a normal user.
   def test_unredact_way_normal_user
     way = ways(:way_with_redacted_versions_v3)
-    basic_authorization(users(:public_user).email, "test")
+    basic_authorization(create(:user).email, "test")
 
     post :redact, :id => way.way_id, :version => way.version
     assert_response :forbidden, "should need to be moderator to unredact."
@@ -203,8 +203,9 @@ class OldWayControllerTest < ActionController::TestCase
   # test the unredaction of an old version of a way, while being
   # authorised as a moderator.
   def test_unredact_way_moderator
+    moderator_user = create(:moderator_user)
     way = ways(:way_with_redacted_versions_v3)
-    basic_authorization(users(:moderator_user).email, "test")
+    basic_authorization(moderator_user.email, "test")
 
     post :redact, :id => way.way_id, :version => way.version
     assert_response :success, "should be OK to unredact old version as moderator."
@@ -278,7 +279,7 @@ class OldWayControllerTest < ActionController::TestCase
 
   def do_redact_way(way, redaction)
     get :version, :id => way.way_id, :version => way.version
-    assert_response :success, "should be able to get version #{way.version} of node #{way.way_id}."
+    assert_response :success, "should be able to get version #{way.version} of way #{way.way_id}."
 
     # now redact it
     post :redact, :id => way.way_id, :version => way.version, :redaction => redaction.id
index c5678a5c845bc9ba8a23ca13b3f39a58075b0b36..5a72830e4805c85ff39f03aefaad4e5be4ce2cfa 100644 (file)
@@ -94,11 +94,8 @@ class RedactionsControllerTest < ActionController::TestCase
   def test_destroy_moderator_empty
     session[:user] = create(:moderator_user).id
 
-    # remove all elements from the redaction
-    redaction = redactions(:example)
-    redaction.old_nodes.each     { |n| n.update!(:redaction => nil) }
-    redaction.old_ways.each      { |w| w.update!(:redaction => nil) }
-    redaction.old_relations.each { |r| r.update!(:redaction => nil) }
+    # create an empty redaction
+    redaction = create(:redaction)
 
     delete :destroy, :id => redaction.id
     assert_response :redirect
@@ -108,8 +105,9 @@ class RedactionsControllerTest < ActionController::TestCase
   def test_destroy_moderator_non_empty
     session[:user] = create(:moderator_user).id
 
-    # leave elements in the redaction
-    redaction = redactions(:example)
+    # create elements in the redaction
+    redaction = create(:redaction)
+    create(:old_node, :redaction => redaction)
 
     delete :destroy, :id => redaction.id
     assert_response :redirect
@@ -120,27 +118,29 @@ class RedactionsControllerTest < ActionController::TestCase
   def test_delete_non_moderator
     session[:user] = create(:user).id
 
-    delete :destroy, :id => redactions(:example).id
+    delete :destroy, :id => create(:redaction).id
     assert_response :forbidden
   end
 
   def test_edit
-    get :edit, :id => redactions(:example).id
+    redaction = create(:redaction)
+
+    get :edit, :id => redaction.id
     assert_response :redirect
-    assert_redirected_to login_path(:referer => edit_redaction_path(redactions(:example)))
+    assert_redirected_to login_path(:referer => edit_redaction_path(redaction))
   end
 
   def test_edit_moderator
     session[:user] = create(:moderator_user).id
 
-    get :edit, :id => redactions(:example).id
+    get :edit, :id => create(:redaction).id
     assert_response :success
   end
 
   def test_edit_non_moderator
     session[:user] = create(:user).id
 
-    get :edit, :id => redactions(:example).id
+    get :edit, :id => create(:redaction).id
     assert_response :redirect
     assert_redirected_to(redactions_path)
   end
@@ -148,7 +148,7 @@ class RedactionsControllerTest < ActionController::TestCase
   def test_update_moderator
     session[:user] = create(:moderator_user).id
 
-    redaction = redactions(:example)
+    redaction = create(:redaction)
 
     put :update, :id => redaction.id, :redaction => { :title => "Foo", :description => "Description here." }
     assert_response :redirect
@@ -158,7 +158,7 @@ class RedactionsControllerTest < ActionController::TestCase
   def test_update_moderator_invalid
     session[:user] = create(:moderator_user).id
 
-    redaction = redactions(:example)
+    redaction = create(:redaction)
 
     put :update, :id => redaction.id, :redaction => { :title => "Foo", :description => "" }
     assert_response :success
@@ -168,7 +168,7 @@ class RedactionsControllerTest < ActionController::TestCase
   def test_updated_non_moderator
     session[:user] = create(:user).id
 
-    redaction = redactions(:example)
+    redaction = create(:redaction)
 
     put :update, :id => redaction.id, :redaction => { :title => "Foo", :description => "Description here." }
     assert_response :forbidden
diff --git a/test/factories/old_node.rb b/test/factories/old_node.rb
new file mode 100644 (file)
index 0000000..ecf096e
--- /dev/null
@@ -0,0 +1,16 @@
+FactoryGirl.define do
+  factory :old_node do
+    latitude 1 * GeoRecord::SCALE
+    longitude 1 * GeoRecord::SCALE
+
+    # FIXME: needs changeset factory
+    changeset_id 1
+
+    # FIXME: needs node factory
+    node_id 1000
+
+    visible true
+    timestamp Time.now
+    version 1
+  end
+end
diff --git a/test/factories/redaction.rb b/test/factories/redaction.rb
new file mode 100644 (file)
index 0000000..0ee5f19
--- /dev/null
@@ -0,0 +1,8 @@
+FactoryGirl.define do
+  factory :redaction do
+    sequence(:title) { |n| "Redaction #{n}" }
+    sequence(:description) { |n| "Description of redaction #{n}" }
+
+    user
+  end
+end
index b30c80c66e52502ec33f8865826bafce7f88723a..3cadb8a089c7ff3a51dd2e2ee9b52fe09903c49e 100644 (file)
@@ -3,11 +3,10 @@ require "osm"
 
 class RedactionTest < ActiveSupport::TestCase
   api_fixtures
-  fixtures :redactions
 
   def test_cannot_redact_current
     n = current_nodes(:node_with_versions)
-    r = redactions(:example)
+    r = create(:redaction)
     assert_equal(false, n.redacted?, "Expected node to not be redacted already.")
     assert_raise(OSM::APICannotRedactError) do
       n.redact!(r)
@@ -16,7 +15,7 @@ class RedactionTest < ActiveSupport::TestCase
 
   def test_cannot_redact_current_via_old
     n = nodes(:node_with_versions_v4)
-    r = redactions(:example)
+    r = create(:redaction)
     assert_equal(false, n.redacted?, "Expected node to not be redacted already.")
     assert_raise(OSM::APICannotRedactError) do
       n.redact!(r)
@@ -25,7 +24,7 @@ class RedactionTest < ActiveSupport::TestCase
 
   def test_can_redact_old
     n = nodes(:node_with_versions_v3)
-    r = redactions(:example)
+    r = create(:redaction)
     assert_equal(false, n.redacted?, "Expected node to not be redacted already.")
     assert_nothing_raised(OSM::APICannotRedactError) do
       n.redact!(r)