preparing for LDAP test job / phpunit via phing
authorPhilipp Schüle <p.schuele@metaways.de>
Fri, 22 Nov 2013 20:24:59 +0000 (21:24 +0100)
committerPhilipp Schüle <p.schuele@metaways.de>
Mon, 25 Nov 2013 09:09:53 +0000 (10:09 +0100)
- adds ldap test setup howto + ldif
- improved phpunit target in build.xml

Change-Id: Iab856a99a7b38e8cf1558b7f39b5c870eb2a1068
Reviewed-on: https://gerrit.tine20.org/tine20/2560
Tested-by: jenkins user
Reviewed-by: Philipp Schüle <p.schuele@metaways.de>
tests/ldap/nodomain.ldif [new file with mode: 0644]
tests/ldap/openldap.txt [new file with mode: 0644]
tests/tine20/phpunit.xml
tine20/build.xml

diff --git a/tests/ldap/nodomain.ldif b/tests/ldap/nodomain.ldif
new file mode 100644 (file)
index 0000000..45328b6
--- /dev/null
@@ -0,0 +1,67 @@
+dn: ou=groups,dc=nodomain
+ou: groups
+objectClass: organizationalUnit
+objectClass: top
+structuralObjectClass: organizationalUnit
+entryUUID: 5a3a2b20-dba5-1030-964c-4deef62e5c86
+creatorsName: cn=admin,dc=nodomain
+createTimestamp: 20120125133638Z
+entryCSN: 20120125133638.695977Z#000000#000#000000
+modifiersName: cn=admin,dc=nodomain
+modifyTimestamp: 20120125133638Z
+
+dn: cn=Administrators,ou=groups,dc=nodomain
+cn: Administrators
+gidNumber: 1062
+memberUid: admin
+objectClass: posixGroup
+objectClass: top
+structuralObjectClass: posixGroup
+entryUUID: c3c7b0d0-dba5-1030-964f-4deef62e5c86
+creatorsName: cn=admin,dc=nodomain
+createTimestamp: 20120125133935Z
+entryCSN: 20120125133935.784228Z#000000#000#000000
+modifiersName: cn=admin,dc=nodomain
+modifyTimestamp: 20120125133935Z
+
+dn: cn=Users,ou=groups,dc=nodomain
+cn: Users
+gidNumber: 1063
+memberUid: admin
+objectClass: posixGroup
+objectClass: top
+structuralObjectClass: posixGroup
+entryUUID: c3c7b0d0-dba5-1030-964f-4deef62e5c55
+creatorsName: cn=admin,dc=nodomain
+createTimestamp: 20120125133935Z
+entryCSN: 20120125133935.784228Z#000000#000#000000
+modifiersName: cn=admin,dc=nodomain
+modifyTimestamp: 20120125133935Z
+
+dn: ou=users,dc=nodomain
+ou: users
+objectClass: organizationalUnit
+objectClass: top
+structuralObjectClass: organizationalUnit
+entryUUID: 5a3a2b20-dba5-1030-964c-4deef62e5c55
+creatorsName: cn=admin,dc=nodomain
+createTimestamp: 20120125133638Z
+entryCSN: 20120125133638.695977Z#000000#000#000000
+modifiersName: cn=admin,dc=nodomain
+modifyTimestamp: 20120125133638Z
+
+dn: uid=unittest,ou=users,dc=nodomain
+objectClass: inetOrgPerson
+objectClass: posixAccount
+objectClass: shadowAccount
+uid: unittest
+sn: Test
+givenName: Unit
+cn: Unit Test
+displayName: Unit Test
+uidNumber: 10000
+gidNumber: 1062
+userPassword: testpw
+mail: unittest@tine20.org
+homeDirectory: /home/unittest
+
diff --git a/tests/ldap/openldap.txt b/tests/ldap/openldap.txt
new file mode 100644 (file)
index 0000000..afe2780
--- /dev/null
@@ -0,0 +1,41 @@
+install openldap
+----------------
+
+$ apt-get install slapd ldap-utils
+
+init database
+-------------
+/// is this needed?
+---????
+$ sudo mkdir /var/lib/ldap/example
+$ sudo chown openldap /var/lib/ldap/example
+$ slappasswd
+New password: 
+Re-enter new password: 
+{SSHA}****
+$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f initial.ldif
+---????
+
+ldif import
+-----------
+
+- replace unittest user password in nodomain.ldif first
+
+- not so good but works:
+$ sudo service slapd stop
+$ sudo slapadd -l nodomain.ldif
+$ sudo service slapd start
+
+this does not work :/
+$ ldapadd -D cn=admin,dc=nodomain -wpassword -f nodomain.ldif
+
+reset all users/groups
+--------
+
+$ ldapdelete -D cn=admin,dc=nodomain -wpassword "cn=Administrators,ou=groups,dc=nodomain"
+$ ldapdelete -D cn=admin,dc=nodomain -wpassword "cn=Users,ou=groups,dc=nodomain"
+$ ldapdelete -D cn=admin,dc=nodomain -wpassword "uid=unittest,ou=users,dc=nodomain"
+$ ldapdelete -D cn=admin,dc=nodomain -wpassword "ou=users,dc=nodomain"
+$ ldapdelete -D cn=admin,dc=nodomain -wpassword "ou=groups,dc=nodomain"
+
+// more users/groups to delete?
\ No newline at end of file
index f38ec6f..4ec55f0 100644 (file)
@@ -8,7 +8,6 @@
          syntaxCheck="false"
          colors="true">
     <listeners>
-        <listener class="LogListener" file="LogListener.php">
-        </listener>
+        <listener class="LogListener" file="LogListener.php" />
     </listeners>
 </phpunit>
\ No newline at end of file
index 9af2e7e..314e909 100644 (file)
@@ -10,7 +10,8 @@
     
     <property name="builddir" value="${project.basedir}/build" override="true" />
     <property name="localedir" value="Tinebase/js/Locale" override="true" />
-    <property name="configdir" value="." override="true" />
+    <property name="configdir" value="${project.basedir}" override="true" />
+    <property name="testconfigdir" value="${project.basedir}/../tests/tine20" override="true" />
     
     <!-- ============================================  -->
     <!-- Target: prepare                               -->
         </phpdoc2>
     </target>
     
-    <!-- ============================================  -->
-    <!-- Target: phpunit                               -->
-    <!-- ============================================  -->
+    <!-- ============================================                       -->
+    <!-- Target: phpunit                                                    -->
+    <!--                                                                    -->
+    <!-- you can define the includes like this (runs all Tinebase tests):   -->
+    <!-- $ vendor/bin/phing phpunit -Dtestinclude=Tinebase/**/*Test.php     -->
+    <!-- ============================================                       -->
     <target name="phpunit">
+       <!-- TODO we still have some test files that are named *Tests.php, rename them or adjust the include property -->
+        <property name="testinclude" value="**/*Test.php" override="true" />
+        
         <echo msg="Starting Tests..." />
+        <echo msg="Using config file ${testconfigdir}/phpunit.xml" />
         
-        <if>
-            <isset property="configPath" />
-            <then>
-                <includepath classpath = "${configPath}" />
-            </then>
-        </if>
+        <!-- do we need this? -->
+        <!--includepath classpath = "${testconfigdir}" /-->
         
-        <delete dir="${builddir}/reports"/>
+        <delete dir="${builddir}/reports" />
         <mkdir dir="${builddir}/reports" />
+        <mkdir dir="${builddir}/reports/tests" />
         
-        <phpunit configuration="../tests/tine20/phpunit.xml" haltonfailure="true" haltonerror="true" printsummary="true">
-            <formatter type="plain" usefile="false"/>
-            <formatter type="xml" todir="${builddir}/reports"/>
+        <phpunit configuration="${testconfigdir}/phpunit.xml" haltonfailure="true" printsummary="true">
+            <formatter type="plain" usefile="false" />
+            <formatter type="xml" todir="${builddir}/reports" />
             <batchtest>
-                <fileset dir="../tests/tine20">
-                  <include name="**/*Test.php"/>
-                  <exclude name="Tinebase/AccountTest.php"/>
+                <fileset dir="${project.basedir}/../tests/tine20">
+                  <include name="${testinclude}" />
+                  <exclude name="Tinebase/AccountTest.php" />
                 </fileset>
             </batchtest>
         </phpunit>
         
-        <phpunitreport infile="${builddir}/reports/testsuites.xml" format="frames" todir="${builddir}/reports/tests"/>
+        <phpunitreport infile="${builddir}/reports/testsuites.xml" format="frames" todir="${builddir}/reports/tests" />
+    </target>
+
+    <!-- ============================================      -->
+    <!-- Target: phpunit-exec                              -->
+    <!--                                                   -->
+    <!-- this runs phpunit in an exec task. we do this     -->
+    <!-- to overcome some drawbacks (for example we can't  -->
+    <!-- use the LogListener) of the phing phpunit task.   -->
+    <!-- ============================================      -->
+    <target name="phpunit-exec">
+        <property name="testinclude" value="AllTests.php" override="true" />
+        
+        <delete dir="${builddir}/reports" />
+        <mkdir dir="${builddir}/reports" />
+
+        <echo msg="Starting Tests..." />
+        <echo msg="Using config file ${testconfigdir}/phpunit.xml" />
+        
+        <exec executable="${project.basedir}/vendor/bin/phpunit" dir="${project.basedir}/../tests/tine20" passthru="true">
+             <arg line="-d max_execution_time=0
+             --configuration ${testconfigdir}/phpunit.xml
+             --log-junit ${builddir}/reports/testsuites.xml
+             ${testinclude} " />
+        </exec>
     </target>
     
     <!-- ============================================  -->
     <!-- Target: report                                -->
+    <!-- TODO remove code duplication (phpunit target) -->
     <!-- ============================================  -->
     <target name="report">
         <echo msg="Starting Tests..." />