Skip to content

Testing

Daniel Miakotkin edited this page Mar 20, 2023 · 6 revisions

First, you need a running instance of the JFrog Artifactory.

You can ask for an instance to test against it as part of your PR. Alternatively, you can run the file scripts/run-artifactory.sh.

The script requires a valid license of a supported type, license should be saved in the file called artifactory.lic in the same directory as a script.

With the script you can start one or two Artifactory instances using docker compose.

The license is not supplied, but a 30 day trial license can be freely obtained and will allow local development. Make sure the license saved as a multi line text file.

Currently, acceptance tests require an access key and don't support basic authentication or an API key. To generate an access key, please refer to the official documentation

Then, you have to set some environment variables as this is how the acceptance tests pick up their config.

ARTIFACTORY_URL=http://localhost:8082
ARTIFACTORY_USERNAME=admin
ARTIFACTORY_ACCESS_TOKEN=<your_access_token>
TF_ACC=true

ARTIFACTORY_USERNAME is not used in authentication, but used in several tests, related to replication functionality. It should be hardcoded to admin, because it's a default user created in the Artifactory instance from the start.

A crucial env var to set is TF_ACC=true - you can literally set TF_ACC to anything you want, so long as it's set. The acceptance tests use terraform testing libraries that, if this flag isn't set, will skip all tests.

You can then run the tests as

$ go test -v -p 1 ./pkg/...

Or

$ make acceptance

DO NOT remove the -v - terraform testing needs this. This will recursively run all tests, including acceptance tests.

Testing Federated repos

To execute acceptance tests for federated repo resource, we need:

  • 2 Artifactory instances, configured with Circle-of-Trust
  • Set environment variables ARTIFACTORY_URL_2 to enable the acceptance tests that utilize both Artifactory instances

Setup Artifactory instances

The scripts/run-artifactory.sh starts two Artifactory instances for testing using the file scripts/docker-compose.yml.

artifactory-1 is on the usual 8080/8081/8082 ports while artifactory-2 is on 9080/9081/9082

Enable acceptance tests

Set the env var to the second Artifactory instance URL. This is the URL that will be accessible from artifactory-1 container (not the URL from the Docker host):

$ export ARTIFACTORY_URL_2=http://artifactory-2:8081

Internal docker hostname also can be used, but with the port 9081:

$ export ARTIFACTORY_URL_2=http://host.docker.internal:9081

Run all the acceptance tests as usual

$ make acceptance

Or run only the acceptance tests for Federated repos:

$ make acceptance_federated
Clone this wiki locally