+++ /dev/null
-FROM osixia/openldap
-LABEL maintainer="wshihadeh.devx@gmail.com"
-ENV LDAP_ORGANISATION="Symfony"
-ENV LDAP_DOMAIN="symfony.com"
-ENV LDAP_ADMIN_PASSWORD="symfony"
-ENV LDAP_BASE_DN="dc=symfony,dc=com"
-ENV LDAP_SEED_INTERNAL_LDIF_PATH="/ldif-data"
-RUN mkdir /ldif-data
-COPY ./fixtures.ldif /ldif-data/50-fixtures.ldif
+++ /dev/null
-name: 'LDAP Populate'
-description: 'Create a pre-populated LDAP server with symfony test data'
-branding:
- icon: 'database'
- color: 'blue'
-
-runs:
- using: 'docker'
- image: 'Dockerfile'
+++ /dev/null
-dn: cn=Fabien Potencier,dc=symfony,dc=com
-objectClass: inetOrgPerson
-objectClass: organizationalPerson
-objectClass: person
-objectClass: top
-cn: Fabien Potencier
-sn: fabpot
-mail: fabpot@symfony.com
-mail: fabien@potencier.com
-ou: People
-ou: Maintainers
-ou: Founder
-givenName: Fabien Potencier
-description: Founder and project lead @Symfony
-
-dn: ou=Components,dc=symfony,dc=com
-objectclass: organizationalunit
-ou: Components
-
-dn: ou=Ldap,ou=Components,dc=symfony,dc=com
-objectclass: organizationalunit
-ou: Ldap
-
-dn: ou=Ldap scoping,ou=Ldap,ou=Components,dc=symfony,dc=com
-objectclass: organizationalunit
-ou: Ldap scoping
php: ['7.1', '7.4']
services:
+ ldap:
+ image: bitnami/openldap
+ ports:
+ - 3389:3389
+ env:
+ LDAP_ADMIN_USERNAME: admin
+ LDAP_ADMIN_PASSWORD: symfony
+ LDAP_ROOT: dc=symfony,dc=com
+ LDAP_PORT_NUMBER: 3389
+ LDAP_USERS: a
+ LDAP_PASSWORDS: a
redis:
image: redis:6.0.0
ports:
- name: Checkout
uses: actions/checkout@v2
- - name: Populate LDAP
- uses: ./.github/actions/populate-ldap
-
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
coverage: "none"
- extensions: "memcached,redis,xsl"
+ extensions: "memcached,redis,xsl,ldap"
ini-values: "memory_limit=-1"
php-version: "${{ matrix.php }}"
+ - name: Load fixtures
+ uses: docker://bitnami/openldap
+ with:
+ entrypoint: /bin/bash
+ args: -c "(ldapwhoami -h localhost:3389 -D cn=admin,dc=symfony,dc=com -w symfony||sleep 5) && ldapadd -h ldap:3389 -D cn=admin,dc=symfony,dc=com -w symfony -f src/Symfony/Component/Ldap/Tests/Fixtures/data/fixtures.ldif && ldapdelete -h ldap:3389 -D cn=admin,dc=symfony,dc=com -w symfony cn=a,ou=users,dc=symfony,dc=com"
+
- name: Configure composer
run: |
COMPOSER_HOME="$(composer config home)"
echo "::endgroup::"
- name: Run tests
- run: ./phpunit --group integration
+ run: ./phpunit --group integration -v
env:
REDIS_HOST: localhost
REDIS_CLUSTER_HOSTS: 'localhost:7000 localhost:7001 localhost:7002 localhost:7003 localhost:7004 localhost:7005'
apt_packages:
- parallel
- language-pack-fr-base
- - ldap-utils
- - slapd
- zookeeperd
- libzookeeper-mt-dev
tfold ext.redis tpecl redis-5.2.3 redis.so $INI "no"
done
- - |
- # Load fixtures
- if [[ ! $skip ]]; then
- ldapadd -h localhost:3389 -D cn=admin,dc=symfony,dc=com -w symfony -f src/Symfony/Component/Ldap/Tests/Fixtures/data/base.ldif &&
- ldapadd -h localhost:3389 -D cn=admin,dc=symfony,dc=com -w symfony -f src/Symfony/Component/Ldap/Tests/Fixtures/data/fixtures.ldif
- fi
-
install:
- |
# Install the phpunit-bridge from a PR if required
/**
* @requires extension ldap
+ * @group integration
*/
class AdapterTest extends LdapTestCase
{
public function testLdapPagination()
{
- $ldap = new Adapter(array_merge($this->getLdapConfig()));
+ $ldap = new Adapter($this->getLdapConfig());
$ldap->getConnection()->bind('cn=admin,dc=symfony,dc=com', 'symfony');
$entries = $this->setupTestUsers($ldap);
$this->assertEquals(\count($fully_paged_query->getResources()), 1);
$this->assertEquals(\count($paged_query->getResources()), 5);
- if (\PHP_MAJOR_VERSION > 7 || (\PHP_MAJOR_VERSION == 7 && \PHP_MINOR_VERSION >= 2)) {
+ if (\PHP_VERSION_ID >= 70200) {
// This last query is to ensure that we haven't botched the state of our connection
// by not resetting pagination properly. extldap <= PHP 7.1 do not implement the necessary
// bits to work around an implementation flaw, so we simply can't guarantee this to work there.
public function testLdapPaginationLimits()
{
- $ldap = new Adapter(array_merge($this->getLdapConfig()));
+ $ldap = new Adapter($this->getLdapConfig());
$ldap->getConnection()->bind('cn=admin,dc=symfony,dc=com', 'symfony');
$entries = $this->setupTestUsers($ldap);
$em->add($entry);
try {
$em->add($entry);
- } catch (LdapException $e) {
+ } finally {
$em->remove($entry);
- throw $e;
}
}
$newEntry = $result[0];
$originalCN = $entry->getAttribute('cn')[0];
- $this->assertContains($originalCN, $newEntry->getAttribute('cn'));
- $this->assertContains('Kevin', $newEntry->getAttribute('cn'));
-
- $entryManager->rename($newEntry, 'cn='.$originalCN);
-
- $this->executeSearchQuery(1);
+ try {
+ $this->assertContains($originalCN, $newEntry->getAttribute('cn'));
+ $this->assertContains('Kevin', $newEntry->getAttribute('cn'));
+ } finally {
+ $entryManager->rename($newEntry, 'cn='.$originalCN);
+ }
}
public function testLdapAddRemoveAttributeValues()
+++ /dev/null
-# See slapd.conf(5) for details on configuration options.
-include /etc/ldap/schema/core.schema
-include /etc/ldap/schema/cosine.schema
-include /etc/ldap/schema/inetorgperson.schema
-include /etc/ldap/schema/nis.schema
-
-pidfile /tmp/slapd/slapd.pid
-argsfile /tmp/slapd/slapd.args
-
-modulepath /tmp/slapd-modules
-moduleload back_hdb
-
-database hdb
-directory /tmp/slapd
-
-suffix "dc=symfony,dc=com"
-rootdn "cn=admin,dc=symfony,dc=com"
-rootpw {SSHA}btWUi971ytYpVMbZLkaQ2A6ETh3VA0lL
+++ /dev/null
-dn: dc=symfony,dc=com
-objectClass: dcObject
-objectClass: organizationalUnit
-ou: Organization
protected function getLdapConfig()
{
$h = @ldap_connect(getenv('LDAP_HOST'), getenv('LDAP_PORT'));
- ldap_set_option($h, LDAP_OPT_PROTOCOL_VERSION, 3);
+ @ldap_set_option($h, LDAP_OPT_PROTOCOL_VERSION, 3);
if (!$h || !@ldap_bind($h)) {
$this->markTestSkipped('No server is listening on LDAP_HOST:LDAP_PORT');
>
<php>
<ini name="error_reporting" value="-1" />
- <env name="LDAP_HOST" value="127.0.0.1" />
+ <env name="LDAP_HOST" value="localhost" />
<env name="LDAP_PORT" value="3389" />
</php>