Initial commit of LDAP plugin
This commit is contained in:
195
vendor/symfony/ldap/Tests/Adapter/ExtLdap/LdapManagerTest.php
vendored
Normal file
195
vendor/symfony/ldap/Tests/Adapter/ExtLdap/LdapManagerTest.php
vendored
Normal file
@@ -0,0 +1,195 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Component\Ldap\Tests;
|
||||
|
||||
use Symfony\Component\Ldap\Adapter\ExtLdap\Adapter;
|
||||
use Symfony\Component\Ldap\Adapter\ExtLdap\Collection;
|
||||
use Symfony\Component\Ldap\Entry;
|
||||
use Symfony\Component\Ldap\Exception\LdapException;
|
||||
use Symfony\Component\Ldap\Exception\NotBoundException;
|
||||
|
||||
/**
|
||||
* @requires extension ldap
|
||||
*/
|
||||
class LdapManagerTest extends LdapTestCase
|
||||
{
|
||||
/** @var Adapter */
|
||||
private $adapter;
|
||||
|
||||
protected function setUp()
|
||||
{
|
||||
$this->adapter = new Adapter($this->getLdapConfig());
|
||||
$this->adapter->getConnection()->bind('cn=admin,dc=symfony,dc=com', 'symfony');
|
||||
}
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
*/
|
||||
public function testLdapAddAndRemove()
|
||||
{
|
||||
$this->executeSearchQuery(1);
|
||||
|
||||
$entry = new Entry('cn=Charles Sarrazin,dc=symfony,dc=com', array(
|
||||
'sn' => array('csarrazi'),
|
||||
'objectclass' => array(
|
||||
'inetOrgPerson',
|
||||
),
|
||||
));
|
||||
|
||||
$em = $this->adapter->getEntryManager();
|
||||
$em->add($entry);
|
||||
|
||||
$this->executeSearchQuery(2);
|
||||
|
||||
$em->remove($entry);
|
||||
$this->executeSearchQuery(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
*/
|
||||
public function testLdapAddInvalidEntry()
|
||||
{
|
||||
$this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}(LdapException::class);
|
||||
$this->executeSearchQuery(1);
|
||||
|
||||
// The entry is missing a subject name
|
||||
$entry = new Entry('cn=Charles Sarrazin,dc=symfony,dc=com', array(
|
||||
'objectclass' => array(
|
||||
'inetOrgPerson',
|
||||
),
|
||||
));
|
||||
|
||||
$em = $this->adapter->getEntryManager();
|
||||
$em->add($entry);
|
||||
}
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
*/
|
||||
public function testLdapUpdate()
|
||||
{
|
||||
$result = $this->executeSearchQuery(1);
|
||||
|
||||
$entry = $result[0];
|
||||
$this->assertNull($entry->getAttribute('email'));
|
||||
|
||||
$em = $this->adapter->getEntryManager();
|
||||
$em->update($entry);
|
||||
|
||||
$result = $this->executeSearchQuery(1);
|
||||
|
||||
$entry = $result[0];
|
||||
$this->assertNull($entry->getAttribute('email'));
|
||||
|
||||
$entry->removeAttribute('email');
|
||||
$em->update($entry);
|
||||
|
||||
$result = $this->executeSearchQuery(1);
|
||||
$entry = $result[0];
|
||||
$this->assertNull($entry->getAttribute('email'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
*/
|
||||
public function testLdapUnboundAdd()
|
||||
{
|
||||
$this->adapter = new Adapter($this->getLdapConfig());
|
||||
$this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}(NotBoundException::class);
|
||||
$em = $this->adapter->getEntryManager();
|
||||
$em->add(new Entry(''));
|
||||
}
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
*/
|
||||
public function testLdapUnboundRemove()
|
||||
{
|
||||
$this->adapter = new Adapter($this->getLdapConfig());
|
||||
$this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}(NotBoundException::class);
|
||||
$em = $this->adapter->getEntryManager();
|
||||
$em->remove(new Entry(''));
|
||||
}
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
*/
|
||||
public function testLdapUnboundUpdate()
|
||||
{
|
||||
$this->adapter = new Adapter($this->getLdapConfig());
|
||||
$this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}(NotBoundException::class);
|
||||
$em = $this->adapter->getEntryManager();
|
||||
$em->update(new Entry(''));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Collection|Entry[]
|
||||
*/
|
||||
private function executeSearchQuery($expectedResults = 1)
|
||||
{
|
||||
$results = $this
|
||||
->adapter
|
||||
->createQuery('dc=symfony,dc=com', '(objectclass=person)')
|
||||
->execute()
|
||||
;
|
||||
|
||||
$this->assertCount($expectedResults, $results);
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
*/
|
||||
public function testLdapRename()
|
||||
{
|
||||
$result = $this->executeSearchQuery(1);
|
||||
|
||||
$entry = $result[0];
|
||||
|
||||
$entryManager = $this->adapter->getEntryManager();
|
||||
$entryManager->rename($entry, 'cn=Kevin');
|
||||
|
||||
$result = $this->executeSearchQuery(1);
|
||||
$renamedEntry = $result[0];
|
||||
$this->assertEquals($renamedEntry->getAttribute('cn')[0], 'Kevin');
|
||||
|
||||
$oldRdn = $entry->getAttribute('cn')[0];
|
||||
$entryManager->rename($renamedEntry, 'cn='.$oldRdn);
|
||||
$this->executeSearchQuery(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
*/
|
||||
public function testLdapRenameWithoutRemovingOldRdn()
|
||||
{
|
||||
$result = $this->executeSearchQuery(1);
|
||||
|
||||
$entry = $result[0];
|
||||
|
||||
$entryManager = $this->adapter->getEntryManager();
|
||||
$entryManager->rename($entry, 'cn=Kevin', false);
|
||||
|
||||
$result = $this->executeSearchQuery(1);
|
||||
|
||||
$newEntry = $result[0];
|
||||
$originalCN = $entry->getAttribute('cn')[0];
|
||||
|
||||
$this->assertContains($originalCN, $newEntry->getAttribute('cn'));
|
||||
|
||||
$entryManager->rename($newEntry, 'cn='.$originalCN);
|
||||
|
||||
$this->executeSearchQuery(1);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user