feat(devcontainer): overhaul dev environment for chatwoot-br fork #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Run MFA Tests | |
| permissions: | |
| contents: read | |
| on: | |
| pull_request: | |
| # If two pushes happen within a short time in the same PR, cancel the run of the oldest push | |
| concurrency: | |
| group: pr-${{ github.workflow }}-${{ github.head_ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| test: | |
| runs-on: ubuntu-22.04 | |
| # Only run if MFA test keys are available | |
| if: github.event_name == 'workflow_dispatch' || (github.repository == 'chatwoot/chatwoot' && github.actor != 'dependabot[bot]') | |
| services: | |
| postgres: | |
| image: pgvector/pgvector:pg15 | |
| env: | |
| POSTGRES_USER: postgres | |
| POSTGRES_PASSWORD: '' | |
| POSTGRES_DB: postgres | |
| POSTGRES_HOST_AUTH_METHOD: trust | |
| ports: | |
| - 5432:5432 | |
| options: >- | |
| --mount type=tmpfs,destination=/var/lib/postgresql/data | |
| --health-cmd pg_isready | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| redis: | |
| image: redis | |
| ports: | |
| - 6379:6379 | |
| options: --entrypoint redis-server | |
| env: | |
| RAILS_ENV: test | |
| POSTGRES_HOST: localhost | |
| # Active Record encryption keys required for MFA - test keys only, not for production use | |
| ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY: 'test_key_a6cde8f7b9c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7' | |
| ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY: 'test_key_b7def9a8c0d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d8' | |
| ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT: 'test_salt_c8efa0b9d1e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d9' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: ruby/setup-ruby@v1 | |
| with: | |
| bundler-cache: true | |
| - name: Create database | |
| run: bundle exec rake db:create | |
| - name: Install pgvector extension | |
| run: | | |
| PGPASSWORD="" psql -h localhost -U postgres -d chatwoot_test -c "CREATE EXTENSION IF NOT EXISTS vector;" | |
| - name: Seed database | |
| run: bundle exec rake db:schema:load | |
| - name: Run MFA-related backend tests | |
| run: | | |
| bundle exec rspec \ | |
| spec/services/mfa/token_service_spec.rb \ | |
| spec/services/mfa/authentication_service_spec.rb \ | |
| spec/requests/api/v1/profile/mfa_controller_spec.rb \ | |
| spec/controllers/devise_overrides/sessions_controller_spec.rb \ | |
| spec/models/application_record_external_credentials_encryption_spec.rb \ | |
| --profile=10 \ | |
| --format documentation | |
| env: | |
| NODE_OPTIONS: --openssl-legacy-provider | |
| - name: Run MFA-related tests in user_spec | |
| run: | | |
| # Run specific MFA-related tests from user_spec | |
| bundle exec rspec spec/models/user_spec.rb \ | |
| -e "two factor" \ | |
| -e "2FA" \ | |
| -e "MFA" \ | |
| -e "otp" \ | |
| -e "backup code" \ | |
| --profile=10 \ | |
| --format documentation | |
| env: | |
| NODE_OPTIONS: --openssl-legacy-provider | |
| - name: Upload test logs | |
| uses: actions/upload-artifact@v4 | |
| if: failure() | |
| with: | |
| name: mfa-test-logs | |
| path: | | |
| log/test.log | |
| tmp/screenshots/ |