# A test for running the init command with a registries block.
# This test does _not_ validate that the action can authenticate
# against multiple registries. All it does is validate that the
# basic mechanics of multi-registry auth is working.
name: "Packaging: Download using registries"
description: "Checks that specifying a registries block and associated auth works as expected"
versions:
  # This feature is not compatible with older CLIs
  - default
  - linked
  - nightly-latest

permissions:
  contents: read
  packages: read

steps:
  - name: Init with registries
    uses: ./../action/init
    with:
      db-location: "${{ runner.temp }}/customDbLocation"
      tools: ${{ steps.prepare-test.outputs.tools-url }}
      config-file: ./.github/codeql/codeql-config-registries.yml
      languages: javascript
      registries: |
          - url: "https://ghcr.io/v2/"
            packages: "*/*"
            token: "${{ secrets.GITHUB_TOKEN }}"

  - name: Verify packages installed
    run: |
      PRIVATE_PACK="$HOME/.codeql/packages/codeql-testing/private-pack"
      CODEQL_PACK1="$HOME/.codeql/packages/codeql-testing/codeql-pack1"

      if [[ -d $PRIVATE_PACK ]]
      then
          echo "$PRIVATE_PACK was installed."
      else
          echo "::error $PRIVATE_PACK pack was not installed."
          exit 1
      fi

      if [[ -d $CODEQL_PACK1 ]]
      then
          echo "$CODEQL_PACK1 was installed."
      else
          echo "::error $CODEQL_PACK1 pack was not installed."
          exit 1
      fi

  - name: Verify qlconfig.yml file was created
    run: |
      QLCONFIG_PATH=$RUNNER_TEMP/qlconfig.yml
      echo "Expected qlconfig.yml file to be created at $QLCONFIG_PATH"
      if [[ -f $QLCONFIG_PATH ]]
      then
          echo "qlconfig.yml file was created."
      else
          echo "::error qlconfig.yml file was not created."
          exit 1
      fi

  - name: Verify contents of qlconfig.yml
    run: |
      QLCONFIG_PATH=$RUNNER_TEMP/qlconfig.yml
      cat $QLCONFIG_PATH | yq -e '.registries[] | select(.url == "https://ghcr.io/v2/") | select(.packages == "*/*")'
      if [[ $? -eq 0 ]]
      then
          echo "Registry was added to qlconfig.yml file."
      else
          echo "::error Registry was not added to qlconfig.yml file."
          echo "Contents of qlconfig.yml file:"
          cat $QLCONFIG_PATH
          exit 1
      fi
