]> BookStack Code Mirror - bookstack/blob - tests/Meta/OpensearchTest.php
Opensearch: Fixed XML declaration when php short tags enabled
[bookstack] / tests / Meta / OpensearchTest.php
1 <?php
2
3 namespace Tests\Meta;
4
5 use Tests\TestCase;
6
7 class OpensearchTest extends TestCase
8 {
9     public function test_opensearch_endpoint()
10     {
11         $appName = 'MyAppNameThatsReallyLongLikeThis';
12         setting()->put('app-name', $appName);
13         $resultUrl = url('/search') . '?term={searchTerms}';
14         $selfUrl = url('/opensearch.xml');
15
16         $resp = $this->get('/opensearch.xml');
17         $resp->assertOk();
18         $resp->assertSee('<?xml version="1.0" encoding="UTF-8"?>' . "\n", false);
19
20         $html = $this->withHtml($resp);
21
22         $html->assertElementExists('OpenSearchDescription > ShortName');
23         $html->assertElementContains('OpenSearchDescription > ShortName', mb_strimwidth($appName, 0, 16));
24         $html->assertElementNotContains('OpenSearchDescription > ShortName', $appName);
25
26         $html->assertElementExists('OpenSearchDescription > Description');
27         $html->assertElementContains('OpenSearchDescription > Description', "Search {$appName}");
28         $html->assertElementExists('OpenSearchDescription > Image');
29         $html->assertElementExists('OpenSearchDescription > Url[rel="results"][template="' . htmlspecialchars($resultUrl) . '"]');
30         $html->assertElementExists('OpenSearchDescription > Url[rel="self"][template="' . htmlspecialchars($selfUrl) . '"]');
31     }
32
33     public function test_opensearch_linked_to_from_home()
34     {
35         $appName = setting('app-name');
36         $endpointUrl = url('/opensearch.xml');
37
38         $resp = $this->asViewer()->get('/');
39         $html = $this->withHtml($resp);
40
41         $html->assertElementExists('head > link[rel="search"][type="application/opensearchdescription+xml"][title="' . htmlspecialchars($appName) . '"][href="' . htmlspecialchars($endpointUrl) . '"]');
42     }
43 }