You are here

class TokenTest in Lightweight Directory Access Protocol (LDAP) 8.4

@coversDefaultClass \Drupal\ldap_servers\Processor\TokenProcessor @group ldap

Hierarchy

Expanded class hierarchy of TokenTest

File

ldap_servers/tests/src/Unit/TokenTest.php, line 16

Namespace

Drupal\Tests\ldap_servers\Unit
View source
class TokenTest extends UnitTestCase {

  /**
   * LDAP Entry.
   *
   * @var \Symfony\Component\Ldap\Entry
   */
  private $ldapEntry;

  /**
   * TokenProcessor.
   *
   * @var \Drupal\ldap_servers\Processor\TokenProcessor
   */
  private $processor;

  /**
   * Test setup.
   */
  protected function setUp() : void {
    parent::setUp();
    $this->ldapEntry = new Entry('cn=hpotter,ou=Gryffindor,ou=student,ou=people,dc=hogwarts,dc=edu', [
      'mail' => [
        'hpotter@hogwarts.edu',
      ],
      'sAMAccountName' => [
        'hpotter',
      ],
      'house' => [
        'Gryffindor',
        'Privet Drive',
      ],
      'guid' => [
        'sdafsdfsdf',
      ],
    ]);
    $this->processor = $this
      ->getMockBuilder(TokenProcessor::class)
      ->setMethods(NULL)
      ->disableOriginalConstructor()
      ->getMock();
  }

  /**
   * Test the replacement of tokens.
   *
   * See http://drupal.org/node/1245736 for test tokens.
   */
  public function testTokenReplacement() : void {
    $literalValue = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, 'literalvalue');
    self::assertEquals('literalvalue', $literalValue);
    $dn = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[dn]');
    self::assertEquals($this->ldapEntry
      ->getDn(), $dn);
    $house0 = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[house:0]');
    self::assertEquals('Gryffindor', $house0);
    $house_noindex = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[house]');
    self::assertEquals('Gryffindor', $house_noindex);
    $houseLast = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[house:last]');
    self::assertEquals('Privet Drive', $houseLast);
    $mixed = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, 'thisold[house:0]');
    self::assertEquals('thisoldGryffindor', $mixed);
    $compound = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[sAMAccountName:0][house:0]');
    self::assertEquals('hpotterGryffindor', $compound);
  }

  /**
   * Test case sensitive issues.
   */
  public function testTokenReplacementCaseSensitivity() : void {
    $sAMAccountName = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[samaccountname:0]');
    self::assertEquals('hpotter', $sAMAccountName);
    $sAMAccountNameMixedCase = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[sAMAccountName:0]');
    self::assertEquals('hpotter', $sAMAccountNameMixedCase);
    $sAMAccountName2 = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[samaccountname]');
    self::assertEquals('hpotter', $sAMAccountName2);
    $sAMAccountName3 = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[sAMAccountName]');
    self::assertEquals('hpotter', $sAMAccountName3);
  }

  /**
   * Test binary conversion.
   */
  public function testBinaryConversion() : void {
    $base64encode = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[guid;base64_encode]');
    self::assertEquals(base64_encode('sdafsdfsdf'), $base64encode);
    $bin2hex = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[guid;bin2hex]');
    self::assertEquals(bin2hex('sdafsdfsdf'), $bin2hex);
    $msguid = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[guid;msguid]');
    self::assertEquals(ConversionHelper::convertMsguidToString('sdafsdfsdf'), $msguid);
    $binary = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[guid;binary]');
    self::assertEquals(bin2hex('sdafsdfsdf'), $binary);
  }

  /**
   * Test reversal.
   */
  public function testReversal() : void {

    // Test regular reversal (2 elements) at beginning.
    $dc = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[dc:reverse:0]');
    self::assertEquals('edu', $dc);

    // Test single element reversion.
    $ou = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[cn:reverse:0]');
    self::assertEquals('hpotter', $ou);

    // Test 3 element reversion at end.
    $ou2 = $this->processor
      ->ldapEntryReplacementsForDrupalAccount($this->ldapEntry, '[ou:reverse:2]');
    self::assertEquals('Gryffindor', $ou2);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
PhpunitCompatibilityTrait::getMock Deprecated public function Returns a mock object for the specified class using the available method.
PhpunitCompatibilityTrait::setExpectedException Deprecated public function Compatibility layer for PHPUnit 6 to support PHPUnit 4 code.
TokenTest::$ldapEntry private property LDAP Entry.
TokenTest::$processor private property TokenProcessor.
TokenTest::setUp protected function Test setup. Overrides UnitTestCase::setUp
TokenTest::testBinaryConversion public function Test binary conversion.
TokenTest::testReversal public function Test reversal.
TokenTest::testTokenReplacement public function Test the replacement of tokens.
TokenTest::testTokenReplacementCaseSensitivity public function Test case sensitive issues.
UnitTestCase::$randomGenerator protected property The random generator.
UnitTestCase::$root protected property The app root. 1
UnitTestCase::assertArrayEquals protected function Asserts if two arrays are equal by sorting them first.
UnitTestCase::getBlockMockWithMachineName Deprecated protected function Mocks a block with a block plugin. 1
UnitTestCase::getClassResolverStub protected function Returns a stub class resolver.
UnitTestCase::getConfigFactoryStub public function Returns a stub config factory that behaves according to the passed array.
UnitTestCase::getConfigStorageStub public function Returns a stub config storage that returns the supplied configuration.
UnitTestCase::getContainerWithCacheTagsInvalidator protected function Sets up a container with a cache tags invalidator.
UnitTestCase::getRandomGenerator protected function Gets the random generator for the utility methods.
UnitTestCase::getStringTranslationStub public function Returns a stub translation manager that just returns the passed string.
UnitTestCase::randomMachineName public function Generates a unique random string containing letters and numbers.