xref: /plugin/davcal/vendor/sabre/dav/tests/Sabre/DAVACL/PrincipalTest.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\DAVACL;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehleruse Sabre\DAV;
6*a1a3b679SAndreas Boehleruse Sabre\HTTP;
7*a1a3b679SAndreas Boehler
8*a1a3b679SAndreas Boehlerclass PrincipalTest extends \PHPUnit_Framework_TestCase {
9*a1a3b679SAndreas Boehler
10*a1a3b679SAndreas Boehler    public function testConstruct() {
11*a1a3b679SAndreas Boehler
12*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
13*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
14*a1a3b679SAndreas Boehler        $this->assertTrue($principal instanceof Principal);
15*a1a3b679SAndreas Boehler
16*a1a3b679SAndreas Boehler    }
17*a1a3b679SAndreas Boehler
18*a1a3b679SAndreas Boehler    /**
19*a1a3b679SAndreas Boehler     * @expectedException Sabre\DAV\Exception
20*a1a3b679SAndreas Boehler     */
21*a1a3b679SAndreas Boehler    public function testConstructNoUri() {
22*a1a3b679SAndreas Boehler
23*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
24*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array());
25*a1a3b679SAndreas Boehler
26*a1a3b679SAndreas Boehler    }
27*a1a3b679SAndreas Boehler
28*a1a3b679SAndreas Boehler    public function testGetName() {
29*a1a3b679SAndreas Boehler
30*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
31*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
32*a1a3b679SAndreas Boehler        $this->assertEquals('admin',$principal->getName());
33*a1a3b679SAndreas Boehler
34*a1a3b679SAndreas Boehler    }
35*a1a3b679SAndreas Boehler
36*a1a3b679SAndreas Boehler    public function testGetDisplayName() {
37*a1a3b679SAndreas Boehler
38*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
39*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
40*a1a3b679SAndreas Boehler        $this->assertEquals('admin',$principal->getDisplayname());
41*a1a3b679SAndreas Boehler
42*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array(
43*a1a3b679SAndreas Boehler            'uri' => 'principals/admin',
44*a1a3b679SAndreas Boehler            '{DAV:}displayname' => 'Mr. Admin'
45*a1a3b679SAndreas Boehler        ));
46*a1a3b679SAndreas Boehler        $this->assertEquals('Mr. Admin',$principal->getDisplayname());
47*a1a3b679SAndreas Boehler
48*a1a3b679SAndreas Boehler    }
49*a1a3b679SAndreas Boehler
50*a1a3b679SAndreas Boehler    public function testGetProperties() {
51*a1a3b679SAndreas Boehler
52*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
53*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array(
54*a1a3b679SAndreas Boehler            'uri' => 'principals/admin',
55*a1a3b679SAndreas Boehler            '{DAV:}displayname' => 'Mr. Admin',
56*a1a3b679SAndreas Boehler            '{http://www.example.org/custom}custom' => 'Custom',
57*a1a3b679SAndreas Boehler            '{http://sabredav.org/ns}email-address' => 'admin@example.org',
58*a1a3b679SAndreas Boehler        ));
59*a1a3b679SAndreas Boehler
60*a1a3b679SAndreas Boehler        $keys = array(
61*a1a3b679SAndreas Boehler            '{DAV:}displayname',
62*a1a3b679SAndreas Boehler            '{http://www.example.org/custom}custom',
63*a1a3b679SAndreas Boehler            '{http://sabredav.org/ns}email-address',
64*a1a3b679SAndreas Boehler        );
65*a1a3b679SAndreas Boehler        $props = $principal->getProperties($keys);
66*a1a3b679SAndreas Boehler
67*a1a3b679SAndreas Boehler        foreach($keys as $key) $this->assertArrayHasKey($key,$props);
68*a1a3b679SAndreas Boehler
69*a1a3b679SAndreas Boehler        $this->assertEquals('Mr. Admin',$props['{DAV:}displayname']);
70*a1a3b679SAndreas Boehler
71*a1a3b679SAndreas Boehler        $this->assertEquals('admin@example.org', $props['{http://sabredav.org/ns}email-address']);
72*a1a3b679SAndreas Boehler    }
73*a1a3b679SAndreas Boehler
74*a1a3b679SAndreas Boehler    public function testUpdateProperties() {
75*a1a3b679SAndreas Boehler
76*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
77*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
78*a1a3b679SAndreas Boehler
79*a1a3b679SAndreas Boehler        $propPatch = new DAV\PropPatch(array('{DAV:}yourmom' => 'test'));
80*a1a3b679SAndreas Boehler
81*a1a3b679SAndreas Boehler        $result = $principal->propPatch($propPatch);
82*a1a3b679SAndreas Boehler        $result = $propPatch->commit();
83*a1a3b679SAndreas Boehler        $this->assertTrue($result);
84*a1a3b679SAndreas Boehler
85*a1a3b679SAndreas Boehler    }
86*a1a3b679SAndreas Boehler
87*a1a3b679SAndreas Boehler    public function testGetPrincipalUrl() {
88*a1a3b679SAndreas Boehler
89*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
90*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
91*a1a3b679SAndreas Boehler        $this->assertEquals('principals/admin',$principal->getPrincipalUrl());
92*a1a3b679SAndreas Boehler
93*a1a3b679SAndreas Boehler    }
94*a1a3b679SAndreas Boehler
95*a1a3b679SAndreas Boehler    public function testGetAlternateUriSet() {
96*a1a3b679SAndreas Boehler
97*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
98*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array(
99*a1a3b679SAndreas Boehler            'uri' => 'principals/admin',
100*a1a3b679SAndreas Boehler            '{DAV:}displayname' => 'Mr. Admin',
101*a1a3b679SAndreas Boehler            '{http://www.example.org/custom}custom' => 'Custom',
102*a1a3b679SAndreas Boehler            '{http://sabredav.org/ns}email-address' => 'admin@example.org',
103*a1a3b679SAndreas Boehler            '{DAV:}alternate-URI-set' => array(
104*a1a3b679SAndreas Boehler                'mailto:admin+1@example.org',
105*a1a3b679SAndreas Boehler                'mailto:admin+2@example.org',
106*a1a3b679SAndreas Boehler                'mailto:admin@example.org',
107*a1a3b679SAndreas Boehler            ),
108*a1a3b679SAndreas Boehler        ));
109*a1a3b679SAndreas Boehler
110*a1a3b679SAndreas Boehler        $expected = array(
111*a1a3b679SAndreas Boehler            'mailto:admin+1@example.org',
112*a1a3b679SAndreas Boehler            'mailto:admin+2@example.org',
113*a1a3b679SAndreas Boehler            'mailto:admin@example.org',
114*a1a3b679SAndreas Boehler        );
115*a1a3b679SAndreas Boehler
116*a1a3b679SAndreas Boehler        $this->assertEquals($expected,$principal->getAlternateUriSet());
117*a1a3b679SAndreas Boehler
118*a1a3b679SAndreas Boehler    }
119*a1a3b679SAndreas Boehler    public function testGetAlternateUriSetEmpty() {
120*a1a3b679SAndreas Boehler
121*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
122*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array(
123*a1a3b679SAndreas Boehler            'uri' => 'principals/admin',
124*a1a3b679SAndreas Boehler        ));
125*a1a3b679SAndreas Boehler
126*a1a3b679SAndreas Boehler        $expected = array();
127*a1a3b679SAndreas Boehler
128*a1a3b679SAndreas Boehler        $this->assertEquals($expected,$principal->getAlternateUriSet());
129*a1a3b679SAndreas Boehler
130*a1a3b679SAndreas Boehler    }
131*a1a3b679SAndreas Boehler
132*a1a3b679SAndreas Boehler    public function testGetGroupMemberSet() {
133*a1a3b679SAndreas Boehler
134*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
135*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
136*a1a3b679SAndreas Boehler        $this->assertEquals(array(),$principal->getGroupMemberSet());
137*a1a3b679SAndreas Boehler
138*a1a3b679SAndreas Boehler    }
139*a1a3b679SAndreas Boehler    public function testGetGroupMembership() {
140*a1a3b679SAndreas Boehler
141*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
142*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
143*a1a3b679SAndreas Boehler        $this->assertEquals(array(),$principal->getGroupMembership());
144*a1a3b679SAndreas Boehler
145*a1a3b679SAndreas Boehler    }
146*a1a3b679SAndreas Boehler
147*a1a3b679SAndreas Boehler    public function testSetGroupMemberSet() {
148*a1a3b679SAndreas Boehler
149*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
150*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
151*a1a3b679SAndreas Boehler        $principal->setGroupMemberSet(array('principals/foo'));
152*a1a3b679SAndreas Boehler
153*a1a3b679SAndreas Boehler        $this->assertEquals(array(
154*a1a3b679SAndreas Boehler            'principals/admin' => array('principals/foo'),
155*a1a3b679SAndreas Boehler        ), $principalBackend->groupMembers);
156*a1a3b679SAndreas Boehler
157*a1a3b679SAndreas Boehler    }
158*a1a3b679SAndreas Boehler
159*a1a3b679SAndreas Boehler    public function testGetOwner() {
160*a1a3b679SAndreas Boehler
161*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
162*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
163*a1a3b679SAndreas Boehler        $this->assertEquals('principals/admin',$principal->getOwner());
164*a1a3b679SAndreas Boehler
165*a1a3b679SAndreas Boehler    }
166*a1a3b679SAndreas Boehler
167*a1a3b679SAndreas Boehler    public function testGetGroup() {
168*a1a3b679SAndreas Boehler
169*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
170*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
171*a1a3b679SAndreas Boehler        $this->assertNull($principal->getGroup());
172*a1a3b679SAndreas Boehler
173*a1a3b679SAndreas Boehler    }
174*a1a3b679SAndreas Boehler
175*a1a3b679SAndreas Boehler    public function testGetACl() {
176*a1a3b679SAndreas Boehler
177*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
178*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
179*a1a3b679SAndreas Boehler        $this->assertEquals(array(
180*a1a3b679SAndreas Boehler            array(
181*a1a3b679SAndreas Boehler                'privilege' => '{DAV:}read',
182*a1a3b679SAndreas Boehler                'principal' => '{DAV:}authenticated',
183*a1a3b679SAndreas Boehler                'protected' => true,
184*a1a3b679SAndreas Boehler            )
185*a1a3b679SAndreas Boehler        ),$principal->getACL());
186*a1a3b679SAndreas Boehler
187*a1a3b679SAndreas Boehler    }
188*a1a3b679SAndreas Boehler
189*a1a3b679SAndreas Boehler    /**
190*a1a3b679SAndreas Boehler     * @expectedException Sabre\DAV\Exception\MethodNotAllowed
191*a1a3b679SAndreas Boehler     */
192*a1a3b679SAndreas Boehler    public function testSetACl() {
193*a1a3b679SAndreas Boehler
194*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
195*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
196*a1a3b679SAndreas Boehler        $principal->setACL(array());
197*a1a3b679SAndreas Boehler
198*a1a3b679SAndreas Boehler    }
199*a1a3b679SAndreas Boehler
200*a1a3b679SAndreas Boehler    public function testGetSupportedPrivilegeSet() {
201*a1a3b679SAndreas Boehler
202*a1a3b679SAndreas Boehler        $principalBackend = new PrincipalBackend\Mock();
203*a1a3b679SAndreas Boehler        $principal = new Principal($principalBackend, array('uri' => 'principals/admin'));
204*a1a3b679SAndreas Boehler        $this->assertNull($principal->getSupportedPrivilegeSet());
205*a1a3b679SAndreas Boehler
206*a1a3b679SAndreas Boehler    }
207*a1a3b679SAndreas Boehler
208*a1a3b679SAndreas Boehler}
209