diff --git a/tests/php/Model/SiteTreeTest.php b/tests/php/Model/SiteTreeTest.php
index 9927c958..00733778 100644
--- a/tests/php/Model/SiteTreeTest.php
+++ b/tests/php/Model/SiteTreeTest.php
@@ -40,6 +40,9 @@ use SilverStripe\View\Shortcodes\EmbedShortcodeProvider;
use TractorCow\Fluent\Extension\FluentSiteTreeExtension;
use const RESOURCES_DIR;
use SilverStripe\Dev\Deprecation;
+use SilverStripe\HTML5\HTML5Value;
+use SilverStripe\View\Parsers\HTMLValue;
+use SilverStripe\View\Parsers\HTML4Value;
class SiteTreeTest extends SapphireTest
{
@@ -2060,12 +2063,50 @@ class SiteTreeTest extends SapphireTest
'',
'',
'Multiple attributes are removed'
- ],
+ ]
+ ];
+ }
+
+ /**
+ * @dataProvider provideSanatiseInvalidExtraMeta
+ */
+ public function testSanatiseInvalidExtraMetaHTML4Value(string $extraMeta, string $expected): void
+ {
+ Injector::inst()->registerService(HTML4Value::create(), HTMLValue::class);
+ $siteTree = new SiteTree();
+ $siteTree->ExtraMeta = $extraMeta;
+ $siteTree->write();
+ $this->assertSame(
+ $expected,
+ $siteTree->ExtraMeta,
+ 'Invalid HTML is converted to valid HTML and parsed'
+ );
+ }
+
+ /**
+ * @dataProvider provideSanatiseInvalidExtraMeta
+ */
+ public function testSanatiseInvalidExtraMetaHTML5Value(string $extraMeta): void
+ {
+ // HTML5Value comes from the module silverstripe/html5
+ if (!class_exists(HTML5Value::class)) {
+ $this->markTestSkipped('HTML5Value class does not exist');
+ }
+ Injector::inst()->registerService(HTML5Value::create(), HTMLValue::class);
+ $this->expectException(ValidationException::class);
+ $this->expectExceptionMessage('Custom Meta Tags does not contain valid HTML');
+ $siteTree = new SiteTree();
+ $siteTree->ExtraMeta = $extraMeta;
+ $siteTree->write();
+ }
+
+ public function provideSanatiseInvalidExtraMeta(): array
+ {
+ return [
[
'',
- 'Invalid HTML is converted to valid HTML and parsed'
- ],
+ ''
+ ]
];
}
}