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