BotAgentCheckTest::testWithoutUserAgent()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 6
nc 1
nop 0
dl 0
loc 11
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Lochmueller\LanguageDetection\Tests\Unit\Check;
6
7
use Lochmueller\LanguageDetection\Check\BotAgentCheck;
8
use Lochmueller\LanguageDetection\Event\CheckLanguageDetectionEvent;
9
use Lochmueller\LanguageDetection\Tests\Unit\AbstractUnitTest;
10
use TYPO3\CMS\Core\Http\ServerRequest;
11
use TYPO3\CMS\Core\Site\Entity\SiteInterface;
12
13
/**
14
 * @internal
15
 *
16
 * @coversNothing
17
 */
18
class BotAgentCheckTest extends AbstractUnitTest
19
{
20
    /**
21
     * @covers \Lochmueller\LanguageDetection\Check\BotAgentCheck
22
     * @covers \Lochmueller\LanguageDetection\Event\CheckLanguageDetectionEvent
23
     *
24
     * @dataProvider data
25
     */
26
    public function testUserAgents(string $userAgent, bool $result): void
27
    {
28
        $site = $this->createMock(SiteInterface::class);
29
30
        $request = new ServerRequest(null, null, 'php://input', ['user-agent' => $userAgent]);
31
        $event = new CheckLanguageDetectionEvent($site, $request);
32
33
        $botAgentCheck = new BotAgentCheck();
34
        $botAgentCheck($event);
35
36
        self::assertEquals($result, $event->isLanguageDetectionEnable());
37
    }
38
39
    /**
40
     * @covers \Lochmueller\LanguageDetection\Check\BotAgentCheck
41
     * @covers \Lochmueller\LanguageDetection\Event\CheckLanguageDetectionEvent
42
     */
43
    public function testWithoutUserAgent(): void
44
    {
45
        $site = $this->createMock(SiteInterface::class);
46
47
        $request = new ServerRequest();
48
        $event = new CheckLanguageDetectionEvent($site, $request);
49
50
        $botAgentCheck = new BotAgentCheck();
51
        $botAgentCheck($event);
52
53
        self::assertTrue($event->isLanguageDetectionEnable());
54
    }
55
56
    /**
57
     * @return array<int, array<string|bool>>
58
     */
59
    public static function data(): array
60
    {
61
        return [
62
            ['AdsBot-Google', false],
63
            ['Firefox', true],
64
            ['Chrome', true],
65
            ['Yandex-12378', false],
66
        ];
67
    }
68
}
69