From 8b72d9ab1143416ca28ff3ab1230eb575ee63ace Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 29 Oct 2023 08:58:13 +0300 Subject: [PATCH] add phpunit integration (wip) --- .gitlab-ci.yml | 18 +++++++++++++++--- tests/integration/ApiTest.php | 15 ++++++++------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 900dcae7b..ce7be8695 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -61,7 +61,7 @@ phpdoc: chmod 0600 ~/.ssh/id_ed25519 - rsync -av -e 'ssh -o StrictHostKeyChecking=no' phpdoc/ ${PHPDOC_DEPLOY_HOST}:phpdoc/ -integration-test: +selenium: image: ${SELENIUM_IMAGE} variables: TEST_HELM_REPO: https://gitlab.tt-rss.org/tt-rss/helm-charts/tt-rss @@ -73,8 +73,20 @@ integration-test: rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH -integration-test:branch: - extends: integration-test +selenium:branch: + extends: selenium + rules: + - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $CI_REGISTRY_USER != null + when: manual + +phpunit-integration:branch: + image: ${PHP_IMAGE} + extends: selenium + script: + - export K8S_NAMESPACE=$(kubectl get pods -o=custom-columns=NS:.metadata.namespace | tail -1) + - export API_URL="http://tt-rss-${CI_COMMIT_SHORT_SHA}-app.$K8S_NAMESPACE.svc.cluster.local/tt-rss/api/" + - env + - php82 vendor/bin/phpunit --group integration rules: - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH && $CI_REGISTRY_USER != null diff --git a/tests/integration/ApiTest.php b/tests/integration/ApiTest.php index cd7a8d67a..8f0759e68 100644 --- a/tests/integration/ApiTest.php +++ b/tests/integration/ApiTest.php @@ -7,18 +7,18 @@ final class ApiTest extends TestCase { /** @var string */ private $api_url; - /** @var string */ - private $sid; - function __construct() { - $this->api_url = $_ENV['API_URL']; + $this->api_url = getenv('API_URL'); print_r($this->api_url); parent::__construct(); } + /** @param array $payload + * @return array + */ function api(array $payload) : ?array { $ch = curl_init($this->api_url); @@ -37,18 +37,19 @@ final class ApiTest extends TestCase { return json_decode($response, true); } - public function common_assertions(array $response) { + /** @param array $response */ + public function common_assertions(array $response) : void { $this->assertArrayHasKey("content", $response); $this->assertArrayNotHasKey("error", $response['content'], $response['content']['error']); } - public function test_login() { + public function test_login() : void { $response = $this->api(["op" => "login", "user" => "test", "password" => "test"]); $this->common_assertions($response); } - public function test_getVersion() { + public function test_getVersion() : void { $response = $this->api(["op" => "getVersion"]);