name: Notify Smoke Test on: push: branches: [main] paths: - 'src/Notify/**' - 'src/Notifier/**' pull_request: paths: - 'src/Notify/**' - 'src/Notifier/**' workflow_dispatch: env: DOTNET_VERSION: '10.0.x' jobs: unit-tests: name: Notify Unit Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: ${{ env.DOTNET_VERSION }} - name: Restore dependencies run: dotnet restore src/Notify/ - name: Build run: dotnet build src/Notify/ --no-restore - name: Run tests run: dotnet test src/Notify/ --no-build --verbosity normal notifier-tests: name: Notifier Service Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: ${{ env.DOTNET_VERSION }} - name: Restore dependencies run: dotnet restore src/Notifier/ - name: Build run: dotnet build src/Notifier/ --no-restore - name: Run tests run: dotnet test src/Notifier/ --no-build --verbosity normal smoke-test: name: Notification Smoke Test runs-on: ubuntu-latest needs: [unit-tests, notifier-tests] services: mongodb: image: mongo:7.0 ports: - 27017:27017 steps: - uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: ${{ env.DOTNET_VERSION }} - name: Build Notifier run: dotnet build src/Notifier/StellaOps.Notifier/StellaOps.Notifier.WebService/ - name: Start service run: | dotnet run --project src/Notifier/StellaOps.Notifier/StellaOps.Notifier.WebService/ & sleep 10 - name: Health check run: | for i in {1..30}; do if curl -s http://localhost:5000/health > /dev/null; then echo "Service is healthy" exit 0 fi sleep 1 done echo "Service failed to start" exit 1 - name: Test notification endpoint run: | # Test dry-run notification curl -X POST http://localhost:5000/api/v1/notifications/test \ -H "Content-Type: application/json" \ -d '{"channel": "log", "message": "Smoke test", "dryRun": true}' \ || echo "Warning: Notification test endpoint not available"