diff --git a/.travis.yml b/.travis.yml index 8ef38b86..e1d1ca4a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,17 +1,87 @@ +sudo: required language: php php: - - 5.3 - - 5.4 - - 5.5 + - 5.6 + - 7.0 + +addons: + apt: + packages: + - mysql-server-5.6 + - mysql-client-core-5.6 + - mysql-client-5.6 + - php5-pgsql + - libxml2-utils + +env: + global: + - PHP_COVERAGE=FALSE + matrix: + - CORE_FORK_BRANCH=nc_master DB=sqlite + - CORE_FORK_BRANCH=nc_stable11 DB=sqlite + - CORE_FORK_BRANCH=nc_stable12 DB=sqlite + - CORE_FORK_BRANCH=oc_master DB=sqlite + - CORE_FORK_BRANCH=oc_stable10 DB=sqlite + - CORE_FORK_BRANCH=nc_master DB=mysql + - CORE_FORK_BRANCH=nc_stable11 DB=mysql + - CORE_FORK_BRANCH=nc_stable12 DB=mysql + - CORE_FORK_BRANCH=oc_master DB=mysql + - CORE_FORK_BRANCH=oc_stable10 DB=mysql + +matrix: + allow_failures: + - php: 7.0 + fast_finish: true + +branches: + only: + - master before_install: + - php --info + + # Set up DB + - if [[ "$DB" == 'pgsql' ]]; then createuser -U travis -s oc_autotest; fi + - if [[ "$DB" == 'mysql' ]]; then mysql -u root -e 'create database oc_autotest;'; fi + - if [[ "$DB" == 'mysql' ]]; then mysql -u root -e "CREATE USER 'oc_autotest'@'localhost' IDENTIFIED BY '';"; fi + - if [[ "$DB" == 'mysql' ]]; then mysql -u root -e "GRANT ALL ON oc_autotest.* TO 'oc_autotest'@'localhost';"; fi + - cd .. - - git clone https://github.com/owncloud/core.git + - if [[ $(echo $CORE_FORK_BRANCH | awk -F '_' '{print $1}') == 'oc' ]]; then git clone https://github.com/owncloud/core.git --recursive --depth 1 -b $(echo $CORE_FORK_BRANCH | awk -F '_' '{print $2}') core; fi + - if [[ $(echo $CORE_FORK_BRANCH | awk -F '_' '{print $1}') == 'nc' ]]; then git clone https://github.com/nextcloud/server.git --recursive --depth 1 -b $(echo $CORE_FORK_BRANCH | awk -F '_' '{print $2}') core; fi - mv registration core/apps/ - - cd core - - git submodule init - - git submodule update - - cd apps/registration + +before_script: + # Set up core + - php -f core/occ maintenance:install --database-name oc_autotest --database-user oc_autotest --admin-user admin --admin-pass admin --database $DB --database-pass='' + + # Set up app + - php -f core/occ app:enable registration + # Enable app twice to check occ errors of registered commands + - php -f core/occ app:enable registration + - cd core/apps/registration + + # XDebug is only needed if we report coverage -> speeds up other builds + - if [[ "$PHP_COVERAGE" = "FALSE" ]]; then phpenv config-rm xdebug.ini; fi script: - - phpunit tests \ No newline at end of file + # Check info.xml schema validity + - wget https://apps.nextcloud.com/schema/apps/info.xsd + - xmllint appinfo/info.xml --schema info.xsd --noout + - rm info.xsd + + # Check PHP syntax errors + #- find . -name \*.php -not -path './vendor/*' -exec php -l "{}" \; + + # Run server's app code checker + # TODO: enable once table renames are possible + # - php ../../occ app:check-code mail + + + # Run PHP tests + - cd tests + - phpunit -c phpunit.xml + + # Test packaging + #- cd .. + #- if [[ "$PACKAGE" = "TRUE" ]]; then make appstore; fi diff --git a/phpunit.xml b/tests/phpunit.xml similarity index 64% rename from phpunit.xml rename to tests/phpunit.xml index aff4ae02..ac9424d9 100644 --- a/phpunit.xml +++ b/tests/phpunit.xml @@ -1,7 +1,7 @@ - + - ./tests/unit + ./unit diff --git a/tests/unit/controller/ApiControllerTest.php b/tests/unit/controller/ApiControllerTest.php index d16a43b5..c466e108 100644 --- a/tests/unit/controller/ApiControllerTest.php +++ b/tests/unit/controller/ApiControllerTest.php @@ -122,10 +122,10 @@ public function testValidateFailUsername() { */ public function testStatusNoRegistration() { $this->registrationService - ->method('getRegistrationForToken') - ->with('ABCDEF') + ->method('getRegistrationForSecret') + ->with('L2qdLAtrJTx499ErjwkwnZqGmLdm3Acp') ->willThrowException(new DoesNotExistException('')); - $this->controller->status('ABCDEF'); + $this->controller->status('L2qdLAtrJTx499ErjwkwnZqGmLdm3Acp'); } /** @@ -136,10 +136,10 @@ public function testStatusPendingRegistration() { $registration = new Registration(); $registration->setEmailConfirmed(false); $this->registrationService - ->method('getRegistrationForToken') - ->with('ABCDEF') + ->method('getRegistrationForSecret') + ->with('L2qdLAtrJTx499ErjwkwnZqGmLdm3Acp') ->willReturn($registration); - $actual = $this->controller->status('ABCDEF'); + $actual = $this->controller->status('L2qdLAtrJTx499ErjwkwnZqGmLdm3Acp'); } public function testStatusConfirmedRegistration() { @@ -148,8 +148,8 @@ public function testStatusConfirmedRegistration() { $registration->setClientSecret('mysecret'); $user = $this->createMock(IUser::class); $this->registrationService - ->method('getRegistrationForToken') - ->with('ABCDEF') + ->method('getRegistrationForSecret') + ->with('mysecret') ->willReturn($registration); $this->registrationService ->expects($this->once()) @@ -162,7 +162,7 @@ public function testStatusConfirmedRegistration() { $this->registrationService ->expects($this->once()) ->method('generateAppPassword'); - $actual = $this->controller->status('ABCDEF'); + $actual = $this->controller->status('mysecret'); $expected = new DataResponse([]); $this->assertEquals($expected, $actual); } @@ -171,4 +171,4 @@ public function testStatusConfirmedRegistrationWithSecret() { } -} \ No newline at end of file +}