name: Integration Tests on: [push, pull_request] env: TEST_BROWSER_HEADLESS: 1 CI: 1 PLUGIN_NAME: opensearch-security OPENSEARCH_INITIAL_ADMIN_PASSWORD: myStrongPassword123! jobs: tests: name: Run integration tests strategy: fail-fast: false matrix: os: [ubuntu-latest] # Removed windows-latest runs-on: ${{ matrix.os }} steps: - name: Checkout Branch uses: actions/checkout@v4 - name: Set up JDK uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: 11 - name: Set env run: | opensearch_version=$(node -p "require('./package.json').opensearchDashboards.version") plugin_version=$(node -p "require('./package.json').version") echo "OPENSEARCH_VERSION=$opensearch_version" >> $GITHUB_ENV echo "PLUGIN_VERSION=$plugin_version" >> $GITHUB_ENV shell: bash - uses: browser-actions/setup-geckodriver@v0.0.0 - run: geckodriver --version - name: Set up Firefox browser if: ${{ runner.os == 'Linux' }} uses: browser-actions/setup-firefox@v1 - run: firefox --version if: ${{ runner.os == 'Linux' }} # Browser-action version does not work on Windows # - name: Set up Firefox browser for Windows # if: ${{ runner.os == 'Windows' }} # uses: RyanL1997/setup-browser@main # with: # browser: firefox # version: latest - name: Download security plugin and create setup scripts uses: ./.github/actions/download-plugin with: opensearch-version: ${{ env.OPENSEARCH_VERSION }} plugin-name: ${{ env.PLUGIN_NAME }} download-location: ${{env.PLUGIN_NAME}}-${{ env.OPENSEARCH_VERSION }} plugin-version: ${{ env.PLUGIN_VERSION }} - name: Download security plugin and create setup scripts for local cluster uses: ./.github/actions/download-plugin with: opensearch-version: ${{ env.OPENSEARCH_VERSION }} plugin-name: ${{ env.PLUGIN_NAME }} download-location: ${{env.PLUGIN_NAME}} plugin-version: ${{ env.PLUGIN_VERSION }} - name: Run Opensearch with A Single Plugin Remote Cluster uses: derek-ho/start-opensearch@v6 with: opensearch-version: ${{ env.OPENSEARCH_VERSION }} plugins: "file:$(pwd)/opensearch-security-${{ env.OPENSEARCH_VERSION }}.zip" security-enabled: true admin-password: ${{ env.OPENSEARCH_INITIAL_ADMIN_PASSWORD }} security_config_file: ${{ inputs.security_config_file }} port: 9202 - name: Check OpenSearch remote is running run: | curl https://localhost:9202/_cat/plugins -v -u admin:${{ env.OPENSEARCH_INITIAL_ADMIN_PASSWORD }} -k shell: bash - name: Run Opensearch with security uses: derek-ho/start-opensearch@v6 with: opensearch-version: ${{ env.OPENSEARCH_VERSION }} plugins: 'file:$(pwd)/${{ env.PLUGIN_NAME }}.zip' security-enabled: true admin-password: ${{ env.OPENSEARCH_INITIAL_ADMIN_PASSWORD }} # https://github.com/actions/runner-images/issues/2840#issuecomment-790492173 - name: Remove unnecessary files Linux if: ${{ runner.os == 'Linux' }} run: | sudo rm -rf /usr/share/dotnet sudo rm -rf "$AGENT_TOOLSDIRECTORY" - id: install-dashboards uses: derek-ho/setup-opensearch-dashboards@v3 with: plugin_name: wazuh-security-dashboards-plugin app_reference: ${{ vars.WZD_REF }} - name: Start Dashboards in background run: node scripts/build_opensearch_dashboards_platform_plugins.js working-directory: ${{ steps.install-dashboards.outputs.dashboards-directory }} - name: Yarn cache clean run: yarn cache clean - name: Run integration tests on Linux if: ${{ runner.os == 'Linux' }} run: | echo "check if opensearch is ready" curl -XGET https://localhost:9200 -u 'admin:${{ env.OPENSEARCH_INITIAL_ADMIN_PASSWORD }}' -k ADMIN_PASSWORD=${{ env.OPENSEARCH_INITIAL_ADMIN_PASSWORD }} yarn test:jest_server --coverage shell: bash working-directory: ${{ steps.install-dashboards.outputs.plugin-directory }} # - name: Run integration tests on Windows # if: ${{ runner.os == 'Windows' }} # run: | # echo "check if opensearch is ready" # curl -XGET https://localhost:9200 -u 'admin:${{ env.OPENSEARCH_INITIAL_ADMIN_PASSWORD }}' -k # node .\test\run_jest_tests.js --runInBand --detectOpenHandles --forceExit --config .\test\jest.config.server.js # working-directory: ${{ steps.install-dashboards.outputs.plugin-directory }}