aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php')
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php149
1 files changed, 149 insertions, 0 deletions
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php
new file mode 100644
index 000000000..495690c4e
--- /dev/null
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php
@@ -0,0 +1,149 @@
+<?php
+
+namespace Sabre\DAV\Auth\Backend;
+
+use Sabre\DAV;
+use Sabre\HTTP;
+
+require_once 'Sabre/HTTP/ResponseMock.php';
+
+class AbstractDigestTest extends \PHPUnit_Framework_TestCase {
+
+ /**
+ * @expectedException Sabre\DAV\Exception\NotAuthenticated
+ */
+ public function testAuthenticateNoHeaders() {
+
+ $response = new HTTP\ResponseMock();
+ $server = new DAV\Server();
+ $server->httpResponse = $response;
+
+ $backend = new AbstractDigestMock();
+ $backend->authenticate($server,'myRealm');
+
+ }
+
+ /**
+ * @expectedException Sabre\DAV\Exception
+ */
+ public function testAuthenticateBadGetUserInfoResponse() {
+
+ $response = new HTTP\ResponseMock();
+ $server = new DAV\Server();
+ $server->httpResponse = $response;
+
+ $header = 'username=null, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1';
+ $request = new HTTP\Request(array(
+ 'PHP_AUTH_DIGEST' => $header,
+ ));
+ $server->httpRequest = $request;
+
+ $backend = new AbstractDigestMock();
+ $backend->authenticate($server,'myRealm');
+
+ }
+
+ /**
+ * @expectedException Sabre\DAV\Exception
+ */
+ public function testAuthenticateBadGetUserInfoResponse2() {
+
+ $response = new HTTP\ResponseMock();
+ $server = new DAV\Server();
+ $server->httpResponse = $response;
+
+ $header = 'username=array, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1';
+ $request = new HTTP\Request(array(
+ 'PHP_AUTH_DIGEST' => $header,
+ ));
+ $server->httpRequest = $request;
+
+ $backend = new AbstractDigestMock();
+ $backend->authenticate($server,'myRealm');
+
+ }
+
+ /**
+ * @expectedException Sabre\DAV\Exception\NotAuthenticated
+ */
+ public function testAuthenticateUnknownUser() {
+
+ $response = new HTTP\ResponseMock();
+ $server = new DAV\Server();
+ $server->httpResponse = $response;
+
+ $header = 'username=false, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1';
+ $request = new HTTP\Request(array(
+ 'PHP_AUTH_DIGEST' => $header,
+ ));
+ $server->httpRequest = $request;
+
+ $backend = new AbstractDigestMock();
+ $backend->authenticate($server,'myRealm');
+
+ }
+
+ /**
+ * @expectedException Sabre\DAV\Exception\NotAuthenticated
+ */
+ public function testAuthenticateBadPassword() {
+
+ $response = new HTTP\ResponseMock();
+ $server = new DAV\Server();
+ $server->httpResponse = $response;
+
+ $header = 'username=user, realm=myRealm, nonce=12345, uri=/, response=HASH, opaque=1, qop=auth, nc=1, cnonce=1';
+ $request = new HTTP\Request(array(
+ 'PHP_AUTH_DIGEST' => $header,
+ 'REQUEST_METHOD' => 'PUT',
+ ));
+ $server->httpRequest = $request;
+
+ $backend = new AbstractDigestMock();
+ $backend->authenticate($server,'myRealm');
+
+ }
+
+ public function testAuthenticate() {
+
+ $response = new HTTP\ResponseMock();
+ $server = new DAV\Server();
+ $server->httpResponse = $response;
+
+ $digestHash = md5('HELLO:12345:1:1:auth:' . md5('GET:/'));
+ $header = 'username=user, realm=myRealm, nonce=12345, uri=/, response='.$digestHash.', opaque=1, qop=auth, nc=1, cnonce=1';
+ $request = new HTTP\Request(array(
+ 'REQUEST_METHOD' => 'GET',
+ 'PHP_AUTH_DIGEST' => $header,
+ 'REQUEST_URI' => '/',
+ ));
+ $server->httpRequest = $request;
+
+ $backend = new AbstractDigestMock();
+ $this->assertTrue($backend->authenticate($server,'myRealm'));
+
+ $result = $backend->getCurrentUser();
+
+ $this->assertEquals('user', $result);
+ $this->assertEquals('HELLO', $backend->getDigestHash('myRealm', $result));
+
+ }
+
+
+}
+
+
+class AbstractDigestMock extends AbstractDigest {
+
+ function getDigestHash($realm, $userName) {
+
+ switch($userName) {
+ case 'null' : return null;
+ case 'false' : return false;
+ case 'array' : return array();
+ case 'user' : return 'HELLO';
+ }
+
+ }
+
+}