Add links to reveal/hide redacted version data

This commit is contained in:
Anton Khorev 2024-03-01 14:23:04 +03:00
parent ee4c34172f
commit 81b431ac11
7 changed files with 152 additions and 27 deletions

View file

@ -19,6 +19,7 @@ class OldNodesControllerTest < ActionDispatch::IntegrationTest
end
assert_select ".secondary-actions a[href='#{node_version_path node, 1}']", :count => 1
assert_select ".secondary-actions a[href='#{node_path node}']", :count => 1
assert_select ".secondary-actions a[href='#{old_node_path node, 1, :params => { :show_redactions => true }}']", :count => 0
assert_select ".secondary-actions a[href='#{node_history_path node}']", :count => 1
end
@ -49,35 +50,67 @@ class OldNodesControllerTest < ActionDispatch::IntegrationTest
assert_select ".secondary-actions a[href='#{old_node_path node, 1}']", :count => 1
end
def test_redacted
test "show unrevealed redacted versions to anonymous users" do
node = create_redacted_node
get old_node_path(node, 1)
assert_response :success
assert_template "old_nodes/show"
assert_template :layout => "map"
assert_select "td", :text => "TOP SECRET", :count => 0
assert_select ".secondary-actions a[href='#{node_path node}']", :count => 1
assert_select ".secondary-actions a[href='#{old_node_path node, 1, :params => { :show_redactions => true }}']", :count => 0
assert_select ".secondary-actions a[href='#{old_node_path node, 1}']", :count => 0
assert_select ".secondary-actions a[href='#{node_version_path node, 1}']", :count => 0
end
test "don't show redacted versions to anonymous users" do
test "show unrevealed redacted versions to regular users" do
session_for(create(:user))
node = create_redacted_node
get old_node_path(node, 1)
assert_response :success
assert_template "old_nodes/show"
assert_template :layout => "map"
assert_select "td", :text => "TOP SECRET", :count => 0
assert_select ".secondary-actions a[href='#{node_path node}']", :count => 1
assert_select ".secondary-actions a[href='#{old_node_path node, 1, :params => { :show_redactions => true }}']", :count => 0
assert_select ".secondary-actions a[href='#{old_node_path node, 1}']", :count => 0
assert_select ".secondary-actions a[href='#{node_version_path node, 1}']", :count => 0
end
test "show unrevealed redacted versions to moderators" do
session_for(create(:moderator_user))
node = create_redacted_node
get old_node_path(node, 1)
assert_response :success
assert_template "old_nodes/show"
assert_template :layout => "map"
assert_select "td", :text => "TOP SECRET", :count => 0
assert_select ".secondary-actions a[href='#{node_path node}']", :count => 1
assert_select ".secondary-actions a[href='#{old_node_path node, 1, :params => { :show_redactions => true }}']", :count => 1
assert_select ".secondary-actions a[href='#{old_node_path node, 1}']", :count => 0
assert_select ".secondary-actions a[href='#{node_version_path node, 1}']", :count => 0
end
test "don't reveal redacted versions to anonymous users" do
node = create_redacted_node
get old_node_path(node, 1, :params => { :show_redactions => true })
assert_response :redirect
end
test "don't show redacted versions to regular users" do
test "don't reveal redacted versions to regular users" do
session_for(create(:user))
node = create_redacted_node
get old_node_path(node, 1, :params => { :show_redactions => true })
assert_response :redirect
end
test "show redacted versions to moderators" do
test "reveal redacted versions to moderators" do
session_for(create(:moderator_user))
node = create_redacted_node
get old_node_path(node, 1, :params => { :show_redactions => true })
assert_response :success
assert_select "td", :text => "TOP SECRET", :count => 1
assert_select ".secondary-actions a[href='#{old_node_path node, 1}']", :count => 1
end
def test_not_found
@ -91,8 +124,9 @@ class OldNodesControllerTest < ActionDispatch::IntegrationTest
private
def create_redacted_node
create(:node, :with_history, :deleted, :version => 2) do |node|
create(:node, :with_history, :version => 2) do |node|
node_v1 = node.old_nodes.find_by(:version => 1)
create(:old_node_tag, :old_node => node_v1, :k => "name", :v => "TOP SECRET")
node_v1.redact!(create(:redaction))
end
end

View file

@ -19,6 +19,7 @@ class OldRelationsControllerTest < ActionDispatch::IntegrationTest
end
assert_select ".secondary-actions a[href='#{relation_version_path relation, 1}']", :count => 1
assert_select ".secondary-actions a[href='#{relation_path relation}']", :count => 1
assert_select ".secondary-actions a[href='#{old_relation_path relation, 1, :params => { :show_redactions => true }}']", :count => 0
assert_select ".secondary-actions a[href='#{relation_history_path relation}']", :count => 1
end
@ -58,35 +59,67 @@ class OldRelationsControllerTest < ActionDispatch::IntegrationTest
assert_template :layout => "map"
end
def test_redacted
test "show unrevealed redacted versions to anonymous users" do
relation = create_redacted_relation
get old_relation_path(relation, 1)
assert_response :success
assert_template "old_relations/show"
assert_template :layout => "map"
assert_select "td", :text => "TOP SECRET", :count => 0
assert_select ".secondary-actions a[href='#{relation_path relation}']", :count => 1
assert_select ".secondary-actions a[href='#{old_relation_path relation, 1, :params => { :show_redactions => true }}']", :count => 0
assert_select ".secondary-actions a[href='#{old_relation_path relation, 1}']", :count => 0
assert_select ".secondary-actions a[href='#{relation_version_path relation, 1}']", :count => 0
end
test "don't show redacted versions to anonymous users" do
test "show unrevealed redacted versions to regular users" do
session_for(create(:user))
relation = create_redacted_relation
get old_relation_path(relation, 1)
assert_response :success
assert_template "old_relations/show"
assert_template :layout => "map"
assert_select "td", :text => "TOP SECRET", :count => 0
assert_select ".secondary-actions a[href='#{relation_path relation}']", :count => 1
assert_select ".secondary-actions a[href='#{old_relation_path relation, 1, :params => { :show_redactions => true }}']", :count => 0
assert_select ".secondary-actions a[href='#{old_relation_path relation, 1}']", :count => 0
assert_select ".secondary-actions a[href='#{relation_version_path relation, 1}']", :count => 0
end
test "show unrevealed redacted versions to moderators" do
session_for(create(:moderator_user))
relation = create_redacted_relation
get old_relation_path(relation, 1)
assert_response :success
assert_template "old_relations/show"
assert_template :layout => "map"
assert_select "td", :text => "TOP SECRET", :count => 0
assert_select ".secondary-actions a[href='#{relation_path relation}']", :count => 1
assert_select ".secondary-actions a[href='#{old_relation_path relation, 1, :params => { :show_redactions => true }}']", :count => 1
assert_select ".secondary-actions a[href='#{old_relation_path relation, 1}']", :count => 0
assert_select ".secondary-actions a[href='#{relation_version_path relation, 1}']", :count => 0
end
test "don't reveal redacted versions to anonymous users" do
relation = create_redacted_relation
get old_relation_path(relation, 1, :params => { :show_redactions => true })
assert_response :redirect
end
test "don't show redacted versions to regular users" do
test "don't reveal redacted versions to regular users" do
session_for(create(:user))
relation = create_redacted_relation
get old_relation_path(relation, 1, :params => { :show_redactions => true })
assert_response :redirect
end
test "show redacted versions to moderators" do
test "reveal redacted versions to moderators" do
session_for(create(:moderator_user))
relation = create_redacted_relation
get old_relation_path(relation, 1, :params => { :show_redactions => true })
assert_response :success
assert_select "td", :text => "TOP SECRET", :count => 1
assert_select ".secondary-actions a[href='#{old_relation_path relation, 1}']", :count => 1
end
def test_not_found
@ -100,8 +133,9 @@ class OldRelationsControllerTest < ActionDispatch::IntegrationTest
private
def create_redacted_relation
create(:relation, :with_history, :deleted, :version => 2) do |relation|
create(:relation, :with_history, :version => 2) do |relation|
relation_v1 = relation.old_relations.find_by(:version => 1)
create(:old_relation_tag, :old_relation => relation_v1, :k => "name", :v => "TOP SECRET")
relation_v1.redact!(create(:redaction))
end
end

View file

@ -19,6 +19,7 @@ class OldWaysControllerTest < ActionDispatch::IntegrationTest
end
assert_select ".secondary-actions a[href='#{way_version_path way, 1}']", :count => 1
assert_select ".secondary-actions a[href='#{way_path way}']", :count => 1
assert_select ".secondary-actions a[href='#{old_way_path way, 1, :params => { :show_redactions => true }}']", :count => 0
assert_select ".secondary-actions a[href='#{way_history_path way}']", :count => 1
end
@ -63,35 +64,67 @@ class OldWaysControllerTest < ActionDispatch::IntegrationTest
assert_template :layout => "map"
end
def test_redacted
test "show unrevealed redacted versions to anonymous users" do
way = create_redacted_way
get old_way_path(way, 1)
assert_response :success
assert_template "old_ways/show"
assert_template :layout => "map"
assert_select "td", :text => "TOP SECRET", :count => 0
assert_select ".secondary-actions a[href='#{way_path way}']", :count => 1
assert_select ".secondary-actions a[href='#{old_way_path way, 1, :params => { :show_redactions => true }}']", :count => 0
assert_select ".secondary-actions a[href='#{old_way_path way, 1}']", :count => 0
assert_select ".secondary-actions a[href='#{way_version_path way, 1}']", :count => 0
end
test "don't show redacted versions to anonymous users" do
test "show unrevealed redacted versions to regular users" do
session_for(create(:user))
way = create_redacted_way
get old_way_path(way, 1)
assert_response :success
assert_template "old_ways/show"
assert_template :layout => "map"
assert_select "td", :text => "TOP SECRET", :count => 0
assert_select ".secondary-actions a[href='#{way_path way}']", :count => 1
assert_select ".secondary-actions a[href='#{old_way_path way, 1, :params => { :show_redactions => true }}']", :count => 0
assert_select ".secondary-actions a[href='#{old_way_path way, 1}']", :count => 0
assert_select ".secondary-actions a[href='#{way_version_path way, 1}']", :count => 0
end
test "show unrevealed redacted versions to moderators" do
session_for(create(:moderator_user))
way = create_redacted_way
get old_way_path(way, 1)
assert_response :success
assert_template "old_ways/show"
assert_template :layout => "map"
assert_select "td", :text => "TOP SECRET", :count => 0
assert_select ".secondary-actions a[href='#{way_path way}']", :count => 1
assert_select ".secondary-actions a[href='#{old_way_path way, 1, :params => { :show_redactions => true }}']", :count => 1
assert_select ".secondary-actions a[href='#{old_way_path way, 1}']", :count => 0
assert_select ".secondary-actions a[href='#{way_version_path way, 1}']", :count => 0
end
test "don't reveal redacted versions to anonymous users" do
way = create_redacted_way
get old_way_path(way, 1, :params => { :show_redactions => true })
assert_response :redirect
end
test "don't show redacted versions to regular users" do
test "don't reveal redacted versions to regular users" do
session_for(create(:user))
way = create_redacted_way
get old_way_path(way, 1, :params => { :show_redactions => true })
assert_response :redirect
end
test "show redacted versions to moderators" do
test "reveal redacted versions to moderators" do
session_for(create(:moderator_user))
way = create_redacted_way
get old_way_path(way, 1, :params => { :show_redactions => true })
assert_response :success
assert_select "td", :text => "TOP SECRET", :count => 1
assert_select ".secondary-actions a[href='#{old_way_path way, 1}']", :count => 1
end
def test_not_found
@ -105,8 +138,9 @@ class OldWaysControllerTest < ActionDispatch::IntegrationTest
private
def create_redacted_way
create(:way, :with_history, :deleted, :version => 2) do |way|
create(:way, :with_history, :version => 2) do |way|
way_v1 = way.old_ways.find_by(:version => 1)
create(:old_way_tag, :old_way => way_v1, :k => "name", :v => "TOP SECRET")
way_v1.redact!(create(:redaction))
end
end