From 538be0bab7ebdce0d86fd631aa2d268bc1462ee1 Mon Sep 17 00:00:00 2001 From: "Petr \"Stone\" Hracek" Date: Tue, 26 Mar 2024 08:42:59 +0100 Subject: [PATCH 1/2] Add tests for NodeJS App with Postgresql database Signed-off-by: Petr "Stone" Hracek --- tests/test_nodejs_postgresql.py | 66 +++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 tests/test_nodejs_postgresql.py diff --git a/tests/test_nodejs_postgresql.py b/tests/test_nodejs_postgresql.py new file mode 100644 index 0000000000..ada8d5bfd8 --- /dev/null +++ b/tests/test_nodejs_postgresql.py @@ -0,0 +1,66 @@ +import os + +import pytest +from pathlib import Path + +from container_ci_suite.openshift import OpenShiftAPI + +test_dir = Path(os.path.abspath(os.path.dirname(__file__))) + +VERSION=os.getenv("SINGLE_VERSION") +if not VERSION: + VERSION="20-ubi8" + +class TestNodeJSAppExTemplate: + + def setup_method(self): + self.oc_api = OpenShiftAPI(pod_name_prefix="nodejs-example") + json_raw_file = self.oc_api.get_raw_url_for_json( + container="s2i-nodejs-container", dir="imagestreams", filename="nodejs-rhel.json" + ) + self.oc_api.import_is(path=json_raw_file, name="node") + json_raw_file = self.oc_api.get_raw_url_for_json( + container="postgresql-container", dir="imagestreams", filename="postgresql-rhel.json" + ) + self.oc_api.import_is(path=json_raw_file, name="postgresql") + + def teardown_method(self): + self.oc_api.delete_project() + + def test_template_inside_cluster(self): + expected_output = "Node.js Crud Application" + template_json = self.oc_api.get_raw_url_for_json( + container="nodejs-ex", dir="openshift/templates", filename="nodejs-postgresql-persistent.json" + ) + assert self.oc_api.deploy_template( + template=template_json, name_in_template="dancer-example", expected_output=expected_output, + openshift_args=[ + "SOURCE_REPOSITORY_REF=master", + f"NODEJS_VERSION={VERSION}", + "NAME=nodejs-example", + "POSTGRESQL_VERSION=12-el8" + ] + ) + assert self.oc_api.template_deployed(name_in_template="nodejs-example") + assert self.oc_api.check_response_inside_cluster( + name_in_template="nodejs-example", expected_output=expected_output + ) + + def test_template_by_request(self): + expected_output = "Node.js Crud Application" + template_json = self.oc_api.get_raw_url_for_json( + container="nodejs-ex", dir="openshift/templates", filename="nodejs-postgresql-persistent.json" + ) + assert self.oc_api.deploy_template( + template=template_json, name_in_template="nodejs-example", expected_output=expected_output, + openshift_args=[ + "SOURCE_REPOSITORY_REF=master", + f"NODEJS_VERSION={VERSION}", + "NAME=nodejs-example", + "POSTGRESQL_VERSION=12-el8" + ] + ) + assert self.oc_api.template_deployed(name_in_template="nodejs-example") + assert self.oc_api.check_response_outside_cluster( + name_in_template="nodejs-example", expected_output=expected_output + ) From bffaeb3270ba5dad35e4c069b68b02a82179223f Mon Sep 17 00:00:00 2001 From: "Petr \"Stone\" Hracek" Date: Tue, 26 Mar 2024 14:49:46 +0100 Subject: [PATCH 2/2] Fix issues with postgresql template Signed-off-by: Petr "Stone" Hracek --- .../nodejs-postgresql-persistent.json | 11 +++++---- tests/test_nodejs_postgresql.py | 24 ++++++++++++++++--- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/openshift/templates/nodejs-postgresql-persistent.json b/openshift/templates/nodejs-postgresql-persistent.json index 01afcb3b50..75fc584bff 100644 --- a/openshift/templates/nodejs-postgresql-persistent.json +++ b/openshift/templates/nodejs-postgresql-persistent.json @@ -10,7 +10,7 @@ "iconClass": "icon-nodejs", "openshift.io/long-description": "This template defines resources needed to develop a NodeJS application, including a build configuration, application deployment configuration, and database deployment configuration.", "openshift.io/provider-display-name": "Red Hat, Inc.", - "openshift.io/documentation-url": "https://github.com/nodeshift-starters/nodejs-rest-http-crud", + "openshift.io/documentation-url": "https://github.com/sclorg/nodejs-ex", "openshift.io/support-url": "https://access.redhat.com", "template.openshift.io/bindable": "false" } @@ -60,7 +60,10 @@ "kind": "Route", "apiVersion": "route.openshift.io/v1", "metadata": { - "name": "${NAME}" + "name": "${NAME}", + "annotations": { + "template.openshift.io/expose-uri": "http://{.spec.host}{.spec.path}" + } }, "spec": { "host": "${APPLICATION_DOMAIN}", @@ -179,7 +182,7 @@ "spec": { "containers": [ { - "name": "nodejs-postgresql-persistent", + "name": "${NAME}", "image": " ", "ports": [ { @@ -448,7 +451,7 @@ "displayName": "Git Repository URL", "description": "The URL of the repository with your application source code.", "required": true, - "value": "https://github.com/nodeshift-starters/nodejs-rest-http-crud.git" + "value": "https://github.com/sclorg/nodejs-ex.git" }, { "name": "SOURCE_REPOSITORY_REF", diff --git a/tests/test_nodejs_postgresql.py b/tests/test_nodejs_postgresql.py index ada8d5bfd8..d6a279882f 100644 --- a/tests/test_nodejs_postgresql.py +++ b/tests/test_nodejs_postgresql.py @@ -11,7 +11,7 @@ if not VERSION: VERSION="20-ubi8" -class TestNodeJSAppExTemplate: +class TestNodeJSAppPostgreSQLExTemplate: def setup_method(self): self.oc_api = OpenShiftAPI(pod_name_prefix="nodejs-example") @@ -27,7 +27,25 @@ def setup_method(self): def teardown_method(self): self.oc_api.delete_project() - def test_template_inside_cluster(self): + def test_local_template_inside_cluster(self): + expected_output = "Node.js Crud Application" + template_json = "../openshift/templates/nodejs-postgresql-persistent.json" + assert self.oc_api.deploy_template( + template=template_json, name_in_template="nodejs-example", expected_output=expected_output, + openshift_args=[ + "SOURCE_REPOSITORY_REF=master", + f"NODEJS_VERSION={VERSION}", + "NAME=nodejs-example", + "POSTGRESQL_VERSION=12-el8" + ] + ) + assert self.oc_api.template_deployed(name_in_template="nodejs-example") + assert self.oc_api.check_response_inside_cluster( + name_in_template="nodejs-example", expected_output=expected_output + ) + + + def test_remote_template_inside_cluster(self): expected_output = "Node.js Crud Application" template_json = self.oc_api.get_raw_url_for_json( container="nodejs-ex", dir="openshift/templates", filename="nodejs-postgresql-persistent.json" @@ -46,7 +64,7 @@ def test_template_inside_cluster(self): name_in_template="nodejs-example", expected_output=expected_output ) - def test_template_by_request(self): + def test_remote_template_by_request(self): expected_output = "Node.js Crud Application" template_json = self.oc_api.get_raw_url_for_json( container="nodejs-ex", dir="openshift/templates", filename="nodejs-postgresql-persistent.json"