|
|
|
|
@ -417,21 +417,53 @@ class Test_User_Ldap_Direct extends \Test\TestCase {
|
|
|
|
|
$this->prepareMockForUserExists($access);
|
|
|
|
|
|
|
|
|
|
$access->expects($this->any())
|
|
|
|
|
->method('readAttribute')
|
|
|
|
|
->will($this->returnCallback(function($dn) {
|
|
|
|
|
if($dn === 'dnOfRoland,dc=test') {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}));
|
|
|
|
|
->method('readAttribute')
|
|
|
|
|
->will($this->returnCallback(function($dn) {
|
|
|
|
|
if($dn === 'dnOfRoland,dc=test') {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
//test for existing user
|
|
|
|
|
$result = $backend->userExists('gunslinger');
|
|
|
|
|
$this->assertTrue($result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @expectedException \Exception
|
|
|
|
|
*/
|
|
|
|
|
public function testUserExistsForDeleted() {
|
|
|
|
|
$access = $this->getAccessMock();
|
|
|
|
|
$backend = new UserLDAP($access);
|
|
|
|
|
$this->prepareMockForUserExists($access);
|
|
|
|
|
|
|
|
|
|
$access->expects($this->any())
|
|
|
|
|
->method('readAttribute')
|
|
|
|
|
->will($this->returnCallback(function($dn) {
|
|
|
|
|
if($dn === 'dnOfRoland,dc=test') {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
//test for deleted user
|
|
|
|
|
$result = $backend->userExists('formerUser');
|
|
|
|
|
$this->assertFalse($result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testUserExistsForNeverExisting() {
|
|
|
|
|
$access = $this->getAccessMock();
|
|
|
|
|
$backend = new UserLDAP($access);
|
|
|
|
|
$this->prepareMockForUserExists($access);
|
|
|
|
|
|
|
|
|
|
$access->expects($this->any())
|
|
|
|
|
->method('readAttribute')
|
|
|
|
|
->will($this->returnCallback(function($dn) {
|
|
|
|
|
if($dn === 'dnOfRoland,dc=test') {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
//test for never-existing user
|
|
|
|
|
$result = $backend->userExists('mallory');
|
|
|
|
|
@ -445,21 +477,55 @@ class Test_User_Ldap_Direct extends \Test\TestCase {
|
|
|
|
|
\OC_User::useBackend($backend);
|
|
|
|
|
|
|
|
|
|
$access->expects($this->any())
|
|
|
|
|
->method('readAttribute')
|
|
|
|
|
->will($this->returnCallback(function($dn) {
|
|
|
|
|
if($dn === 'dnOfRoland,dc=test') {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}));
|
|
|
|
|
->method('readAttribute')
|
|
|
|
|
->will($this->returnCallback(function($dn) {
|
|
|
|
|
if($dn === 'dnOfRoland,dc=test') {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
//test for existing user
|
|
|
|
|
$result = \OCP\User::userExists('gunslinger');
|
|
|
|
|
$this->assertTrue($result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @expectedException \Exception
|
|
|
|
|
*/
|
|
|
|
|
public function testUserExistsPublicAPIForDeleted() {
|
|
|
|
|
$access = $this->getAccessMock();
|
|
|
|
|
$backend = new UserLDAP($access);
|
|
|
|
|
$this->prepareMockForUserExists($access);
|
|
|
|
|
\OC_User::useBackend($backend);
|
|
|
|
|
|
|
|
|
|
$access->expects($this->any())
|
|
|
|
|
->method('readAttribute')
|
|
|
|
|
->will($this->returnCallback(function($dn) {
|
|
|
|
|
if($dn === 'dnOfRoland,dc=test') {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
//test for deleted user
|
|
|
|
|
$result = \OCP\User::userExists('formerUser');
|
|
|
|
|
$this->assertFalse($result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testUserExistsPublicAPIForNeverExisting() {
|
|
|
|
|
$access = $this->getAccessMock();
|
|
|
|
|
$backend = new UserLDAP($access);
|
|
|
|
|
$this->prepareMockForUserExists($access);
|
|
|
|
|
\OC_User::useBackend($backend);
|
|
|
|
|
|
|
|
|
|
$access->expects($this->any())
|
|
|
|
|
->method('readAttribute')
|
|
|
|
|
->will($this->returnCallback(function($dn) {
|
|
|
|
|
if($dn === 'dnOfRoland,dc=test') {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
//test for never-existing user
|
|
|
|
|
$result = \OCP\User::userExists('mallory');
|
|
|
|
|
@ -475,41 +541,35 @@ class Test_User_Ldap_Direct extends \Test\TestCase {
|
|
|
|
|
$this->assertFalse($result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testGetHome() {
|
|
|
|
|
public function testGetHomeAbsolutePath() {
|
|
|
|
|
$access = $this->getAccessMock();
|
|
|
|
|
$config = $this->getMock('\OCP\IConfig');
|
|
|
|
|
$backend = new UserLDAP($access, $config);
|
|
|
|
|
$this->prepareMockForUserExists($access);
|
|
|
|
|
|
|
|
|
|
$access->connection->expects($this->any())
|
|
|
|
|
->method('__get')
|
|
|
|
|
->will($this->returnCallback(function($name) {
|
|
|
|
|
if($name === 'homeFolderNamingRule') {
|
|
|
|
|
return 'attr:testAttribute';
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}));
|
|
|
|
|
->method('__get')
|
|
|
|
|
->will($this->returnCallback(function($name) {
|
|
|
|
|
if($name === 'homeFolderNamingRule') {
|
|
|
|
|
return 'attr:testAttribute';
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
$access->expects($this->any())
|
|
|
|
|
->method('readAttribute')
|
|
|
|
|
->will($this->returnCallback(function($dn, $attr) {
|
|
|
|
|
switch ($dn) {
|
|
|
|
|
case 'dnOfRoland,dc=test':
|
|
|
|
|
if($attr === 'testAttribute') {
|
|
|
|
|
return array('/tmp/rolandshome/');
|
|
|
|
|
}
|
|
|
|
|
return array();
|
|
|
|
|
break;
|
|
|
|
|
case 'dnOfLadyOfShadows,dc=test':
|
|
|
|
|
if($attr === 'testAttribute') {
|
|
|
|
|
return array('susannah/');
|
|
|
|
|
}
|
|
|
|
|
return array();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
->method('readAttribute')
|
|
|
|
|
->will($this->returnCallback(function($dn, $attr) {
|
|
|
|
|
switch ($dn) {
|
|
|
|
|
case 'dnOfRoland,dc=test':
|
|
|
|
|
if($attr === 'testAttribute') {
|
|
|
|
|
return array('/tmp/rolandshome/');
|
|
|
|
|
}
|
|
|
|
|
return array();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
$datadir = '/my/data/dir';
|
|
|
|
|
$config->expects($this->once())
|
|
|
|
|
@ -519,10 +579,68 @@ class Test_User_Ldap_Direct extends \Test\TestCase {
|
|
|
|
|
//absolut path
|
|
|
|
|
$result = $backend->getHome('gunslinger');
|
|
|
|
|
$this->assertEquals('/tmp/rolandshome/', $result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testGetHomeDatadirRelative() {
|
|
|
|
|
$access = $this->getAccessMock();
|
|
|
|
|
$backend = new UserLDAP($access);
|
|
|
|
|
$this->prepareMockForUserExists($access);
|
|
|
|
|
|
|
|
|
|
$access->connection->expects($this->any())
|
|
|
|
|
->method('__get')
|
|
|
|
|
->will($this->returnCallback(function($name) {
|
|
|
|
|
if($name === 'homeFolderNamingRule') {
|
|
|
|
|
return 'attr:testAttribute';
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
$access->expects($this->any())
|
|
|
|
|
->method('readAttribute')
|
|
|
|
|
->will($this->returnCallback(function($dn, $attr) {
|
|
|
|
|
switch ($dn) {
|
|
|
|
|
case 'dnOfLadyOfShadows,dc=test':
|
|
|
|
|
if($attr === 'testAttribute') {
|
|
|
|
|
return array('susannah/');
|
|
|
|
|
}
|
|
|
|
|
return array();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
//datadir-relativ path
|
|
|
|
|
$result = $backend->getHome('ladyofshadows');
|
|
|
|
|
$datadir = \OCP\Config::getSystemValue('datadirectory',
|
|
|
|
|
\OC::$SERVERROOT.'/data');
|
|
|
|
|
$this->assertEquals($datadir.'/susannah/', $result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @expectedException \Exception
|
|
|
|
|
*/
|
|
|
|
|
public function testGetHomeNoPath() {
|
|
|
|
|
$access = $this->getAccessMock();
|
|
|
|
|
$backend = new UserLDAP($access);
|
|
|
|
|
$this->prepareMockForUserExists($access);
|
|
|
|
|
|
|
|
|
|
$access->connection->expects($this->any())
|
|
|
|
|
->method('__get')
|
|
|
|
|
->will($this->returnCallback(function($name) {
|
|
|
|
|
if($name === 'homeFolderNamingRule') {
|
|
|
|
|
return 'attr:testAttribute';
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
$access->expects($this->any())
|
|
|
|
|
->method('readAttribute')
|
|
|
|
|
->will($this->returnCallback(function($dn, $attr) {
|
|
|
|
|
switch ($dn) {
|
|
|
|
|
default:
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
//no path at all – triggers OC default behaviour
|
|
|
|
|
$result = $backend->getHome('newyorker');
|
|
|
|
|
@ -562,6 +680,12 @@ class Test_User_Ldap_Direct extends \Test\TestCase {
|
|
|
|
|
$backend = new UserLDAP($access, $this->getMock('\OCP\IConfig'));
|
|
|
|
|
$this->prepareMockForUserExists($access);
|
|
|
|
|
|
|
|
|
|
$access->connection->expects($this->any())
|
|
|
|
|
->method('getConnectionResource')
|
|
|
|
|
->will($this->returnCallback(function() {
|
|
|
|
|
return true;
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
//with displayName
|
|
|
|
|
$result = $backend->getDisplayName('gunslinger');
|
|
|
|
|
$this->assertEquals('Roland Deschain', $result);
|
|
|
|
|
@ -573,9 +697,36 @@ class Test_User_Ldap_Direct extends \Test\TestCase {
|
|
|
|
|
|
|
|
|
|
public function testGetDisplayNamePublicAPI() {
|
|
|
|
|
$access = $this->getAccessMock();
|
|
|
|
|
$access->expects($this->any())
|
|
|
|
|
->method('username2dn')
|
|
|
|
|
->will($this->returnCallback(function($uid) {
|
|
|
|
|
switch ($uid) {
|
|
|
|
|
case 'gunslinger':
|
|
|
|
|
return 'dnOfRoland,dc=test';
|
|
|
|
|
break;
|
|
|
|
|
case 'formerUser':
|
|
|
|
|
return 'dnOfFormerUser,dc=test';
|
|
|
|
|
break;
|
|
|
|
|
case 'newyorker':
|
|
|
|
|
return 'dnOfNewYorker,dc=test';
|
|
|
|
|
break;
|
|
|
|
|
case 'ladyofshadows':
|
|
|
|
|
return 'dnOfLadyOfShadows,dc=test';
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
$this->prepareAccessForGetDisplayName($access);
|
|
|
|
|
$backend = new UserLDAP($access, $this->getMock('\OCP\IConfig'));
|
|
|
|
|
$this->prepareMockForUserExists($access);
|
|
|
|
|
|
|
|
|
|
$access->connection->expects($this->any())
|
|
|
|
|
->method('getConnectionResource')
|
|
|
|
|
->will($this->returnCallback(function() {
|
|
|
|
|
return true;
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
|
|
\OC_User::useBackend($backend);
|
|
|
|
|
|
|
|
|
|
//with displayName
|
|
|
|
|
|