-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathMessageOpenTrackControllerTest.php
More file actions
74 lines (60 loc) · 2.88 KB
/
Copy pathMessageOpenTrackControllerTest.php
File metadata and controls
74 lines (60 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
declare(strict_types=1);
namespace PhpList\RestBundle\Tests\Integration\Statistics\Controller;
use PhpList\RestBundle\Statistics\Controller\MessageOpenTrackController;
use PhpList\RestBundle\Tests\Integration\Common\AbstractTestController;
use PhpList\RestBundle\Tests\Integration\Identity\Fixtures\AdministratorFixture;
use PhpList\RestBundle\Tests\Integration\Messaging\Fixtures\MessageFixture;
use PhpList\RestBundle\Tests\Integration\Messaging\Fixtures\TemplateFixture;
use PhpList\RestBundle\Tests\Integration\Statistics\Fixtures\UserMessageFixture;
use PhpList\RestBundle\Tests\Integration\Subscription\Fixtures\SubscriberFixture;
class MessageOpenTrackControllerTest extends AbstractTestController
{
// from SubscriberFixture (id=1)
private const TEST_UID = '95feb7fe7e06e6c11ca8d0c48cb46e89';
// from MessageFixture
private const TEST_MESSAGE_ID = 1;
public function testControllerIsAvailableViaContainer(): void
{
self::assertInstanceOf(
MessageOpenTrackController::class,
self::getContainer()->get(MessageOpenTrackController::class)
);
}
public function testOpenGifReturnsTransparentGifWithNoCacheHeaders(): void
{
$this->loadFixtures([
AdministratorFixture::class,
TemplateFixture::class,
MessageFixture::class,
SubscriberFixture::class,
UserMessageFixture::class,
]);
self::getClient()->request(
'GET',
sprintf('/api/v2/t/open.gif?u=%s&m=%d', self::TEST_UID, self::TEST_MESSAGE_ID)
);
$response = self::getClient()->getResponse();
self::assertSame(200, $response->getStatusCode());
self::assertSame('image/gif', $response->headers->get('Content-Type'));
self::assertStringContainsString('no-store', (string) $response->headers->get('Cache-Control'));
self::assertSame('no-cache', $response->headers->get('Pragma'));
self::assertSame('0', $response->headers->get('Expires'));
$expectedGif = base64_decode('R0lGODlhAQABAPAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');
self::assertSame($expectedGif, $response->getContent());
}
public function testOpenGifReturnsGifEvenIfUidUnknown(): void
{
// No fixtures needed for this; the controller should still return the GIF even if tracking no-ops
self::getClient()->request('GET', '/api/v2/t/open.gif?u=unknown-uid&m=999999');
$response = self::getClient()->getResponse();
self::assertSame(200, $response->getStatusCode());
self::assertSame('image/gif', $response->headers->get('Content-Type'));
}
public function testOpenGifMissingParametersReturns200Anyway(): void
{
self::getClient()->request('GET', '/api/v2/t/open.gif');
$status = self::getClient()->getResponse()->getStatusCode();
self::assertSame(200, $status);
}
}