summaryrefslogtreecommitdiffstats
path: root/.github/workflows/api-integration-tests.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/api-integration-tests.yml')
-rw-r--r--.github/workflows/api-integration-tests.yml145
1 files changed, 145 insertions, 0 deletions
diff --git a/.github/workflows/api-integration-tests.yml b/.github/workflows/api-integration-tests.yml
new file mode 100644
index 000000000..2d98a4776
--- /dev/null
+++ b/.github/workflows/api-integration-tests.yml
@@ -0,0 +1,145 @@
+name: Integration Tests
+on:
+ pull_request
+
+env:
+ POSTGRES_PASSWORD: nc_test_db
+ MYSQL_USER: nc_test
+ MYSQL_PASSWORD: nc_test_db
+ MYSQL_DATABASE: nc_test
+ MYSQL_PORT: 3800
+
+jobs:
+ integration:
+ runs-on: ubuntu-latest
+ continue-on-error: ${{ matrix.experimental }}
+ name: "Integration: Nextcloud ${{ matrix.nextcloud }} - PHP ${{ matrix.php-versions }} - DB ${{ matrix.database }}"
+ services:
+ postgres:
+ image: postgres
+ env:
+ POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }}
+ options: >-
+ --health-cmd pg_isready
+ --health-interval 10s
+ --health-timeout 5s
+ --health-retries 5
+ ports:
+ - 5432:5432 # Maps tcp port 5432 on service container to the host
+ strategy:
+ matrix:
+ php-versions: ['7.3', '7.4']
+ nextcloud: ['stable20', 'stable21']
+ database: ['sqlite', 'pgsql', 'mysql']
+ experimental: [false]
+ include:
+ - php-versions: 7.4
+ nextcloud: pre-release
+ database: sqlite
+ experimental: true
+ - php-versions: 8.0
+ nextcloud: pre-release
+ database: sqlite
+ experimental: true
+ exclude: #unsupported combination
+ - php-versions: 7.4
+ nextcloud: 17
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php-versions }}
+ extensions: pdo_sqlite,pdo_mysql,pdo_pgsql,gd,zip
+ coverage: none
+
+ ### MySQL specific setup
+ - name: Setup mysql
+ if: matrix.database == 'mysql'
+ uses: getong/mariadb-action@v1.1
+ with:
+ host port: ${{ env.MYSQL_PORT }}
+ mysql database: ${{ env.MYSQL_DATABASE }}
+ mysql root password: ${{ env.MYSQL_PASSWORD }}
+ mysql user: ${{ env.MYSQL_USER }}
+ mysql password: ${{ env.MYSQL_PASSWORD }}
+
+ - name: Set up server MySQL
+ if: matrix.database == 'mysql'
+ uses: SMillerDev/nextcloud-actions/setup-nextcloud@main
+ with:
+ version: ${{ matrix.nextcloud }}
+ cron: true
+ database-type: ${{ matrix.database }}
+ database-host: 127.0.0.1
+ database-port: ${{ env.MYSQL_PORT }}
+ database-name: ${{ env.MYSQL_DATABASE }}
+ database-user: root
+ database-password: ${{ env.MYSQL_PASSWORD }}
+
+ ### Back to normal setup
+ - name: Set up server non MySQL
+ if: matrix.database != 'mysql'
+ uses: SMillerDev/nextcloud-actions/setup-nextcloud@main
+ with:
+ version: ${{ matrix.nextcloud }}
+ cron: true
+ database-type: ${{ matrix.database }}
+ database-host: localhost
+ database-port: 5432
+ database-name: postgres
+ database-user: postgres
+ database-password: ${{ env.POSTGRES_PASSWORD }}
+
+ - name: Prime app build
+ run: make
+
+ - name: Configure server with app
+ uses: SMillerDev/nextcloud-actions/setup-nextcloud-app@main
+ with:
+ app: 'news'
+ check-code: true
+
+ - name: Setup problem matchers for PHP
+ run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
+
+ - name: Functional tests maintenance
+ working-directory: ../server
+ run: |
+ ./occ migrations:migrate news
+ ./occ maintenance:repair
+
+ - name: Functional tests explore
+ working-directory: ../server
+ run: ./occ news:generate-explore --votes 100 "https://nextcloud.com/blog/feed/"
+
+ - name: Functional tests folder
+ working-directory: ../server
+ run: |
+ ./occ news:folder:add 'admin' 'Something'
+ ./occ news:folder:list 'admin' | grep 'Something'
+
+ - name: Functional tests feed
+ working-directory: ../server
+ run: |
+ ./occ news:feed:add 'admin' "https://nextcloud.com/blog/feed/"
+ ./occ news:feed:list 'admin' | grep 'nextcloud\.com'
+
+ - name: Functional tests opml
+ working-directory: ../server
+ run: ./occ news:opml:export 'admin' | grep 'nextcloud\.com'
+
+ - name: Functional tests cleanup
+ working-directory: ../server
+ run: |
+ ./occ news:folder:delete 'admin' $(./occ news:folder:list 'admin' | grep 'Something' -1 | head -1 | grep -oE '[0-9]*')
+ ./occ news:feed:delete 'admin' $(./occ news:feed:list 'admin' | grep 'nextcloud\.com' -1 | head -1 | grep -oE '[0-9]*')
+
+ - name: Prep PHP tests
+ working-directory: ../server/apps/news
+ run: make php-test-dependencies
+ - name: Feed tests
+ working-directory: ../server/apps/news
+ run: make feed-test