suite: test PostgreSQL envs for deployments
templates:
  - engine/deployment.yaml
  - engine/job-migrate.yaml
  - celery/deployment.yaml
  - telegram-polling/deployment.yaml
release:
  name: oncall
tests:
  - it: postgresql.enabled=false -> external PostgreSQL default settings
    set:
      telegramPolling.enabled: true
      database.type: postgresql
      postgresql.enabled: false
      externalPostgresql.host: custom-postgres-host
    asserts:
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_TYPE
            value: postgresql
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_NAME
            value: oncall
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_PORT
            value: "5432"
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_USER
            value: postgres
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_HOST
            value: custom-postgres-host

  - it: externalPostgresql -> should use external PostgreSQL custom settings
    set:
      telegramPolling.enabled: true
      database.type: postgresql
      postgresql.enabled: false
      externalPostgresql:
        host: test-host
        port: 5555
        db_name: grafana_oncall
        user: test_user
    asserts:
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_TYPE
            value: postgresql
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_NAME
            value: grafana_oncall
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_PORT
            value: "5555"
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_USER
            value: test_user
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_HOST
            value: test-host

  - it: externalPostgresql -> should use external PostgreSQL custom settings with additional options
    set:
      telegramPolling.enabled: true
      database.type: postgresql
      postgresql.enabled: false
      externalPostgresql:
        host: test-host
        port: 5555
        db_name: grafana_oncall
        user: test_user
        options: "sslmode=verify-full sslrootcert=/mnt/ca.crt sslcert=/mnt/client.crt sslkey=/mnt/client.key"
    asserts:
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_OPTIONS
            value: sslmode=verify-full sslrootcert=/mnt/ca.crt sslcert=/mnt/client.crt sslkey=/mnt/client.key

  - it: postgresql.enabled=true -> internal PostgreSQL default settings
    set:
      telegramPolling.enabled: true
      database.type: postgresql
      postgresql.enabled: true
    asserts:
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_TYPE
            value: postgresql
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_NAME
            value: oncall
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_PORT
            value: "5432"
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_USER
            value: postgres
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_HOST
            value: oncall-postgresql

  - it: postgresql.auth -> should use internal PostgreSQL custom settings
    set:
      telegramPolling.enabled: true
      database.type: postgresql
      postgresql:
        enabled: true
        auth:
          database: grafana_oncall
          username: grafana_oncall
    asserts:
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_TYPE
            value: postgresql
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_NAME
            value: grafana_oncall
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_PORT
            value: "5432"
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_USER
            value: grafana_oncall
      - contains:
          path: spec.template.spec.containers[0].env
          content:
            name: DATABASE_HOST
            value: oncall-postgresql
