1
0
mirror of https://github.com/chylex/Nextcloud-News.git synced 2025-04-26 14:15:48 +02:00
Nextcloud-News/.github/workflows/api-integration-tests.yml
Benjamin Brahmer eca96ad37d
Enable API testing ()
Enable API testing with local php server.

This adds many tests for API v1.2, more still possible.
Which increased the quality of news already.

Signed-off-by: Benjamin Brahmer <info@b-brahmer.de>
2022-05-29 11:25:38 +02:00

144 lines
4.2 KiB
YAML

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.4', '8.0']
nextcloud: ['stable22', 'stable23']
database: ['sqlite', 'pgsql', 'mysql']
experimental: [false]
include:
- php-versions: '8.0'
nextcloud: pre-release
database: sqlite
experimental: true
- php-versions: '8.1'
nextcloud: pre-release
database: sqlite
experimental: true
- php-versions: 8.1
nextcloud: stable24
database: sqlite
experimental: false
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- 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
- name: Setup BATS & httpie
run: sudo apt-get install -y bats httpie
### MySQL specific setup
- name: Setup mysql
if: matrix.database == 'mysql'
uses: getong/mariadb-action@v1.1
with:
mariadb version: '10.5'
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: false
force: ${{ matrix.experimental }}
- name: Run API tests
working-directory: ../server
run: |
php -S localhost:8080 &> /tmp/webserver.log &
sleep 2
bats apps/news/tests/api
# Kill php server
kill %1
- name: Setup problem matchers for PHP
run: echo "::add-matcher::${{ runner.tool_cache }}/php.json"
- name: Functional tests maintenance
working-directory: ../server
run: |
./occ maintenance:repair
- name: Functional tests
working-directory: ../server
run: bats apps/news/tests/command
- 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