]> BookStack Code Mirror - bookstack/blob - tests/Meta/OpensearchTest.php
Tests: Updated failing license test
[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
19         $html = $this->withHtml($resp);
20
21         $html->assertElementExists('OpenSearchDescription > ShortName');
22         $html->assertElementContains('OpenSearchDescription > ShortName', mb_strimwidth($appName, 0, 16));
23         $html->assertElementNotContains('OpenSearchDescription > ShortName', $appName);
24
25         $html->assertElementExists('OpenSearchDescription > Description');
26         $html->assertElementContains('OpenSearchDescription > Description', "Search {$appName}");
27         $html->assertElementExists('OpenSearchDescription > Image');
28         $html->assertElementExists('OpenSearchDescription > Url[rel="results"][template="' . htmlspecialchars($resultUrl) . '"]');
29         $html->assertElementExists('OpenSearchDescription > Url[rel="self"][template="' . htmlspecialchars($selfUrl) . '"]');
30     }
31
32     public function test_opensearch_linked_to_from_home()
33     {
34         $appName = setting('app-name');
35         $endpointUrl = url('/opensearch.xml');
36
37         $resp = $this->asViewer()->get('/');
38         $html = $this->withHtml($resp);
39
40         $html->assertElementExists('head > link[rel="search"][type="application/opensearchdescription+xml"][title="' . htmlspecialchars($appName) . '"][href="' . htmlspecialchars($endpointUrl) . '"]');
41     }
42 }