Passed
Branch proxy (abe564)
by leo
03:17
created

XmlAuthenticationSuccessResponseTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 93
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 0
Metric Value
dl 0
loc 93
rs 10
c 0
b 0
f 0
wmc 5
lcom 1
cbo 6
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: leo108
5
 * Date: 2016/10/24
6
 * Time: 11:40
7
 */
8
9
namespace Leo108\CAS\Responses;
10
11
use Mockery;
12
use TestCase;
13
14
class XmlAuthenticationSuccessResponseTest extends TestCase
15
{
16
    public function testSetUser()
17
    {
18
        $resp    = new XmlAuthenticationSuccessResponse();
19
        $content = $this->getXML($resp);
20
        $this->assertNotContains('cas:user', $content);
21
        $resp->setUser('test');
22
        $content = $this->getXML($resp);
23
        $this->assertContains('cas:user', $content);
24
        $this->assertContains('test', $content);
25
26
        $resp->setUser('username_2');
27
        $content = $this->getXML($resp);
28
        $this->assertContains('cas:user', $content);
29
        $this->assertNotContains('test', $content);
30
        $this->assertContains('username_2', $content);
31
    }
32
33
    public function testSetProxies()
34
    {
35
        $resp    = new XmlAuthenticationSuccessResponse();
36
        $content = $this->getXML($resp);
37
        $this->assertNotContains('cas:proxies', $content);
38
        $this->assertNotContains('cas:proxy', $content);
39
40
        $resp->setProxies(['http://proxy1.com']);
41
        $content = $this->getXML($resp);
42
        $this->assertContains('cas:proxies', $content);
43
        $this->assertContains('cas:proxy', $content);
44
        $this->assertContains('http://proxy1.com', $content);
45
46
        $resp->setProxies(['http://proxy2.com', 'http://proxy3.com']);
47
        $content = $this->getXML($resp);
48
        $this->assertContains('cas:proxies', $content);
49
        $this->assertContains('cas:proxy', $content);
50
        $this->assertNotContains('http://proxy1.com', $content);
51
        $this->assertContains('http://proxy2.com', $content);
52
        $this->assertContains('http://proxy3.com', $content);
53
    }
54
55
    public function testSetAttributes()
56
    {
57
        $resp    = Mockery::mock(XmlAuthenticationSuccessResponse::class, [])
58
            ->makePartial()
59
            ->shouldAllowMockingProtectedMethods()
60
            ->shouldReceive('stringify')
61
            ->andReturn('string')
62
            ->getMock();
63
        $content = $this->getXML($resp);
64
        $this->assertNotContains('cas:attributes', $content);
65
66
        $resp->setAttributes(['key1' => 'value1']);
67
        $content = $this->getXML($resp);
68
        $this->assertContains('cas:attributes', $content);
69
        $this->assertContains('cas:key1', $content);
70
71
        $resp->setAttributes(['key2' => 'value2', 'key3' => 'value3']);
72
        $content = $this->getXML($resp);
73
        $this->assertContains('cas:attributes', $content);
74
        $this->assertNotContains('cas:key1', $content);
75
        $this->assertContains('cas:key2', $content);
76
        $this->assertContains('cas:key3', $content);
77
    }
78
79
    public function testSetProxyGrantingTicket()
80
    {
81
        $resp    = new XmlAuthenticationSuccessResponse();
82
        $content = $this->getXML($resp);
83
        $this->assertNotContains('cas:proxyGrantingTicket', $content);
84
85
        $ticket1 = 'ticket1';
86
        $ticket2 = 'ticket2';
87
        $resp->setProxyGrantingTicket($ticket1);
88
        $content = $this->getXML($resp);
89
        $this->assertContains('cas:proxyGrantingTicket', $content);
90
        $this->assertContains($ticket1, $content);
91
92
        $resp->setProxyGrantingTicket($ticket2);
93
        $content = $this->getXML($resp);
94
        $this->assertContains('cas:proxyGrantingTicket', $content);
95
        $this->assertNotContains($ticket1, $content);
96
        $this->assertContains($ticket2, $content);
97
    }
98
99
    protected function getXML(XmlAuthenticationSuccessResponse $resp)
100
    {
101
        $property = self::getNonPublicProperty($resp, 'node');
102
        $node     = $property->getValue($resp);
103
104
        return $node->asXML();
105
    }
106
}
107