From ea78f728b153fccc37f732c5f25c897b8dd3123c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Deruss=C3=A9?= Date: Mon, 16 Nov 2020 09:41:36 +0100 Subject: [PATCH] Use GithubAction to run ldap tests --- .../actions/populate-ldap/Dockerfile | 9 ------- .../actions/populate-ldap/action.yml | 9 ------- .../actions/populate-ldap/fixtures.ldif | 26 ------------------- .github/workflows/tests.yml | 24 +++++++++++++---- .travis.yml | 9 ------- .../Tests/Adapter/ExtLdap/AdapterTest.php | 7 ++--- .../Tests/Adapter/ExtLdap/LdapManagerTest.php | 15 +++++------ .../Ldap/Tests/Fixtures/conf/slapd.conf | 18 ------------- .../Ldap/Tests/Fixtures/data/base.ldif | 4 --- .../Component/Ldap/Tests/LdapTestCase.php | 2 +- src/Symfony/Component/Ldap/phpunit.xml.dist | 2 +- 11 files changed, 32 insertions(+), 93 deletions(-) delete mode 100644 .github/workflows/actions/populate-ldap/Dockerfile delete mode 100644 .github/workflows/actions/populate-ldap/action.yml delete mode 100644 .github/workflows/actions/populate-ldap/fixtures.ldif delete mode 100644 src/Symfony/Component/Ldap/Tests/Fixtures/conf/slapd.conf delete mode 100644 src/Symfony/Component/Ldap/Tests/Fixtures/data/base.ldif diff --git a/.github/workflows/actions/populate-ldap/Dockerfile b/.github/workflows/actions/populate-ldap/Dockerfile deleted file mode 100644 index c256b27bf6..0000000000 --- a/.github/workflows/actions/populate-ldap/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -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 diff --git a/.github/workflows/actions/populate-ldap/action.yml b/.github/workflows/actions/populate-ldap/action.yml deleted file mode 100644 index 971d98a0fd..0000000000 --- a/.github/workflows/actions/populate-ldap/action.yml +++ /dev/null @@ -1,9 +0,0 @@ -name: 'LDAP Populate' -description: 'Create a pre-populated LDAP server with symfony test data' -branding: - icon: 'database' - color: 'blue' - -runs: - using: 'docker' - image: 'Dockerfile' diff --git a/.github/workflows/actions/populate-ldap/fixtures.ldif b/.github/workflows/actions/populate-ldap/fixtures.ldif deleted file mode 100644 index 43842146b2..0000000000 --- a/.github/workflows/actions/populate-ldap/fixtures.ldif +++ /dev/null @@ -1,26 +0,0 @@ -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 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c12a7339bb..efb905e996 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,6 +15,17 @@ jobs: 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: @@ -45,17 +56,20 @@ jobs: - 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)" @@ -83,7 +97,7 @@ jobs: 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' diff --git a/.travis.yml b/.travis.yml index cbb8984c88..582625f988 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,8 +9,6 @@ addons: apt_packages: - parallel - language-pack-fr-base - - ldap-utils - - slapd - zookeeperd - libzookeeper-mt-dev @@ -164,13 +162,6 @@ before_install: 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 diff --git a/src/Symfony/Component/Ldap/Tests/Adapter/ExtLdap/AdapterTest.php b/src/Symfony/Component/Ldap/Tests/Adapter/ExtLdap/AdapterTest.php index 3447cdda96..d7b06c6b35 100644 --- a/src/Symfony/Component/Ldap/Tests/Adapter/ExtLdap/AdapterTest.php +++ b/src/Symfony/Component/Ldap/Tests/Adapter/ExtLdap/AdapterTest.php @@ -22,6 +22,7 @@ use Symfony\Component\Ldap\Tests\LdapTestCase; /** * @requires extension ldap + * @group integration */ class AdapterTest extends LdapTestCase { @@ -116,7 +117,7 @@ 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); @@ -147,7 +148,7 @@ class AdapterTest extends LdapTestCase $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. @@ -199,7 +200,7 @@ class AdapterTest extends LdapTestCase 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); diff --git a/src/Symfony/Component/Ldap/Tests/Adapter/ExtLdap/LdapManagerTest.php b/src/Symfony/Component/Ldap/Tests/Adapter/ExtLdap/LdapManagerTest.php index 0fcbbfadec..bfdd7d5342 100644 --- a/src/Symfony/Component/Ldap/Tests/Adapter/ExtLdap/LdapManagerTest.php +++ b/src/Symfony/Component/Ldap/Tests/Adapter/ExtLdap/LdapManagerTest.php @@ -96,9 +96,8 @@ class LdapManagerTest extends LdapTestCase $em->add($entry); try { $em->add($entry); - } catch (LdapException $e) { + } finally { $em->remove($entry); - throw $e; } } @@ -215,12 +214,12 @@ class LdapManagerTest extends LdapTestCase $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() diff --git a/src/Symfony/Component/Ldap/Tests/Fixtures/conf/slapd.conf b/src/Symfony/Component/Ldap/Tests/Fixtures/conf/slapd.conf deleted file mode 100644 index 24eebcb2db..0000000000 --- a/src/Symfony/Component/Ldap/Tests/Fixtures/conf/slapd.conf +++ /dev/null @@ -1,18 +0,0 @@ -# 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 diff --git a/src/Symfony/Component/Ldap/Tests/Fixtures/data/base.ldif b/src/Symfony/Component/Ldap/Tests/Fixtures/data/base.ldif deleted file mode 100644 index 25abb296c9..0000000000 --- a/src/Symfony/Component/Ldap/Tests/Fixtures/data/base.ldif +++ /dev/null @@ -1,4 +0,0 @@ -dn: dc=symfony,dc=com -objectClass: dcObject -objectClass: organizationalUnit -ou: Organization diff --git a/src/Symfony/Component/Ldap/Tests/LdapTestCase.php b/src/Symfony/Component/Ldap/Tests/LdapTestCase.php index 6caf659e09..606065e491 100644 --- a/src/Symfony/Component/Ldap/Tests/LdapTestCase.php +++ b/src/Symfony/Component/Ldap/Tests/LdapTestCase.php @@ -9,7 +9,7 @@ class LdapTestCase extends TestCase 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'); diff --git a/src/Symfony/Component/Ldap/phpunit.xml.dist b/src/Symfony/Component/Ldap/phpunit.xml.dist index e9861f8221..a679848078 100644 --- a/src/Symfony/Component/Ldap/phpunit.xml.dist +++ b/src/Symfony/Component/Ldap/phpunit.xml.dist @@ -10,7 +10,7 @@ > - +