Completed
Push — master ( f47fb6...c9af04 )
by Julián
02:24
created

ApnsBuilderTest::testAlertPushMessage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 14
rs 9.4285
cc 1
eloc 8
nc 1
nop 0
1
<?php
2
/**
3
 * Push notification services abstraction (http://github.com/juliangut/tify)
4
 *
5
 * @link https://github.com/juliangut/tify for the canonical source repository
6
 *
7
 * @license https://github.com/juliangut/tify/blob/master/LICENSE
8
 */
9
10
namespace Jgut\Tify\Tests\Adapter\Apns;
11
12
use Jgut\Tify\Adapter\Apns\ApnsBuilder;
13
use Jgut\Tify\Message;
14
use Jgut\Tify\Notification;
15
use Jgut\Tify\Receiver\ApnsReceiver;
16
use ZendService\Apple\Apns\Client\Feedback as FeedbackClient;
17
use ZendService\Apple\Apns\Client\Message as MessageClient;
18
use ZendService\Apple\Apns\Message as ApnsMessage;
19
20
/**
21
 * Apns service builder
22
 */
23
class ApnsBuilderTest extends \PHPUnit_Framework_TestCase
24
{
25
    /**
26
     * @var \Jgut\Tify\Adapter\Apns\ApnsBuilder
27
     */
28
    protected $builder;
29
30
    public function setUp()
31
    {
32
        $this->builder = new ApnsBuilder;
33
    }
34
35
    /**
36
     * @expectedException \Jgut\Tify\Exception\AdapterException
37
     * @expectedExceptionMessageRegExp /^Unable to connect/
38
     * @expectedExceptionMessageRegExp /^Unable to set local cert chain file/
39
     */
40
    public function testPushClient()
41
    {
42
        $client = $this->builder->buildPushClient(__DIR__ . '/../../../files/apns_certificate.pem');
43
44
        self::assertInstanceOf(MessageClient::class, $client);
45
    }
46
47
    /**
48
     * @expectedException \Jgut\Tify\Exception\AdapterException
49
     * @expectedExceptionMessageRegExp /^Unable to connect/
50
     * @expectedExceptionMessageRegExp /^Unable to set local cert chain file/
51
     */
52
    public function testFeedbackClient()
53
    {
54
        $client = $this->builder->buildFeedbackClient(__DIR__ . '/../../../files/apns_certificate.pem');
55
56
        self::assertInstanceOf(FeedbackClient::class, $client);
57
    }
58
59
    public function testPushMessage()
60
    {
61
        $receiver = new ApnsReceiver(
62
            '9a4ecb987ef59c88b12035278b86f26d448835939a4ecb987ef59c88b1203527'
63
        );
64
        $message = new Message();
65
        $urlArgs = ['arg1' => 'val1'];
66
67
        $notification = new Notification($message, [$receiver], ['url-args' => $urlArgs, 'expire' => 600]);
68
69
        $pushMessage = $this->builder->buildPushMessage($receiver, $notification);
70
71
        self::assertInstanceOf(ApnsMessage::class, $pushMessage);
72
        self::assertEquals($urlArgs, $pushMessage->getUrlArgs());
73
        self::assertEquals(600, $pushMessage->getExpire());
74
        self::assertNull($pushMessage->getAlert());
75
    }
76
77
    public function testAlertPushMessage()
78
    {
79
        $receiver = new ApnsReceiver(
80
            '9a4ecb987ef59c88b12035278b86f26d448835939a4ecb987ef59c88b1203527'
81
        );
82
        $message = new Message(['title-loc-key' => 'MESSAGE_TITLE']);
83
84
        $notification = new Notification($message, [$receiver]);
85
86
        $pushMessage = $this->builder->buildPushMessage($receiver, $notification);
87
88
        self::assertInstanceOf(ApnsMessage::class, $pushMessage);
89
        self::assertEquals('MESSAGE_TITLE', $pushMessage->getAlert()->getTitleLocKey());
90
    }
91
}
92