3 require_once 'Sabre/HTTP/ResponseMock.php';
5 class Sabre_DAV_Auth_Backend_AbstractDigestTest extends PHPUnit_Framework_TestCase {
8 * @expectedException Sabre_DAV_Exception_NotAuthenticated
10 public function testAuthenticateNoHeaders() {
12 $response = new Sabre_HTTP_ResponseMock();
13 $tree = new Sabre_DAV_ObjectTree(new Sabre_DAV_SimpleCollection('bla'));
14 $server = new Sabre_DAV_Server($tree);
15 $server->httpResponse = $response;
17 $backend = new Sabre_DAV_Auth_Backend_AbstractDigestMock();
18 $backend->authenticate($server,'myRealm');
23 * @expectedException Sabre_DAV_Exception
25 public function testAuthenticateBadGetUserInfoResponse() {
27 $response = new Sabre_HTTP_ResponseMock();
28 $tree = new Sabre_DAV_ObjectTree(new Sabre_DAV_SimpleCollection('bla'));
29 $server = new Sabre_DAV_Server($tree);
30 $server->httpResponse = $response;
32 $header = 'username=null, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1';
33 $request = new Sabre_HTTP_Request(array(
34 'PHP_AUTH_DIGEST' => $header,
36 $server->httpRequest = $request;
38 $backend = new Sabre_DAV_Auth_Backend_AbstractDigestMock();
39 $backend->authenticate($server,'myRealm');
44 * @expectedException Sabre_DAV_Exception
46 public function testAuthenticateBadGetUserInfoResponse2() {
48 $response = new Sabre_HTTP_ResponseMock();
49 $tree = new Sabre_DAV_ObjectTree(new Sabre_DAV_SimpleCollection('bla'));
50 $server = new Sabre_DAV_Server($tree);
51 $server->httpResponse = $response;
53 $header = 'username=array, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1';
54 $request = new Sabre_HTTP_Request(array(
55 'PHP_AUTH_DIGEST' => $header,
57 $server->httpRequest = $request;
59 $backend = new Sabre_DAV_Auth_Backend_AbstractDigestMock();
60 $backend->authenticate($server,'myRealm');
65 * @expectedException Sabre_DAV_Exception_NotAuthenticated
67 public function testAuthenticateUnknownUser() {
69 $response = new Sabre_HTTP_ResponseMock();
70 $tree = new Sabre_DAV_ObjectTree(new Sabre_DAV_SimpleCollection('bla'));
71 $server = new Sabre_DAV_Server($tree);
72 $server->httpResponse = $response;
74 $header = 'username=false, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1';
75 $request = new Sabre_HTTP_Request(array(
76 'PHP_AUTH_DIGEST' => $header,
78 $server->httpRequest = $request;
80 $backend = new Sabre_DAV_Auth_Backend_AbstractDigestMock();
81 $backend->authenticate($server,'myRealm');
86 * @expectedException Sabre_DAV_Exception_NotAuthenticated
88 public function testAuthenticateBadPassword() {
90 $response = new Sabre_HTTP_ResponseMock();
91 $tree = new Sabre_DAV_ObjectTree(new Sabre_DAV_SimpleCollection('bla'));
92 $server = new Sabre_DAV_Server($tree);
93 $server->httpResponse = $response;
95 $header = 'username=user, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1';
96 $request = new Sabre_HTTP_Request(array(
97 'PHP_AUTH_DIGEST' => $header,
98 'REQUEST_METHOD' => 'PUT',
100 $server->httpRequest = $request;
102 $backend = new Sabre_DAV_Auth_Backend_AbstractDigestMock();
103 $backend->authenticate($server,'myRealm');
107 public function testAuthenticate() {
109 $response = new Sabre_HTTP_ResponseMock();
110 $tree = new Sabre_DAV_ObjectTree(new Sabre_DAV_SimpleCollection('bla'));
111 $server = new Sabre_DAV_Server($tree);
112 $server->httpResponse = $response;
114 $digestHash = md5('HELLO:12345:1:1:auth:' . md5('GET:/'));
115 $header = 'username=user, realm=myRealm, nonce=12345, uri=/, response='.$digestHash.', opaque=1, qop=auth, nc=1, cnonce=1';
116 $request = new Sabre_HTTP_Request(array(
117 'REQUEST_METHOD' => 'GET',
118 'PHP_AUTH_DIGEST' => $header,
119 'REQUEST_URI' => '/',
121 $server->httpRequest = $request;
123 $backend = new Sabre_DAV_Auth_Backend_AbstractDigestMock();
124 $this->assertTrue($backend->authenticate($server,'myRealm'));
126 $result = $backend->getCurrentUser();
128 $this->assertEquals('user', $result);
129 $this->assertEquals('HELLO', $backend->getDigestHash('myRealm', $result));
137 class Sabre_DAV_Auth_Backend_AbstractDigestMock extends Sabre_DAV_Auth_Backend_AbstractDigest {
139 function getDigestHash($realm, $userName) {
142 case 'null' : return null;
143 case 'false' : return false;
144 case 'array' : return array();
145 case 'user' : return 'HELLO';