Passed
Push — master ( 4b2c1a...a53d55 )
by Maximilian
02:53
created

testIntentRequestWithNumericTimestamp()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 6
c 0
b 0
f 0
dl 0
loc 8
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace MaxBeckers\AmazonAlexa\Test\Request;
6
7
use MaxBeckers\AmazonAlexa\Exception\MissingRequestDataException;
8
use MaxBeckers\AmazonAlexa\Exception\MissingRequiredHeaderException;
9
use MaxBeckers\AmazonAlexa\Request\Request;
10
use MaxBeckers\AmazonAlexa\Request\Request\Standard\IntentRequest;
11
use PHPUnit\Framework\TestCase;
12
13
class IntentRequestTest extends TestCase
14
{
15
    public function testMissingRequestData(): void
16
    {
17
        $this->expectException(MissingRequestDataException::class);
18
        Request::fromAmazonRequest('', '', '');
19
    }
20
21
    public function testMissingRequestHeaders(): void
22
    {
23
        $this->expectException(MissingRequiredHeaderException::class);
24
        $requestBody = file_get_contents(__DIR__ . '/RequestData/intent.json');
25
        Request::fromAmazonRequest($requestBody, '', '');
26
    }
27
28
    public function testIntentRequest(): void
29
    {
30
        $requestBody = file_get_contents(__DIR__ . '/RequestData/intent.json');
31
        $request = Request::fromAmazonRequest($requestBody, 'https://s3.amazonaws.com/echo.api/echo-api-cert.pem', 'signature');
32
        $this->assertInstanceOf(IntentRequest::class, $request->request);
33
        $this->assertSame('my-application-id', $request->context->system->application->applicationId);
34
    }
35
36
    public function testIntentRequestShouldGetApplicationId(): void
37
    {
38
        $requestBody = file_get_contents(__DIR__ . '/RequestData/intent.json');
39
        $request = Request::fromAmazonRequest($requestBody, 'https://s3.amazonaws.com/echo.api/echo-api-cert.pem', 'signature');
40
        $this->assertInstanceOf(IntentRequest::class, $request->request);
41
        $this->assertSame('applicationId', $request->getApplicationId());
42
    }
43
44
    public function testIntentRequestWithNumericTimestamp(): void
45
    {
46
        $requestBody = json_decode(file_get_contents(__DIR__ . '/RequestData/intent.json'), true);
47
        $requestBody['request']['timestamp'] = 65545900;
48
        $requestBody = json_encode($requestBody);
49
        $request = Request::fromAmazonRequest($requestBody, 'https://s3.amazonaws.com/echo.api/echo-api-cert.pem', 'signature');
50
        $this->assertInstanceOf(IntentRequest::class, $request->request);
51
        $this->assertSame('my-application-id', $request->context->system->application->applicationId);
52
    }
53
}
54