name: CI

on: [push, pull_request]

permissions:
  contents: read

jobs:
  build:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:11
        env:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
          POSTGRES_DB: ci_db_test
          POSTGRES_HOST_AUTH_METHOD: 'md5'
        ports:
          - 5432:5432
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
    strategy:
      matrix:
        node: ['10', '12', '14', '16', '18']
        os: [ubuntu-latest, windows-latest, macos-latest]
    name: Node.js ${{ matrix.node }} (${{ matrix.os }})
    env:
        PGUSER: postgres
        PGHOST: localhost
        PGPASSWORD: postgres
        PGDATABASE: ci_db_test
        PGTESTNOSSL: 'true'
        SCRAM_TEST_PGUSER: scram_test
        SCRAM_TEST_PGPASSWORD: test4scram
    steps:
      - run: |
          psql \
            -c "SET password_encryption = 'scram-sha-256'" \
            -c "CREATE ROLE scram_test LOGIN PASSWORD 'test4scram'"
      - uses: actions/checkout@v3
        with:
          persist-credentials: false
      - name: Setup node
        uses: actions/setup-node@v3
        with:
          node-version: ${{ matrix.node }}
          cache: yarn
      - run: yarn install
      # TODO(bmc): get ssl tests working in ci
      - run: yarn test
