JWTAuthenticationHandlerTest   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 26
dl 0
loc 60
rs 10
c 0
b 0
f 0
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A testInvalidAuthenticateRequest() 0 13 1
A testAuthenticateRequest() 0 10 1
A setUp() 0 16 1
1
<?php
2
3
namespace Firesphere\GraphQLJWT\Tests;
4
5
use Exception;
6
use Firesphere\GraphQLJWT\Authentication\JWTAuthenticationHandler;
7
use Firesphere\GraphQLJWT\Mutations\CreateTokenMutationCreator;
8
use GraphQL\Type\Definition\ResolveInfo;
9
use SilverStripe\Control\Controller;
10
use SilverStripe\Core\Environment;
11
use SilverStripe\Dev\SapphireTest;
12
use SilverStripe\ORM\ValidationException;
13
use SilverStripe\Security\Member;
14
15
class JWTAuthenticationHandlerTest extends SapphireTest
16
{
17
    protected static $fixture_file = '../fixtures/JWTAuthenticatorTest.yml';
18
19
    protected $member;
20
21
    protected $token;
22
23
    /**
24
     * @throws ValidationException
25
     */
26
    public function setUp()
27
    {
28
        Environment::putEnv('JWT_SIGNER_KEY=test_signer');
29
30
        parent::setUp();
31
        $this->member = $this->objFromFixture(Member::class, 'admin');
32
        $createToken = CreateTokenMutationCreator::singleton();
33
34
        $response = $createToken->resolve(
35
            null,
36
            ['Email' => '[email protected]', 'Password' => 'error'],
37
            [],
38
            new ResolveInfo([])
39
        );
40
41
        $this->token = $response['Token'];
42
    }
43
44
    /**
45
     * @throws Exception
46
     */
47
    public function testInvalidAuthenticateRequest()
48
    {
49
        Environment::putEnv('JWT_SIGNER_KEY=string');
50
51
        $request = clone Controller::curr()->getRequest();
52
        $request->addHeader('Authorization', 'Bearer ' . $this->token);
53
54
        $handler = JWTAuthenticationHandler::singleton();
55
56
        $result = $handler->authenticateRequest($request);
57
        Environment::putEnv('JWT_SIGNER_KEY=test_signer');
58
59
        $this->assertNull($result);
60
    }
61
62
    /**
63
     * @throws Exception
64
     */
65
    public function testAuthenticateRequest()
66
    {
67
        $request = clone Controller::curr()->getRequest();
68
        $request->addHeader('Authorization', 'Bearer ' . $this->token);
69
70
        $handler = JWTAuthenticationHandler::singleton();
71
72
        $result = $handler->authenticateRequest($request);
73
        $this->assertInstanceOf(Member::class, $result);
74
        $this->assertTrue($result->isInDB());
75
    }
76
}
77