#!/usr/bin/env bash

#
# Runs the client tests via Docker with the expectation that the required
# environment variables have already been exported before running this script.
#
# The required environment variables include:
#
#   - $ELASTICSEARCH_VERSION
#   - $RUBY_TEST_VERSION
#   - $TEST_SUITE
#

repo=$(pwd)
testnodecrt="/.ci/certs/testnode.crt"
testnodekey="/.ci/certs/testnode.key"
cacrt="/.ci/certs/ca.crt"

docker run \
  --rm \
  --env "node.attr.testattr=test" \
  --env "path.repo=/tmp" \
  --env "repositories.url.allowed_urls=http://snapshot.*" \
  --env "discovery.type=single-node" \
  --env "ES_JAVA_OPTS=-Xms1g -Xmx1g" \
  --env "ELASTIC_PASSWORD=changeme" \
  --env "xpack.security.enabled=true" \
  --env "xpack.license.self_generated.type=trial" \
  --env "xpack.security.http.ssl.enabled=true" \
  --env "xpack.security.http.ssl.verification_mode=certificate" \
  --env "xpack.security.http.ssl.key=certs/testnode.key" \
  --env "xpack.security.http.ssl.certificate=certs/testnode.crt" \
  --env "xpack.security.http.ssl.certificate_authorities=certs/ca.crt" \
  --env "xpack.security.transport.ssl.enabled=true" \
  --env "xpack.security.transport.ssl.key=certs/testnode.key" \
  --env "xpack.security.transport.ssl.certificate=certs/testnode.crt" \
  --env "xpack.security.transport.ssl.certificate_authorities=certs/ca.crt" \
  --volume "$repo$testnodecrt:/usr/share/elasticsearch/config/certs/testnode.crt" \
  --volume "$repo$testnodekey:/usr/share/elasticsearch/config/certs/testnode.key" \
  --volume "$repo$cacrt:/usr/share/elasticsearch/config/certs/ca.crt" \
  --network=esnet \
  --name=elasticsearch \
  --detach \
  docker.elastic.co/elasticsearch/elasticsearch:${ELASTICSEARCH_VERSION}


# run the client tests
docker run \
  --network=esnet \
  --env "TEST_ES_SERVER=elasticsearch:9200" \
  --env "ELASTIC_PASSWORD=changeme" \
  --env "ELASTIC_USER=elastic" \
  --env "CODECOV_TOKEN" \
  --env "TEST_SUITE=security" \
  --volume $repo:/usr/src/app \
  --name elasticsearch-ruby \
  --rm \
  elastic/elasticsearch-ruby \
  bundle exec rake test:security

