Completed
Push — master ( 58620c...f23d9f )
by Vitaliy
02:20
created

Http20BuilderTest::shouldSuccessBuild()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 42
Code Lines 32

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 42
rs 8.8571
c 0
b 0
f 0
cc 1
eloc 32
nc 1
nop 0
1
<?php
2
3
/*
4
 * This file is part of the AppleApnPush package
5
 *
6
 * (c) Vitaliy Zhuk <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code
10
 */
11
12
namespace Tests\Apple\ApnPush\Sender\Builder;
13
14
use Apple\ApnPush\Encoder\MessageEncoderInterface;
15
use Apple\ApnPush\Protocol\Http\Authenticator\AuthenticatorInterface;
16
use Apple\ApnPush\Protocol\Http\ExceptionFactory\ExceptionFactoryInterface;
17
use Apple\ApnPush\Protocol\Http\Sender\HttpSenderInterface;
18
use Apple\ApnPush\Protocol\Http\UriFactory\UriFactoryInterface;
19
use Apple\ApnPush\Protocol\Http\Visitor\AddApnIdHeaderVisitor;
20
use Apple\ApnPush\Protocol\Http\Visitor\AddExpirationHeaderVisitor;
21
use Apple\ApnPush\Protocol\Http\Visitor\AddPriorityHeaderVisitor;
22
use Apple\ApnPush\Protocol\Http\Visitor\HttpProtocolChainVisitor;
23
use Apple\ApnPush\Protocol\Http\Visitor\HttpProtocolVisitorInterface;
24
use Apple\ApnPush\Protocol\HttpProtocol;
25
use Apple\ApnPush\Sender\Builder\Http20Builder;
26
use Apple\ApnPush\Sender\Sender;
27
use PHPUnit\Framework\TestCase;
28
29
class Http20BuilderTest extends TestCase
30
{
31
    /**
32
     * @test
33
     */
34
    public function shouldSuccessBuild()
35
    {
36
        $authenticator = self::createMock(AuthenticatorInterface::class);
37
        $builder = new Http20Builder($authenticator);
38
39
        $exceptionFactory = self::createMock(ExceptionFactoryInterface::class);
40
        $httpSender = self::createMock(HttpSenderInterface::class);
41
        $messageEncoder = self::createMock(MessageEncoderInterface::class);
42
        $uriFactory = self::createMock(UriFactoryInterface::class);
43
        $visitor = self::createMock(HttpProtocolVisitorInterface::class);
44
45
        $chainVisitor = new HttpProtocolChainVisitor();
46
        $chainVisitor->add(new AddExpirationHeaderVisitor(), 1);
47
        $chainVisitor->add(new AddPriorityHeaderVisitor(), 2);
48
        $chainVisitor->add(new AddApnIdHeaderVisitor(), 3);
49
        $chainVisitor->add($visitor, 4);
50
51
        $builder
52
            ->setAuthenticator($authenticator)
53
            ->setExceptionFactory($exceptionFactory)
54
            ->setHttpSender($httpSender)
55
            ->setMessageEncoder($messageEncoder)
56
            ->setUriFactory($uriFactory)
57
            ->addDefaultVisitors()
58
            ->addVisitor($visitor);
59
60
        $sender = $builder->build();
61
62
        $expectedProtocol = new HttpProtocol(
63
            $authenticator,
64
            $httpSender,
65
            $messageEncoder,
66
            $uriFactory,
67
            $chainVisitor,
68
            $exceptionFactory
69
        );
70
71
        $expectedSender = new Sender($expectedProtocol);
72
73
        self::assertInstanceOf(Sender::class, $sender);
74
        self::assertEquals($expectedSender, $sender);
75
    }
76
}
77