public function testPassword()
 {
     $hash = new BasicHashService();
     $password = '******';
     $doc = new PasswordTraitDoc();
     $doc->setPassword($password);
     $this->documentManager->persist($doc);
     $this->documentManager->flush();
     $this->assertNotEquals($password, $doc->getPassword());
     $this->assertEquals($doc->getPassword(), $hash->hashValue($password, $doc->getSalt()));
     $this->assertNotEquals($doc->getPassword(), $hash->hashValue('not password', $doc->getSalt()));
     $newPassword = '******';
     $doc->setPassword($newPassword);
     $this->documentManager->flush();
     $this->assertNotEquals($newPassword, $doc->getPassword());
     $this->assertEquals($doc->getPassword(), $hash->hashValue($newPassword, $doc->getSalt()));
     $this->assertNotEquals($doc->getPassword(), $hash->hashValue($password, $doc->getSalt()));
 }
 public function testPasswordUpdateAllow()
 {
     $this->calls = array();
     $documentManager = $this->documentManager;
     $eventManager = $documentManager->getEventManager();
     $eventManager->addEventListener(Events::UPDATE_DENIED, $this);
     $testDoc = new PasswordTraitDoc();
     $testDoc->setPassword('password1');
     $documentManager->persist($testDoc);
     $documentManager->flush();
     $id = $testDoc->getId();
     $documentManager->clear();
     $repository = $documentManager->getRepository(get_class($testDoc));
     $testDoc = $repository->find($id);
     $testDoc->setPassword('password2');
     $documentManager->flush();
     $this->assertFalse(isset($this->calls[Events::UPDATE_DENIED]));
 }