CaffeineTest::testDisabledCaffeination()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 18
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 12
c 1
b 0
f 0
dl 0
loc 18
rs 9.8666
cc 1
nc 1
nop 0
1
<?php namespace GeneaLabs\LaravelCaffeine\Tests\Feature;
2
3
use GeneaLabs\LaravelCaffeine\Http\Middleware\LaravelCaffeineDripMiddleware;
4
use GeneaLabs\LaravelCaffeine\Tests\FeatureTestCase;
5
6
class CaffeineTest extends FeatureTestCase
7
{
8
    public function testDripEndpoint()
9
    {
10
        $dripRoute = config('genealabs-laravel-caffeine.route', 'genealabs/laravel-caffeine/drip');
11
12
        $response = $this->get($dripRoute);
13
14
        $response->seeStatusCode(204);
15
    }
16
17
    public function testMiddlewareInjectsDripScript()
18
    {
19
        $expectedResult = file_get_contents(__DIR__ . '/../Fixtures/expired_script.txt');
20
21
        $response = $this->get(route('genealabs-laravel-caffeine.tests.form'));
22
23
        $response->see($expectedResult);
24
        $response->assertViewHas('foo');
25
    }
26
27
    public function testSuccessfulDrip()
28
    {
29
        $dripRoute = config('genealabs-laravel-caffeine.route', 'genealabs/laravel-caffeine/drip');
30
        $html = $this
31
            ->get(route('genealabs-laravel-caffeine.tests.form'))
32
            ->response
33
            ->getContent();
34
        $matches = [];
35
        preg_match('/<meta name="csrf-token" content="(.*?)">/', $html, $matches);
36
        $csrfToken = $matches[1];
37
38
        $response = $this->get($dripRoute, [
39
            '_token' => $csrfToken,
40
        ]);
41
42
        $response->seeStatusCode(204);
43
    }
44
45
    public function testExpiredDrip()
46
    {
47
        $dripRoute = config(
48
            'genealabs-laravel-caffeine.drip-interval',
49
            'genealabs/laravel-caffeine/drip'
50
        );
51
        $html = $this
52
            ->get(route('genealabs-laravel-caffeine.tests.form'))
53
            ->response
54
            ->getContent();
55
        $matches = [];
56
        preg_match(
57
            '/<meta name="csrf-token" content="(.*?)">/',
58
            $html,
59
            $matches
60
        );
61
        $csrfToken = $matches[1];
62
63
        app('session')->flush();
64
        $response = $this->get($dripRoute, [
65
            '_token' => $csrfToken,
66
        ]);
67
68
        $response->seeStatusCode(404);
69
    }
70
71
    public function testDisabledCaffeination()
72
    {
73
        $html = $this
74
            ->get(route('genealabs-laravel-caffeine.tests.disabled-page'))
75
            ->response
76
            ->getContent();
77
78
        $isDisabled = (bool) preg_match(
79
            '/<meta name="caffeinated" content="false">/',
80
            $html
81
        );
82
        $hasDripper = (bool) preg_match(
83
            '/\var caffeineSendDrip\b/',
84
            $html
85
        );
86
87
        $this->assertTrue($isDisabled);
88
        $this->assertFalse($hasDripper);
89
    }
90
91
    public function testNonStringReturnContent()
92
    {
93
        $response = $this->get(route('genealabs-laravel-caffeine.tests.null-response'));
94
95
        $response->dontSee('var caffeineSendDrip');
96
    }
97
98
    public function testRouteMiddleware()
99
    {
100
        app('router')->aliasMiddleware(
101
            'caffeinated',
102
            '\\' . LaravelCaffeineDripMiddleware::class
103
        );
104
105
        $response = $this
106
            ->get(route('genealabs-laravel-caffeine.tests.route-middleware'));
107
108
        $response->see('var caffeineSendDrip');
109
    }
110
}
111