aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/sabre/dav/tests/Sabre/DAV/Auth
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2013-10-21 15:46:31 -0700
committerfriendica <info@friendica.com>2013-10-21 15:46:31 -0700
commitb35122f7a6ad42756c35bb60ba1f06c3dcd45c77 (patch)
treeccdf373ce6475d264778523259cc32899b732fe7 /vendor/sabre/dav/tests/Sabre/DAV/Auth
parente3504df514d306cfe6b83e44a11f550664564af4 (diff)
downloadvolse-hubzilla-b35122f7a6ad42756c35bb60ba1f06c3dcd45c77.tar.gz
volse-hubzilla-b35122f7a6ad42756c35bb60ba1f06c3dcd45c77.tar.bz2
volse-hubzilla-b35122f7a6ad42756c35bb60ba1f06c3dcd45c77.zip
add sabre (1.8.x) via composer in the !@#$ place it wants to be
Diffstat (limited to 'vendor/sabre/dav/tests/Sabre/DAV/Auth')
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php91
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractDigestTest.php149
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php35
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php45
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php42
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php37
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php31
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOSqliteTest.php28
-rw-r--r--vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php84
9 files changed, 542 insertions, 0 deletions
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php
new file mode 100644
index 000000000..36d23c5c0
--- /dev/null
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractBasicTest.php
@@ -0,0 +1,91 @@
+<?php
+
+namespace Sabre\DAV\Auth\Backend;
+
+use Sabre\DAV;
+use Sabre\HTTP;
+
+require_once 'Sabre/HTTP/ResponseMock.php';
+
+class AbstractBasicTest 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 AbstractBasicMock();
+ $backend->authenticate($server,'myRealm');
+
+ }
+
+ /**
+ * @expectedException Sabre\DAV\Exception\NotAuthenticated
+ */
+ public function testAuthenticateUnknownUser() {
+
+ $response = new HTTP\ResponseMock();
+ $tree = new DAV\ObjectTree(new DAV\SimpleCollection('bla'));
+ $server = new DAV\Server($tree);
+ $server->httpResponse = $response;
+
+ $request = new HTTP\Request(array(
+ 'PHP_AUTH_USER' => 'username',
+ 'PHP_AUTH_PW' => 'wrongpassword',
+ ));
+ $server->httpRequest = $request;
+
+ $backend = new AbstractBasicMock();
+ $backend->authenticate($server,'myRealm');
+
+ }
+
+ public function testAuthenticate() {
+
+ $response = new HTTP\ResponseMock();
+ $tree = new DAV\ObjectTree(new DAV\SimpleCollection('bla'));
+ $server = new DAV\Server($tree);
+ $server->httpResponse = $response;
+
+ $request = new HTTP\Request(array(
+ 'PHP_AUTH_USER' => 'username',
+ 'PHP_AUTH_PW' => 'password',
+ ));
+ $server->httpRequest = $request;
+
+ $backend = new AbstractBasicMock();
+ $this->assertTrue($backend->authenticate($server,'myRealm'));
+
+ $result = $backend->getCurrentUser();
+
+ $this->assertEquals('username', $result);
+
+ }
+
+
+}
+
+
+class AbstractBasicMock extends AbstractBasic {
+
+ /**
+ * Validates a username and password
+ *
+ * This method should return true or false depending on if login
+ * succeeded.
+ *
+ * @param string $username
+ * @param string $password
+ * @return bool
+ */
+ function validateUserPass($username, $password) {
+
+ return ($username == 'username' && $password == 'password');
+
+ }
+
+}
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';
+ }
+
+ }
+
+}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php
new file mode 100644
index 000000000..d22923d51
--- /dev/null
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/AbstractPDOTest.php
@@ -0,0 +1,35 @@
+<?php
+
+namespace Sabre\DAV\Auth\Backend;
+
+use Sabre\DAV;
+
+abstract class AbstractPDOTest extends \PHPUnit_Framework_TestCase {
+
+ abstract function getPDO();
+
+ function testConstruct() {
+
+ $pdo = $this->getPDO();
+ $backend = new PDO($pdo);
+ $this->assertTrue($backend instanceof PDO);
+
+ }
+
+ /**
+ * @depends testConstruct
+ */
+ function testUserInfo() {
+
+ $pdo = $this->getPDO();
+ $backend = new PDO($pdo);
+
+ $this->assertNull($backend->getDigestHash('realm','blabla'));
+
+ $expected = 'hash';
+
+ $this->assertEquals($expected, $backend->getDigestHash('realm','user'));
+
+ }
+
+}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php
new file mode 100644
index 000000000..b1ed555d4
--- /dev/null
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/ApacheTest.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace Sabre\DAV\Auth\Backend;
+
+use Sabre\DAV;
+use Sabre\HTTP;
+
+class ApacheTest extends \PHPUnit_Framework_TestCase {
+
+ function testConstruct() {
+
+ $backend = new Apache();
+
+ }
+
+ /**
+ * @expectedException Sabre\DAV\Exception
+ */
+ function testNoHeader() {
+
+ $server = new DAV\Server();
+ $backend = new Apache();
+ $backend->authenticate($server,'Realm');
+
+ }
+
+ function testRemoteUser() {
+
+ $backend = new Apache();
+
+ $server = new DAV\Server();
+ $request = new HTTP\Request(array(
+ 'REMOTE_USER' => 'username',
+ ));
+ $server->httpRequest = $request;
+
+ $this->assertTrue($backend->authenticate($server, 'Realm'));
+
+ $userInfo = 'username';
+
+ $this->assertEquals($userInfo, $backend->getCurrentUser());
+
+ }
+
+}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php
new file mode 100644
index 000000000..72f150ab6
--- /dev/null
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/FileTest.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace Sabre\DAV\Auth\Backend;
+
+class FileTest extends \PHPUnit_Framework_TestCase {
+
+ function tearDown() {
+
+ if (file_exists(SABRE_TEMPDIR . '/filebackend')) unlink(SABRE_TEMPDIR .'/filebackend');
+
+ }
+
+ function testConstruct() {
+
+ $file = new File();
+ $this->assertTrue($file instanceof File);
+
+ }
+
+ /**
+ * @expectedException Sabre\DAV\Exception
+ */
+ function testLoadFileBroken() {
+
+ file_put_contents(SABRE_TEMPDIR . '/backend','user:realm:hash');
+ $file = new File();
+ $file->loadFile(SABRE_TEMPDIR .'/backend');
+
+ }
+
+ function testLoadFile() {
+
+ file_put_contents(SABRE_TEMPDIR . '/backend','user:realm:' . md5('user:realm:password'));
+ $file = new File();
+ $file->loadFile(SABRE_TEMPDIR . '/backend');
+
+ $this->assertFalse($file->getDigestHash('realm','blabla'));
+ $this->assertEquals(md5('user:realm:password'), $file->getDigesthash('realm','user'));
+
+ }
+
+}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php
new file mode 100644
index 000000000..fdad8a605
--- /dev/null
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/Mock.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace Sabre\DAV\Auth\Backend;
+
+use Sabre\DAV;
+
+class Mock implements BackendInterface {
+
+ protected $currentUser;
+
+ public $defaultUser = 'admin';
+
+ /**
+ * @param Sabre\DAV\Server $server
+ * @param string $realm
+ * @throws Sabre\DAV\Exception\NotAuthenticated
+ */
+ function authenticate(DAV\Server $server, $realm) {
+
+ if ($realm=='failme') throw new DAV\Exception\NotAuthenticated('deliberate fail');
+ $this->currentUser = $this->defaultUser;
+
+ }
+
+ function setCurrentUser($user) {
+
+ $this->currentUser = $user;
+
+ }
+
+ function getCurrentUser() {
+
+ return $this->currentUser;
+
+ }
+
+}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php
new file mode 100644
index 000000000..ede432de2
--- /dev/null
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOMySQLTest.php
@@ -0,0 +1,31 @@
+<?php
+
+namespace Sabre\DAV\Auth\Backend;
+
+require_once 'Sabre/TestUtil.php';
+
+class PDOMySQLTest extends AbstractPDOTest {
+
+ function getPDO() {
+
+ if (!SABRE_HASMYSQL) $this->markTestSkipped('MySQL driver is not available, or not properly configured');
+ $pdo = \Sabre\TestUtil::getMySQLDB();
+ if (!$pdo) $this->markTestSkipped('Could not connect to MySQL database');
+ $pdo->query("DROP TABLE IF EXISTS users");
+ $pdo->query("
+create table users (
+ id integer unsigned not null primary key auto_increment,
+ username varchar(50),
+ digesta1 varchar(32),
+ email varchar(80),
+ displayname varchar(80),
+ unique(username)
+);");
+
+ $pdo->query("INSERT INTO users (username,digesta1,email,displayname) VALUES ('user','hash','user@example.org','User')");
+
+ return $pdo;
+
+ }
+
+}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOSqliteTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOSqliteTest.php
new file mode 100644
index 000000000..abfb031bb
--- /dev/null
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/Backend/PDOSqliteTest.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Sabre\DAV\Auth\Backend;
+
+require_once 'Sabre/DAV/Auth/Backend/AbstractPDOTest.php';
+
+class PDOSQLiteTest extends AbstractPDOTest {
+
+ function tearDown() {
+
+ if (file_exists(SABRE_TEMPDIR . '/pdobackend')) unlink(SABRE_TEMPDIR . '/pdobackend');
+ if (file_exists(SABRE_TEMPDIR . '/pdobackend2')) unlink(SABRE_TEMPDIR . '/pdobackend2');
+
+ }
+
+ function getPDO() {
+
+ if (!SABRE_HASSQLITE) $this->markTestSkipped('SQLite driver is not available');
+ $pdo = new \PDO('sqlite:'.SABRE_TEMPDIR.'/pdobackend');
+ $pdo->setAttribute(\PDO::ATTR_ERRMODE,\PDO::ERRMODE_EXCEPTION);
+ $pdo->query('CREATE TABLE users (username TEXT, digesta1 TEXT, email VARCHAR(80), displayname VARCHAR(80))');
+ $pdo->query('INSERT INTO users VALUES ("user","hash","user@example.org","User")');
+
+ return $pdo;
+
+ }
+
+}
diff --git a/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php b/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php
new file mode 100644
index 000000000..2096a04d7
--- /dev/null
+++ b/vendor/sabre/dav/tests/Sabre/DAV/Auth/PluginTest.php
@@ -0,0 +1,84 @@
+<?php
+
+namespace Sabre\DAV\Auth;
+
+use Sabre\HTTP;
+use Sabre\DAV;
+
+require_once 'Sabre/HTTP/ResponseMock.php';
+
+class PluginTest extends \PHPUnit_Framework_TestCase {
+
+ function testInit() {
+
+ $fakeServer = new DAV\Server( new DAV\SimpleCollection('bla'));
+ $plugin = new Plugin(new Backend\Mock(),'realm');
+ $this->assertTrue($plugin instanceof Plugin);
+ $fakeServer->addPlugin($plugin);
+ $this->assertEquals($plugin, $fakeServer->getPlugin('auth'));
+
+ }
+
+ /**
+ * @depends testInit
+ */
+ function testAuthenticate() {
+
+ $fakeServer = new DAV\Server( new DAV\SimpleCollection('bla'));
+ $plugin = new Plugin(new Backend\Mock(),'realm');
+ $fakeServer->addPlugin($plugin);
+ $fakeServer->broadCastEvent('beforeMethod',array('GET','/'));
+
+ }
+
+
+
+ /**
+ * @depends testInit
+ * @expectedException Sabre\DAV\Exception\NotAuthenticated
+ */
+ function testAuthenticateFail() {
+
+ $fakeServer = new DAV\Server( new DAV\SimpleCollection('bla'));
+ $plugin = new Plugin(new Backend\Mock(),'failme');
+ $fakeServer->addPlugin($plugin);
+ $fakeServer->broadCastEvent('beforeMethod',array('GET','/'));
+
+ }
+
+ function testReportPassThrough() {
+
+ $fakeServer = new DAV\Server(new DAV\SimpleCollection('bla'));
+ $plugin = new Plugin(new Backend\Mock(),'realm');
+ $fakeServer->addPlugin($plugin);
+
+ $request = new HTTP\Request(array(
+ 'REQUEST_METHOD' => 'REPORT',
+ 'HTTP_CONTENT_TYPE' => 'application/xml',
+ 'REQUEST_URI' => '/',
+ ));
+ $request->setBody('<?xml version="1.0"?><s:somereport xmlns:s="http://www.rooftopsolutions.nl/NS/example" />');
+
+ $fakeServer->httpRequest = $request;
+ $fakeServer->httpResponse = new HTTP\ResponseMock();
+ $fakeServer->exec();
+
+ $this->assertEquals('HTTP/1.1 403 Forbidden', $fakeServer->httpResponse->status);
+
+ }
+
+ /**
+ * @depends testInit
+ */
+ function testGetCurrentUserPrincipal() {
+
+ $fakeServer = new DAV\Server( new DAV\SimpleCollection('bla'));
+ $plugin = new Plugin(new Backend\Mock(),'realm');
+ $fakeServer->addPlugin($plugin);
+ $fakeServer->broadCastEvent('beforeMethod',array('GET','/'));
+ $this->assertEquals('admin', $plugin->getCurrentUser());
+
+ }
+
+}
+