Completed
Pull Request — master (#9)
by Hugo
02:11
created

AuthClientSpec   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 3

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 3
dl 0
loc 34
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A it_is_initializable() 0 4 1
A let() 0 4 1
A it_should_throw_authentication_exception_if_api_key_is_invalid() 0 5 1
A it_should_throw_authentication_exception_if_response_is_invalid_json() 0 5 1
A it_should_auth_if_api_key_is_valid() 0 7 1
1
<?php
2
3
namespace spec\Yproximite\Api\Client;
4
5
use Http\Client\HttpClient;
6
use Http\Message\MessageFactory;
7
use PhpSpec\ObjectBehavior;
8
use Psr\Http\Message\RequestInterface;
9
use Yproximite\Api\Client\AuthClient;
10
use Yproximite\Api\Exception\AuthenticationException;
11
12
class AuthClientSpec extends ObjectBehavior
13
{
14
    const LOGIN_ENDPOINT = 'https://api.yproximite.fr/login_check';
15
16
    function it_is_initializable()
17
    {
18
        $this->shouldHaveType(AuthClient::class);
19
    }
20
21
    function let(HttpClient $httpClient, MessageFactory $messageFactory)
22
    {
23
        $this->beConstructedWith('<api key>', self::LOGIN_ENDPOINT, $httpClient, $messageFactory);
24
    }
25
26
    function it_should_throw_authentication_exception_if_api_key_is_invalid()
27
    {
28
        $this->shouldThrow(AuthenticationException::class)->during('auth');
29
        $this->isAuthenticated()->shouldReturn(false);
30
    }
31
32
    function it_should_throw_authentication_exception_if_response_is_invalid_json()
33
    {
34
        $this->shouldThrow(AuthenticationException::class)->during('auth');
35
        $this->isAuthenticated()->shouldReturn(false);
36
    }
37
38
    function it_should_auth_if_api_key_is_valid(MessageFactory $messageFactory, RequestInterface $request)
39
    {
40
        $messageFactory->createRequest('POST', self::LOGIN_ENDPOINT, ['api_key' => '<api key>'])->willReturn($request);
41
42
        $this->auth();
43
        $this->isAuthenticated()->shouldReturn(true);
44
    }
45
}
46