name: API Integration Tests on: push: branches: - feature/openbb-sdk-v4 workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: api-integration-tests: runs-on: ubuntu-latest env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} steps: - name: Slack Notification - Starting uses: act10ns/slack@v1 with: status: starting channel: "#workflows" message: Starting API Integration Test... if: always() - name: Checkout code uses: actions/checkout@v3 - name: Checkout specific ref if: github.event_name == 'pull_request' run: git fetch origin ${{ github.event.pull_request.head.ref }} && git checkout FETCH_HEAD - name: Setup Python 3.9 uses: actions/setup-python@v4 with: python-version: "3.9" architecture: x64 - name: Load cached venv id: cached-python-environment uses: actions/cache@v3 with: path: runner_env key: venv-${{ runner.os }}-v1-${{ hashFiles('**/poetry.lock', '**/dev_install.py') }} - name: Install Dependencies if: steps.cached-python-environment.outputs.cache-hit != 'true' run: | python -m venv runner_env source runner_env/bin/activate pip install pytest poetry\ ./openbb_platform \ ./openbb_platform/providers/alpha_vantage \ ./openbb_platform/providers/cboe \ ./openbb_platform/providers/quandl \ ./openbb_platform/providers/yfinance \ ./openbb_platform/extensions/futures \ ./openbb_platform/extensions/qa \ ./openbb_platform/extensions/ta pip install -U pydantic pip list - name: Populate System Setting Files run: | mkdir -p ${{ github.workspace }}/.openbb_platform touch ${{ github.workspace }}/.openbb_platform/system_settings.json echo '{"log_collect":false}' > ${{ github.workspace }}/.openbb_platform/system_settings.json - name: Create and Populate user_settings.json from GitHub Secrets run: | touch ${{ github.workspace }}/.openbb_platform/user_settings.json echo '{ "credentials": { "benzinga_api_key": ${{ secrets.BENZINGA_API_KEY }}, "fmp_api_key": "${{ secrets.FMP_API_KEY }}", "polygon_api_key": "${{ secrets.POLYGON_API_KEY }}", "alpha_vantage_api_key": "${{ secrets.ALPHA_VANTAGE_API_KEY }}", "fred_api_key": "${{ secrets.FRED_API_KEY }}" } }' > ${{ github.workspace }}/.openbb_platform/user_settings.json - name: Launch the Uvicorn Process run: | source runner_env/bin/activate pip list cd openbb_platform uvicorn openbb_core.api.rest_api:app --host 0.0.0.0 --port 8000 --reload & - name: Wait for 1 minute run: sleep 60 - name: Run API Integration Tests run: | source runner_env/bin/activate pip list cd openbb_platform pytest . -m integration - name: Upload summary to Slack uses: adrey/slack-file-upload-action@master with: token: ${{ secrets.SLACK_API_TOKEN }} initial_comment: "API Integration test summary" title: "Integration test summary" path: summary.txt channel: ${{ secrets.SLACK_CHANNEL_ID }} - name: Slack Notification - Success/Failure uses: act10ns/slack@v1 with: status: ${{ job.status }} steps: ${{ toJson(steps) }} channel: "#workflows" if: always()