]> BookStack Code Mirror - bookstack/commitdiff
Add test for OpenSearch endpoint 5198/head
authorMaximilian Walter <redacted>
Sat, 14 Sep 2024 14:21:01 +0000 (16:21 +0200)
committerMaximilian Walter <redacted>
Mon, 30 Sep 2024 15:45:20 +0000 (17:45 +0200)
tests/OpensearchTest.php [new file with mode: 0644]

diff --git a/tests/OpensearchTest.php b/tests/OpensearchTest.php
new file mode 100644 (file)
index 0000000..a68076b
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+
+namespace Tests;
+
+class OpensearchTest extends TestCase
+{
+    public function test_opensearch_endpoint()
+    {
+        $appName = setting('app-name');
+        $resultUrl = url('/search') . '?term={searchTerms}';
+        $selfUrl = url('/opensearch.xml');
+
+        $resp = $this->get('/opensearch.xml');
+        $resp->assertOk();
+
+        $html = $this->withHtml($resp);
+
+        $html->assertElementExists('OpenSearchDescription > ShortName');
+        $html->assertElementContains('OpenSearchDescription > ShortName', mb_strimwidth($appName, 0, 16));
+
+        $html->assertElementExists('OpenSearchDescription > Description');
+        $html->assertElementContains('OpenSearchDescription > Description', trans('common.opensearch_description', [
+            'appName' => $appName,
+        ]));
+
+        $html->assertElementExists('OpenSearchDescription > Image');
+
+        $html->assertElementExists('OpenSearchDescription > Url[rel="results"][template="' . htmlspecialchars($resultUrl) . '"]');
+        $html->assertElementExists('OpenSearchDescription > Url[rel="self"][template="' . htmlspecialchars($selfUrl) . '"]');
+    }
+
+    public function test_opensearch_linked_to_from_home()
+    {
+        $appName = setting('app-name');
+        $endpointUrl = url('/opensearch.xml');
+
+        $resp = $this->asViewer()->get('/');
+        $html = $this->withHtml($resp);
+
+        $html->assertElementExists('head > link[rel="search"][type="application/opensearchdescription+xml"][title="' . htmlspecialchars($appName) . '"][href="' . htmlspecialchars($endpointUrl) . '"]');
+    }
+}