diff options
Diffstat (limited to 'test/models')
| -rw-r--r-- | test/models/node_test.rb | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/test/models/node_test.rb b/test/models/node_test.rb index df1e96cb..735d2abe 100644 --- a/test/models/node_test.rb +++ b/test/models/node_test.rb | |||
| @@ -1072,32 +1072,29 @@ class NodeTest < ActiveSupport::TestCase | |||
| 1072 | assert_equal club.id, node.parent_id | 1072 | assert_equal club.id, node.parent_id |
| 1073 | end | 1073 | end |
| 1074 | 1074 | ||
| 1075 | test "setting an external url is gated and witnessed" do | 1075 | test "an external url is carried by the draft and applied on publish" do |
| 1076 | node = Node.root.children.create!(:slug => "chapter_url_test") | 1076 | node = Node.root.children.create!(:slug => "chapter_url_test") |
| 1077 | 1077 | node.draft.update!(:external_url => "https://example.org") | |
| 1078 | assert_difference -> { NodeAction.where(:action => "node_external_url").count }, 1 do | 1078 | node.publish_draft!(users(:aaron)) |
| 1079 | assert node.update_external_url!("https://example.org", users(:aaron)) | ||
| 1080 | end | ||
| 1081 | 1079 | ||
| 1082 | assert_equal "https://example.org", node.reload.external_url | 1080 | assert_equal "https://example.org", node.reload.external_url |
| 1083 | entry = NodeAction.where(:action => "node_external_url").last | 1081 | assert_equal "https://example.org", node.head.external_url |
| 1084 | assert_equal({ "from" => nil, "to" => "https://example.org" }, | ||
| 1085 | entry.metadata["external_url"]) | ||
| 1086 | end | 1082 | end |
| 1087 | 1083 | ||
| 1088 | test "a javascript url is refused" do | 1084 | test "a javascript url is refused on the draft" do |
| 1089 | node = Node.root.children.create!(:slug => "chapter_url_reject") | 1085 | node = Node.root.children.create!(:slug => "chapter_url_reject") |
| 1090 | assert_raises(ActiveRecord::RecordInvalid) do | 1086 | assert_raises(ActiveRecord::RecordInvalid) do |
| 1091 | node.update_external_url!("javascript:alert(1)", users(:aaron)) | 1087 | node.draft.update!(:external_url => "javascript:alert(1)") |
| 1092 | end | 1088 | end |
| 1093 | end | 1089 | end |
| 1094 | 1090 | ||
| 1095 | test "setting an external url on a restricted node needs redaktion" do | 1091 | test "publishing an external url change on a restricted node needs redaktion" do |
| 1096 | node = Node.find_by(:unique_name => "updates") || | 1092 | updates = Node.root.children.create!(:slug => "updates") |
| 1097 | Node.root.children.create!(:slug => "updates") | 1093 | node = updates.children.create!(:slug => "chapter_url_gated") |
| 1094 | node.draft.update!(:external_url => "https://example.org") | ||
| 1098 | 1095 | ||
| 1099 | assert_raises(ActiveRecord::RecordInvalid) do | 1096 | assert_raises(ActiveRecord::RecordInvalid) do |
| 1100 | node.update_external_url!("https://example.org", users(:quentin)) | 1097 | node.publish_draft!(users(:quentin)) |
| 1101 | end | 1098 | end |
| 1102 | end | 1099 | end |
| 1103 | 1100 | ||
