function it_should_convert_values_to_ldap_with_a_batch_modification($connection) { $ldapObject = new LdapObject(...$this->ldapObjectOpts); $ldapObject->set('disabled', true); $ldapObject->set('trustedForAllDelegation', true); $ldapObject->set('username', 'foo'); $ldapObject->add('emailAddress', '*****@*****.**'); $ldapObject->remove('phoneNumber', '555-5555'); $ldapObject->reset('pager'); $uacBatch = ['attrib' => 'userAccountControl', 'modtype' => LDAP_MODIFY_BATCH_REPLACE, 'values' => ["524802"]]; $usernameBatch = ['attrib' => 'username', 'modtype' => LDAP_MODIFY_BATCH_REPLACE, 'values' => ["foo"]]; $emailBatch = ['attrib' => 'emailAddress', 'modtype' => LDAP_MODIFY_BATCH_ADD, 'values' => ["*****@*****.**"]]; $phoneBatch = ['attrib' => 'phoneNumber', 'modtype' => LDAP_MODIFY_BATCH_REMOVE, 'values' => ["555-5555"]]; $pagerBatch = ['attrib' => 'pager', 'modtype' => LDAP_MODIFY_BATCH_REMOVE_ALL]; $connection->execute(Argument::that(function ($operation) { return $operation->getFilter() == '(&(objectClass=*))' && $operation->getBaseDn() == 'cn=foo,dc=foo,dc=bar' && $operation->getAttributes() == ['userAccountControl']; }))->willReturn($this->expectedResult); $this->beConstructedWith($this->schema, $ldapObject->getBatchCollection(), AttributeConverterInterface::TYPE_MODIFY); $this->setLdapConnection($connection); $this->setDn('cn=foo,dc=foo,dc=bar'); $this->toLdap()->getBatchArray()->shouldHaveCount(5); $this->toLdap()->getBatchArray()->shouldContain($uacBatch); $this->toLdap()->getBatchArray()->shouldContain($usernameBatch); $this->toLdap()->getBatchArray()->shouldContain($emailBatch); $this->toLdap()->getBatchArray()->shouldContain($phoneBatch); $this->toLdap()->getBatchArray()->shouldContain($pagerBatch); }
function it_should_hydrate_a_ldap_object_wihtout_a_schema_with_batch_modification() { $ldapObject = new LdapObject(['dn' => 'cn=foo,dc=foo,dc=bar'], [], 'user', ''); $ldapObject->set('givenName', 'Chad'); $ldapObject->add('sn', 'Sikorra'); $ldapObject->remove('sAMAccountName', 'csikorra'); $ldapObject->reset('mail'); $this->hydrateToLdap($ldapObject)->shouldBeEqualTo($this->batch); $this->hydrateToLdap($ldapObject)->shouldHaveCount(4); }
function it_should_call_the_event_dispatcher_modify_events_when_persisting_an_object(EventDispatcherInterface $dispatcher, $connection) { $dn = 'cn=foo,dc=foo,dc=bar'; $batch = new BatchCollection($dn); $batch->add(new Batch(Batch::TYPE['REPLACE'], 'givenName', 'Chad')); $batch->add(new Batch(Batch::TYPE['ADD'], 'sn', 'Sikorra')); $batch->add(new Batch(Batch::TYPE['REMOVE'], 'sAMAccountName', 'csikorra')); $batch->add(new Batch(Batch::TYPE['REMOVE_ALL'], 'mail')); $connection->execute(new BatchModifyOperation($dn, $batch))->willReturn(null); $this->beConstructedWith($connection, $this->objectSchemaFactory, $dispatcher); $ldapObject = new LdapObject(['dn' => $dn], 'user'); $ldapObject->set('firstName', 'Chad'); $ldapObject->add('lastName', 'Sikorra'); $ldapObject->remove('username', 'csikorra'); $ldapObject->reset('emailAddress'); $beforeEvent = new LdapObjectEvent(Event::LDAP_OBJECT_BEFORE_MODIFY, $ldapObject); $afterEvent = new LdapObjectEvent(Event::LDAP_OBJECT_AFTER_MODIFY, $ldapObject); $dispatcher->dispatch($beforeEvent)->shouldBeCalled(); $dispatcher->dispatch($afterEvent)->shouldBeCalled(); $this->persist($ldapObject); }