From ce43defdb914075954a0c5b6373916c433c59f95 Mon Sep 17 00:00:00 2001 From: Chen Keinan Date: Thu, 20 Nov 2025 11:48:25 +0200 Subject: [PATCH 1/3] chore: update component-test with new arch Signed-off-by: Chen Keinan --- .../promotion/00-dragAndDrop/00-assert.yaml | 27 - .../00-dragAndDrop/00-drag-and-drop-task.yaml | 18 - .../promotion/00-dragAndDrop/dragAndDrop.json | 86 --- .../promotion/00-dragAndDrop/dragAndDrop.sh | 16 - .../00-assert.yaml | 18 +- .../00-get-promotable-values.json | 66 ++ .../00-get-promotable-values.sh | 35 + .../00-get-promotable-values.yaml | 19 + .../promotion/01-git-commit/00-app-sync.json | 159 ----- .../promotion/01-git-commit/00-app-sync.sh | 46 -- .../01-git-commit/01-app-promote.json | 163 ----- .../promotion/01-git-commit/01-app-promote.sh | 14 - .../01-git-commit/01-app-promote.yaml | 18 - .../promotion/01-git-commit/01-assert.yaml | 27 - .../01-promote-with-commit/00-assert.yaml | 19 + .../00-promote-with-commit.json | 53 ++ .../00-promote-with-commit.sh | 9 + .../00-promote-with-commit.yaml} | 2 +- .../fixture/applications/simple-dev.yaml | 2 +- .../fixture/applications/simple-prod.yaml | 2 +- .../setup/mocks/platform-mocks.json | 652 +++++++++--------- .../component-tests/setup/scripts/cleanup.sh | 3 +- .../setup/scripts/init-gitea.sh | 12 +- 23 files changed, 552 insertions(+), 914 deletions(-) delete mode 100644 tests/component-tests/promotion/00-dragAndDrop/00-assert.yaml delete mode 100644 tests/component-tests/promotion/00-dragAndDrop/00-drag-and-drop-task.yaml delete mode 100755 tests/component-tests/promotion/00-dragAndDrop/dragAndDrop.json delete mode 100755 tests/component-tests/promotion/00-dragAndDrop/dragAndDrop.sh rename tests/component-tests/promotion/{01-git-commit => 00-get-promotable-values}/00-assert.yaml (57%) create mode 100644 tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.json create mode 100644 tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.sh create mode 100644 tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.yaml delete mode 100755 tests/component-tests/promotion/01-git-commit/00-app-sync.json delete mode 100755 tests/component-tests/promotion/01-git-commit/00-app-sync.sh delete mode 100755 tests/component-tests/promotion/01-git-commit/01-app-promote.json delete mode 100755 tests/component-tests/promotion/01-git-commit/01-app-promote.sh delete mode 100644 tests/component-tests/promotion/01-git-commit/01-app-promote.yaml delete mode 100644 tests/component-tests/promotion/01-git-commit/01-assert.yaml create mode 100644 tests/component-tests/promotion/01-promote-with-commit/00-assert.yaml create mode 100644 tests/component-tests/promotion/01-promote-with-commit/00-promote-with-commit.json create mode 100644 tests/component-tests/promotion/01-promote-with-commit/00-promote-with-commit.sh rename tests/component-tests/promotion/{01-git-commit/00-app-sync.yaml => 01-promote-with-commit/00-promote-with-commit.yaml} (94%) diff --git a/tests/component-tests/promotion/00-dragAndDrop/00-assert.yaml b/tests/component-tests/promotion/00-dragAndDrop/00-assert.yaml deleted file mode 100644 index 191a20bcd..000000000 --- a/tests/component-tests/promotion/00-dragAndDrop/00-assert.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# ----------------------------------------------------------------------------- -# 00-assert.yaml - KUTTL TestAssert for drag-and-drop workflow status -# -# This TestAssert script checks the status of the workflow created by the -# drag-and-drop test in the Codefresh GitOps Operator component tests. -# -# Usage: -# This assertion is executed as part of the KUTTL test suite. -# -# Steps performed: -# - Queries the workflow status for the specific release. -# - Asserts that the workflow status is 'Succeeded'. -# ----------------------------------------------------------------------------- ---- -apiVersion: kuttl.dev/v1beta1 -commands: - - script: > - STATUS="$(kubectl get workflow -n codefresh -l codefresh.io/release=682051c15f0ea1658a3eed78 -o jsonpath="{.items[*].status.phase}")" - - if [ $STATUS = 'Succeeded' ]; then - echo "workflow status for release '682051c15f0ea1658a3eed78' has succeeded" - else - echo "workflow status ($STATUS) for release '682051c15f0ea1658a3eed78' should be succeeded" - exit 1 - fi -kind: TestAssert -timeout: 240 \ No newline at end of file diff --git a/tests/component-tests/promotion/00-dragAndDrop/00-drag-and-drop-task.yaml b/tests/component-tests/promotion/00-dragAndDrop/00-drag-and-drop-task.yaml deleted file mode 100644 index 5d905edce..000000000 --- a/tests/component-tests/promotion/00-dragAndDrop/00-drag-and-drop-task.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# ----------------------------------------------------------------------------- -# 00-drag-and-drop-task.yaml - KUTTL TestStep for drag-and-drop mock setup -# -# This TestStep runs the dragAndDrop.sh script to load drag-and-drop mock -# expectations into Mockserver for the Codefresh GitOps Operator component tests. -# -# Usage: -# This step is executed as part of the KUTTL test suite. -# -# Steps performed: -# - Executes the dragAndDrop.sh script to configure Mockserver. -# ----------------------------------------------------------------------------- ---- -apiVersion: kuttl.dev/v1beta1 -kind: TestStep -commands: - - script: ./dragAndDrop.sh -timeout: 30 \ No newline at end of file diff --git a/tests/component-tests/promotion/00-dragAndDrop/dragAndDrop.json b/tests/component-tests/promotion/00-dragAndDrop/dragAndDrop.json deleted file mode 100755 index adc4be00a..000000000 --- a/tests/component-tests/promotion/00-dragAndDrop/dragAndDrop.json +++ /dev/null @@ -1,86 +0,0 @@ -[ - { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\nquery productReleaseTasks {\n\tproductReleaseTasks {\n\t\ttype\n\t\tlabels\n\t\tcommitInfo {\n\t\t\tsha\n\t\t\tcommitter\n\t\t\tdate\n\t\t\tmessage\n\t\t}\n\t\tappNamespace\n\t\tappName\n\t\trepoUrl\n\t\tbranch\n\t\tpath\n\t\tpostActionOnly\n\t\tpreAction\n\t\tactionUrl\n\t\tactionBody\n\t\tpostAction\n\t\tworkflowNamespace\n\t\tworkflowName\n\t}\n}", - "variables": {} - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "productReleaseTasks": [ - { - "type": "CreateProductReleaseTask", - "labels": { - "codefresh.io/product": "simple", - "codefresh.io/env": "prod", - "codefresh.io/release": "682051c15f0ea1658a3eed78", - "codefresh.io/promotion-flow": "", - "codefresh.io/app-name": "simple-prod", - "codefresh.io/app-namespace": "codefresh", - "codefresh.io/release-name": "3ab912d13" - }, - "commitInfo": null, - "appNamespace": "codefresh", - "appName": "simple-prod", - "repoUrl": "http://gitea-http.gitea:3000/test-owner/simple-app.git", - "branch": "HEAD", - "path": ".", - "postActionOnly": false, - "preAction": null, - "actionUrl": "/api/graphql", - "actionBody": "{\"query\":\"\\n mutation commitFiles($args: CommitFilesArgs!) {\\n commitFiles(args: $args) {\\n COMMIT_SHA: sha\\n sha\\n message\\n date\\n committer {\\n name\\n email\\n }\\n }\\n }\\n\",\"variables\":{\"args\":{\"msg\":\"promote codefresh/simple-dev to codefresh/simple-prod\",\"description\":\"\",\"files\":[{\"path\":\"values.yaml\",\"revision\":\"f238c105280eaf3a045d261f2caa1e423d8b4473\",\"data\":\"# Default values for simple-app.\\n# This is a YAML-formatted file.\\n# Declare variables to be passed into your templates.\\n\\nreplicaCount: 1\\n\\nimage:\\n repository: wang/alpine-go-echo-server\\n # sed -i -e \\\"s/^\\\\( tag:\\\\).*/\\\\1 $CI_COMMIT_SHA/\\\" ops/values.yaml\\n tag: 0.1\\n pullPolicy: IfNotPresent\\n\\nimagePullSecrets: []\\nnameOverride: \\\"\\\"\\nfullnameOverride: \\\"\\\"\\ncomponents:\\n - test1\\napp:\\n name: my-app-name\\n command:\\n - \\\"/app/echo-server\\\"\\n port: 3000\\n ## Enabled 'ports' If additional ports are needed\\n # ports:\\n # - name: port2\\n # containerPort: 3002\\n # protocol: TCP\\n # - name: port3\\n # containerPort: 3003\\n # protocol: UDP\\n config:\\n test_env: \\\"This is test value\\\"\\n secrets: false # To enable secretRef, you need create a secret named as RELEASE-NAME-secrets\\n # livenessProbe:\\n # httpGet:\\n # path: /\\n # port: http\\n # readinessProbe:\\n # httpGet:\\n # path: /\\n # port: http\\n volumeMounts: []\\n # - name: demo-data\\n # mountPath: /mnt/data\\n # readonly: true\\n\\nsidecar:\\n name: my-app-name-sidecar\\n enabled: false\\n image:\\n tag: 0.1\\n repository: wang/alpine-go-echo-server\\n pullPolicy: IfNotPresent\\n port: 3001\\n command:\\n - \\\"/app/echo-server\\\"\\n volumeMounts: []\\n resources:\\n limits:\\n cpu: 100m\\n memory: 128Mi\\n\\n\\nvolumes: []\\n # - name: demo-data\\n # secret:\\n # secretName: demo-secrets\\n\\nserviceAccount:\\n # Specifies whether a service account should be created\\n create: true\\n # Annotations to add to the service account\\n annotations: {}\\n # The name of the service account to use.\\n # If not set and create is true, a name is generated using the fullname template\\n name:\\n\\npodSecurityContext: {}\\n # fsGroup: 2000\\n\\nsecurityContext: {}\\n # capabilities:\\n # drop:\\n # - ALL\\n # readOnlyRootFilesystem: true\\n # runAsNonRoot: true\\n # runAsUser: 1000\\n\\nservice:\\n enabled: true\\n type: ClusterIP\\n port: 80\\n ## Enable 'ports', if additional ports are needed\\n # ports:\\n # - name: port2\\n # port: 3002\\n # targetPort: port2\\n # protocol: TCP\\n # - name: port3\\n # port: 3003\\n # targetPort: port3\\n # protocol: UDP\\n\\ningress:\\n enabled: false\\n annotations: {}\\n # kubernetes.io/ingress.class: nginx\\n # kubernetes.io/tls-acme: \\\"true\\\"\\n # cert-manager.io/cluster-issuer: letsencrypt-production\\n hosts:\\n - host: chart-example.local\\n paths: []\\n # - /\\n # - /index.html\\n tls: []\\n # - secretName: chart-example-tls\\n # hosts:\\n # - chart-example.local\\n\\nresources: {}\\n # We usually recommend not to specify default resources and to leave this as a conscious\\n # choice for the user. This also increases chances charts run on environments with little\\n # resources, such as Minikube. If you do want to specify resources, uncomment the following\\n # lines, adjust them as necessary, and remove the curly braces after 'resources:'.\\n # limits:\\n # cpu: 100m\\n # memory: 128Mi\\n # requests:\\n # cpu: 100m\\n # memory: 128Mi\\n\\nnodeSelector: {}\\n\\ntolerations: []\\n\\naffinity: {}\\n\"}],\"repo\":\"test-owner/simple-app\",\"branchName\":\"HEAD\",\"force\":true}}}", - "postAction": null, - "workflowNamespace": null, - "workflowName": null - } - ] - } - } - }, - "times": { - "remainingTimes": 1, - "unlimited": false - } - }, - { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\nquery productReleaseRunHooksTasks {\n\tproductReleaseRunHooksTasks {\n\t\ttype\n\t\tlabels\n\t\tworkflowTemplateName\n\t\tworkflowNamespace\n\t\tworkflowName\n\t\tparameters\n\t}\n}", - "variables": {} - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "productReleaseRunHooksTasks": [] - } - } - } - }, - { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\nquery productReleaseCommitStatuses {\n\tproductReleaseCommitStatuses {\n\t\tsha\n\t\trepoURL\n\t\tstatus\n\t\tdescription\n\t\tcontext\n\t\ttargetUrl\n\t}\n}", - "variables": {} - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "productReleaseCommitStatuses": [] - } - } - } - } -] diff --git a/tests/component-tests/promotion/00-dragAndDrop/dragAndDrop.sh b/tests/component-tests/promotion/00-dragAndDrop/dragAndDrop.sh deleted file mode 100755 index 0969b619c..000000000 --- a/tests/component-tests/promotion/00-dragAndDrop/dragAndDrop.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# ----------------------------------------------------------------------------- -# dragAndDrop.sh - Loads drag-and-drop mock expectations for component tests -# -# This script loads mock expectations into the Mockserver for drag-and-drop -# scenarios in the Codefresh GitOps Operator component test suite. -# -# Usage: -# ./dragAndDrop.sh -# -# Steps performed: -# - Waits briefly to ensure Mockserver is ready. -# - Loads drag-and-drop mock expectations from dragAndDrop.json. -# ----------------------------------------------------------------------------- -sleep 2 -curl -i -X PUT http://127.0.0.1:1080/mockserver/expectation --data-binary "@./dragAndDrop.json" diff --git a/tests/component-tests/promotion/01-git-commit/00-assert.yaml b/tests/component-tests/promotion/00-get-promotable-values/00-assert.yaml similarity index 57% rename from tests/component-tests/promotion/01-git-commit/00-assert.yaml rename to tests/component-tests/promotion/00-get-promotable-values/00-assert.yaml index 81fb3f2ce..d11e3a4fd 100644 --- a/tests/component-tests/promotion/01-git-commit/00-assert.yaml +++ b/tests/component-tests/promotion/00-get-promotable-values/00-assert.yaml @@ -14,14 +14,14 @@ --- apiVersion: kuttl.dev/v1beta1 commands: - - script: > - STATUS="$(kubectl get workflow -n codefresh -l codefresh.io/release=684040897b3903d3764e1f73 -o jsonpath="{.items[*].status.phase}")" - - if [ $STATUS = 'Succeeded' ]; then - echo "workflow status for release '684040897b3903d3764e1f73' has succeeded" - else - echo "workflow status ($STATUS) for release '684040897b3903d3764e1f73' should be succeeded" - exit 1 - fi + - script: > + STATUS="$(kubectl get promotiontask -n codefresh -l codefresh.io/id=635ae4b1a8d4ea001297e0e9 -o jsonpath="{.items[*].status.phase}")" + + if [ $STATUS = 'Succeeded' ]; then + echo "promotion task status for promotion task '635ae4b1a8d4ea001297e0e9' has succeeded" + else + echo "workflow status ($STATUS) for promotion task '635ae4b1a8d4ea001297e0e9' should be succeeded" + exit 1 + fi kind: TestAssert timeout: 240 \ No newline at end of file diff --git a/tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.json b/tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.json new file mode 100644 index 000000000..cabcd9b13 --- /dev/null +++ b/tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.json @@ -0,0 +1,66 @@ +[ + { + "httpRequest": { + "method": "GET", + "path": "/2.0/api/promotion-orchestrator/promotion/desired-promotion-tasks" + }, + "httpResponse": { + "statusCode": 200, + "body": [ + { + "promotionTaskId": "635ae4b1a8d4ea001297e0e9", + "name": "dev-codefresh-simple-dev-68ea7699e1e47d0cd666f6b9", + "promotionId": "68ea7699e1e47d0cd666f6b8", + "productName": "echo", + "environment": "dev", + "applicationId": { + "name": "simple-dev", + "namespace": "codefresh" + }, + "spec": { + "phase": "PENDING", + "steps": [ + { + "type": "getPromotionValues", + "targetApplication": { + "name": "simple-dev", + "namespace": "codefresh" + }, + "commitSha": "source-commit-sha", + "versionProperty": { + "file": "Chart.yaml", + "jsonPath": "$.version" + }, + "commitAuthorId": { + "username": "test-user", + "email": "test-user@example.com" + }, + "promotionProperties": [ + { + "file": "values.yaml", + "properties": [ + "$.image.tag" + ] + } + ] + }, + { + "type": "verifyApp", + "targetApplication": { + "name": "simple-dev", + "namespace": "codefresh" + }, + "commitSha": "source-commit-sha" + } + ] + } + } + ] + + }, + "times": { + "remainingTimes":1, + "unlimited": false + } + } + ] \ No newline at end of file diff --git a/tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.sh b/tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.sh new file mode 100644 index 000000000..d19503b53 --- /dev/null +++ b/tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# ----------------------------------------------------------------------------- +# Usage: +# ./00-get-promotable-values.sh +# +# Steps performed: +# - Updates the image tag in values.yaml from '0.1' to 'latest'. +# - Commits and pushes the change to the simple-app repository. +# - Retrieves the latest commit SHA. +# - Updates the mock JSON files with the new commit SHA. +# - Loads the updated expectations into Mockserver. +# ----------------------------------------------------------------------------- +sleep 2 +OS_TYPE=$(uname) +cd ../../setup/simple-app +git checkout dev + +if [ "$OS_TYPE" = "Linux" ]; then + sed -i 's/latest/0.1/g' values.yaml +else + sed -i '' 's/latest/0.1/g' values.yaml +fi + +git add --a +git commit -m "update values.yaml" +git push +srcCommitSha=$(git rev-parse origin/dev) +## update commit sha for dev app +if [ "$OS_TYPE" = "Linux" ]; then + sed -i "s/source-commit-sha/$srcCommitSha/g" ../../promotion/00-get-promotable-values/00-get-promotable-values.json +else + sed -i '' "s/source-commit-sha/$srcCommitSha/g" ../../promotion/00-get-promotable-values/00-get-promotable-values.json +fi +sleep 5 +curl -i -X PUT http://127.0.0.1:1080/mockserver/expectation --data-binary "@../../promotion/00-get-promotable-values/00-get-promotable-values.json" \ No newline at end of file diff --git a/tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.yaml b/tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.yaml new file mode 100644 index 000000000..0d94bae7a --- /dev/null +++ b/tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.yaml @@ -0,0 +1,19 @@ +# ----------------------------------------------------------------------------- +# 00-app-sync.yaml - KUTTL TestStep for app sync and mock update +# +# This TestStep runs the 00-app-sync.sh script to update the simple-app +# repository and load updated sync mock expectations into Mockserver for the +# Codefresh GitOps Operator component tests. +# +# Usage: +# This step is executed as part of the KUTTL test suite. +# +# Steps performed: +# - Executes the 00-app-sync.sh script to update the app and mocks. +# ----------------------------------------------------------------------------- +--- +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: + - script: ./00-get-promotable-values.sh +timeout: 30 \ No newline at end of file diff --git a/tests/component-tests/promotion/01-git-commit/00-app-sync.json b/tests/component-tests/promotion/01-git-commit/00-app-sync.json deleted file mode 100755 index 690f4010f..000000000 --- a/tests/component-tests/promotion/01-git-commit/00-app-sync.json +++ /dev/null @@ -1,159 +0,0 @@ -[ - { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\nquery productReleaseTasks {\n\tproductReleaseTasks {\n\t\ttype\n\t\tlabels\n\t\tcommitInfo {\n\t\t\tsha\n\t\t\tcommitter\n\t\t\tdate\n\t\t\tmessage\n\t\t}\n\t\tappNamespace\n\t\tappName\n\t\trepoUrl\n\t\tbranch\n\t\tpath\n\t\tpostActionOnly\n\t\tpreAction\n\t\tactionUrl\n\t\tactionBody\n\t\tpostAction\n\t\tworkflowNamespace\n\t\tworkflowName\n\t}\n}", - "variables": {} - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "productReleaseTasks": [ - { - "type": "CreateProductReleaseTask", - "labels": { - "codefresh.io/app-name": "simple-dev", - "codefresh.io/app-namespace": "codefresh", - "codefresh.io/env": "dev", - "codefresh.io/product": "simple", - "codefresh.io/promotion-flow": "stam", - "codefresh.io/release": "684040897b3903d3764e1f73", - "codefresh.io/release-name": "50575377c" - }, - "appNamespace": "codefresh", - "appName": "simple-dev", - "repoUrl": "http://gitea-http.gitea:3000/test-owner/simple-app.git", - "branch": "dev", - "path": ".", - "postActionOnly": true, - "commitInfo": { - "sha": "source-commit-sha", - "committer": "testowner ", - "date": "2025-05-12T05:49:00Z", - "message": "Update values.yaml" - }, - "actionUrl": "", - "actionBody": "" - } - ] - } - } - }, - "times": { - "remainingTimes": 1, - "unlimited": false - } - }, - { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\nquery productReleaseRunHooksTasks {\n\tproductReleaseRunHooksTasks {\n\t\ttype\n\t\tlabels\n\t\tworkflowTemplateName\n\t\tworkflowNamespace\n\t\tworkflowName\n\t\tparameters\n\t}\n}", - "variables": {} - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "productReleaseRunHooksTasks": [] - } - } - } - }, - { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\nquery productReleaseCommitStatuses {\n\tproductReleaseCommitStatuses {\n\t\tsha\n\t\trepoURL\n\t\tstatus\n\t\tdescription\n\t\tcontext\n\t\ttargetUrl\n\t}\n}", - "variables": {} - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "productReleaseCommitStatuses": [] - } - } - } - }, - { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "type": "REGEX", - "regex": ".*createProductRelease.*" - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "labels": { - "aaa": "bbb" - } - } - } - }, - "times": { - "remainingTimes": 1, - "unlimited": false - } - }, - { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "type": "REGEX", - "regex": ".*PromotionData.*" - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "srcApp": { - "metadata": { - "name": "simple-dev", - "cluster": "https://kubernetes.default.svc", - "namespace": "codefresh" - }, - "specSource": { - "repoURL": "http://gitea-http.gitea:3000/test-owner/simple-app.git", - "targetRevision": "dev", - "path": "." - } - }, - "destApp": { - "metadata": { - "name": "simple-prod", - "cluster": "https://kubernetes.default.svc", - "namespace": "codefresh" - }, - "specSource": { - "repoURL": "http://gitea-http.gitea:3000/test-owner/simple-app.git", - "targetRevision": "HEAD", - "path": "." - } - }, - "promotionTemplate": { - "promotion": [], - "versionSource": { - "file": "", - "jsonPath": "" - } - } - } - } - } - } -] \ No newline at end of file diff --git a/tests/component-tests/promotion/01-git-commit/00-app-sync.sh b/tests/component-tests/promotion/01-git-commit/00-app-sync.sh deleted file mode 100755 index 017df1c18..000000000 --- a/tests/component-tests/promotion/01-git-commit/00-app-sync.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash -# ----------------------------------------------------------------------------- -# 00-app-sync.sh - Updates app values and loads sync mock expectations -# -# This script is used in the Codefresh GitOps Operator component test suite to: -# - Update the 'values.yaml' file in the simple-app repository. -# - Commit and push the changes to the repository. -# - Update mock expectation JSON files with the latest commit SHA. -# - Load the updated mock expectations into Mockserver. -# -# Usage: -# ./00-app-sync.sh -# -# Steps performed: -# - Updates the image tag in values.yaml from '0.1' to 'latest'. -# - Commits and pushes the change to the simple-app repository. -# - Retrieves the latest commit SHA. -# - Updates the mock JSON files with the new commit SHA. -# - Loads the updated expectations into Mockserver. -# ----------------------------------------------------------------------------- -sleep 2 -OS_TYPE=$(uname) -cd ../../setup/simple-app -if [ "$OS_TYPE" = "Linux" ]; then - sed -i 's/0.1/latest/g' values.yaml -else - sed -i '' 's/0.1/latest/g' values.yaml -fi -git add --a -git commit -m "update values.yaml" -git push - -srcCommitSha=$(git rev-parse HEAD) -## update commit sha for dev app -if [ "$OS_TYPE" = "Linux" ]; then - sed -i "s/source-commit-sha/$srcCommitSha/g" ../../promotion/01-git-commit/00-app-sync.json -## update commit sha for prod app - sed -i "s/source-commit-sha/$srcCommitSha/g" ../../promotion/01-git-commit/01-app-promote.json -else - sed -i '' "s/source-commit-sha/$srcCommitSha/g" ../../promotion/01-git-commit/00-app-sync.json -## update commit sha for prod app - sed -i '' "s/source-commit-sha/$srcCommitSha/g" ../../promotion/01-git-commit/01-app-promote.json -fi - -sleep 5 -curl -i -X PUT http://127.0.0.1:1080/mockserver/expectation --data-binary "@../../promotion/01-git-commit/00-app-sync.json" diff --git a/tests/component-tests/promotion/01-git-commit/01-app-promote.json b/tests/component-tests/promotion/01-git-commit/01-app-promote.json deleted file mode 100755 index 275beeba8..000000000 --- a/tests/component-tests/promotion/01-git-commit/01-app-promote.json +++ /dev/null @@ -1,163 +0,0 @@ -[ - { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\nquery productReleaseTasks {\n\tproductReleaseTasks {\n\t\ttype\n\t\tlabels\n\t\tcommitInfo {\n\t\t\tsha\n\t\t\tcommitter\n\t\t\tdate\n\t\t\tmessage\n\t\t}\n\t\tappNamespace\n\t\tappName\n\t\trepoUrl\n\t\tbranch\n\t\tpath\n\t\tpostActionOnly\n\t\tpreAction\n\t\tactionUrl\n\t\tactionBody\n\t\tpostAction\n\t\tworkflowNamespace\n\t\tworkflowName\n\t}\n}", - "variables": {} - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "productReleaseTasks": [ - { - "type": "CreateProductReleaseTask", - "labels": { - "codefresh.io/product": "simple", - "codefresh.io/env": "prod", - "codefresh.io/release": "68218f613623801deee005c0", - "codefresh.io/promotion-flow": "test", - "codefresh.io/app-name": "simple-prod", - "codefresh.io/app-namespace": "codefresh", - "codefresh.io/release-name": "f8646c7d0" - }, - "commitInfo": { - "sha": "source-commit-sha", - "committer": "testowner ", - "date": "2025-05-12T05:49:00Z", - "message": "Update values.yaml" - }, - "appNamespace": "codefresh", - "appName": "simple-prod", - "repoUrl": "http://gitea-http.gitea:3000/test-owner/simple-app.git", - "branch": "master", - "path": ".", - "postActionOnly": false, - "preAction": null, - "actionUrl": "/api/promotions/commit", - "actionBody": "{\"srcAppId\":{\"runtime\":\"test-runtime\",\"namespace\":\"codefresh\",\"name\":\"simple-dev\"},\"srcAppCommitSha\":\"source-commit-sha\",\"destAppId\":{\"runtime\":\"test-runtime\",\"namespace\":\"codefresh\",\"name\":\"simple-prod\"},\"message\":\"promoting codefresh/simple-dev to codefresh/simple-prod\"}", - "postAction": null, - "workflowNamespace": null, - "workflowName": null - } - ] - } - } - }, - "times": { - "remainingTimes": 1, - "unlimited": false - } - }, - { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\nquery productReleaseRunHooksTasks {\n\tproductReleaseRunHooksTasks {\n\t\ttype\n\t\tlabels\n\t\tworkflowTemplateName\n\t\tworkflowNamespace\n\t\tworkflowName\n\t\tparameters\n\t}\n}", - "variables": {} - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "productReleaseRunHooksTasks": [] - } - } - } - }, - { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\nquery productReleaseCommitStatuses {\n\tproductReleaseCommitStatuses {\n\t\tsha\n\t\trepoURL\n\t\tstatus\n\t\tdescription\n\t\tcontext\n\t\ttargetUrl\n\t}\n}", - "variables": {} - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "productReleaseCommitStatuses": [] - } - } - } - }, - { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "type": "REGEX", - "regex": ".*createProductRelease.*" - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "labels": { - "aaa": "bbb" - } - } - } - }, - "times": { - "remainingTimes": 1, - "unlimited": false - } - }, - { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "type": "REGEX", - "regex": ".*PromotionData.*" - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "srcApp": { - "metadata": { - "name": "simple-dev", - "cluster": "https://kubernetes.default.svc", - "namespace": "codefresh" - }, - "specSource": { - "repoURL": "http://gitea-http.gitea:3000/test-owner/simple-app.git", - "targetRevision": "dev", - "path": "." - } - }, - "destApp": { - "metadata": { - "name": "simple-prod", - "cluster": "https://kubernetes.default.svc", - "namespace": "codefresh" - }, - "specSource": { - "repoURL": "http://gitea-http.gitea:3000/test-owner/simple-app.git", - "targetRevision": "HEAD", - "path": "." - } - }, - "promotionTemplate": { - "promotion": [], - "versionSource": { - "file": "", - "jsonPath": "" - } - } - } - } - } - } -] \ No newline at end of file diff --git a/tests/component-tests/promotion/01-git-commit/01-app-promote.sh b/tests/component-tests/promotion/01-git-commit/01-app-promote.sh deleted file mode 100755 index 630f7e986..000000000 --- a/tests/component-tests/promotion/01-git-commit/01-app-promote.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# ----------------------------------------------------------------------------- -# 01-app-promote.sh - Loads app promotion mock expectations for component tests -# -# This script loads mock expectations into the Mockserver for the app promotion -# scenario in the Codefresh GitOps Operator component test suite. -# -# Usage: -# ./01-app-promote.sh -# -# Steps performed: -# - Loads the app promotion mock expectations from 01-app-promote.json into Mockserver. -# ----------------------------------------------------------------------------- -curl -i -X PUT http://127.0.0.1:1080/mockserver/expectation --data-binary "@../../promotion/01-git-commit/01-app-promote.json" diff --git a/tests/component-tests/promotion/01-git-commit/01-app-promote.yaml b/tests/component-tests/promotion/01-git-commit/01-app-promote.yaml deleted file mode 100644 index 1ef245b15..000000000 --- a/tests/component-tests/promotion/01-git-commit/01-app-promote.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# ----------------------------------------------------------------------------- -# 01-app-promote.yaml - KUTTL TestStep for app promotion mock setup -# -# This TestStep runs the 01-app-promote.sh script to load app promotion mock -# expectations into Mockserver for the Codefresh GitOps Operator component tests. -# -# Usage: -# This step is executed as part of the KUTTL test suite. -# -# Steps performed: -# - Executes the 01-app-promote.sh script to configure Mockserver with promotion mocks. -# ----------------------------------------------------------------------------- ---- -apiVersion: kuttl.dev/v1beta1 -kind: TestStep -commands: - - script: ./01-app-promote.sh -timeout: 30 \ No newline at end of file diff --git a/tests/component-tests/promotion/01-git-commit/01-assert.yaml b/tests/component-tests/promotion/01-git-commit/01-assert.yaml deleted file mode 100644 index ac925951c..000000000 --- a/tests/component-tests/promotion/01-git-commit/01-assert.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# ----------------------------------------------------------------------------- -# 01-assert.yaml - KUTTL TestAssert for app promotion workflow status -# -# This TestAssert script checks the status of the workflow created by the -# app promotion test in the Codefresh GitOps Operator component tests. -# -# Usage: -# This assertion is executed as part of the KUTTL test suite. -# -# Steps performed: -# - Queries the workflow status for the specific release. -# - Asserts that the workflow status is 'Succeeded'. -# ----------------------------------------------------------------------------- ---- -apiVersion: kuttl.dev/v1beta1 -commands: - - script: > - STATUS="$(kubectl get workflow -n codefresh -l codefresh.io/release=68218f613623801deee005c0 -o jsonpath="{.items[*].status.phase}")" - - if [ $STATUS = 'Succeeded' ]; then - echo "workflow status for release '68218f613623801deee005c0' has succeeded" - else - echo "workflow status ($STATUS) for release '68218f613623801deee005c0' should be succeeded" - exit 1 - fi -kind: TestAssert -timeout: 240 \ No newline at end of file diff --git a/tests/component-tests/promotion/01-promote-with-commit/00-assert.yaml b/tests/component-tests/promotion/01-promote-with-commit/00-assert.yaml new file mode 100644 index 000000000..0d94bae7a --- /dev/null +++ b/tests/component-tests/promotion/01-promote-with-commit/00-assert.yaml @@ -0,0 +1,19 @@ +# ----------------------------------------------------------------------------- +# 00-app-sync.yaml - KUTTL TestStep for app sync and mock update +# +# This TestStep runs the 00-app-sync.sh script to update the simple-app +# repository and load updated sync mock expectations into Mockserver for the +# Codefresh GitOps Operator component tests. +# +# Usage: +# This step is executed as part of the KUTTL test suite. +# +# Steps performed: +# - Executes the 00-app-sync.sh script to update the app and mocks. +# ----------------------------------------------------------------------------- +--- +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: + - script: ./00-get-promotable-values.sh +timeout: 30 \ No newline at end of file diff --git a/tests/component-tests/promotion/01-promote-with-commit/00-promote-with-commit.json b/tests/component-tests/promotion/01-promote-with-commit/00-promote-with-commit.json new file mode 100644 index 000000000..667cef6ae --- /dev/null +++ b/tests/component-tests/promotion/01-promote-with-commit/00-promote-with-commit.json @@ -0,0 +1,53 @@ +[ + { + "httpRequest": { + "method": "GET", + "path": "/2.0/api/promotion-orchestrator/promotion/desired-promotion-tasks" + }, + "httpResponse": { + "statusCode": 200, + "body": [ + { + "promotionTaskId": "635ae4b1a8d4ea001297e0e8", + "name": "prod-codefresh-simple-prod-68ea7699e1e47d0cd666f6b9", + "promotionId": "68ea7699e1e47d0cd666f6b8", + "productName": "echo", + "environment": "prod", + "applicationId": { + "name": "simple-prod", + "namespace": "codefresh" + }, + "spec": { + "phase": "PENDING", + "steps": [ + { + "type": "promoteAppWithCommit", + "targetApplication": { + "name": "simple-prod", + "namespace": "codefresh" + }, + "commitMessage": "promote to codefresh/simple-prod", + "commitDescription": "codefresh promotion link.io/to/promotion", + "PromotionValues": [ + { + "file": "values.yaml", + "properties": [ + { + "path": "/image/tag", + "value": "0.1" + } + ] + } + ] + } + ] + } + } + ] + }, + "times": { + "remainingTimes": 1, + "unlimited": false + } + } + ] \ No newline at end of file diff --git a/tests/component-tests/promotion/01-promote-with-commit/00-promote-with-commit.sh b/tests/component-tests/promotion/01-promote-with-commit/00-promote-with-commit.sh new file mode 100644 index 000000000..9cd23173b --- /dev/null +++ b/tests/component-tests/promotion/01-promote-with-commit/00-promote-with-commit.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# ----------------------------------------------------------------------------- +# Usage: +# ./00-promote-with-commit.sh +# +# Steps performed: +# - Loads the promote-with-commit mock expectations into Mockserver. +# ----------------------------------------------------------------------------- +curl -i -X PUT http://127.0.0.1:1080/mockserver/expectation --data-binary "@../../promotion/01-promote-with-commit/00-promote-with-commit.json" \ No newline at end of file diff --git a/tests/component-tests/promotion/01-git-commit/00-app-sync.yaml b/tests/component-tests/promotion/01-promote-with-commit/00-promote-with-commit.yaml similarity index 94% rename from tests/component-tests/promotion/01-git-commit/00-app-sync.yaml rename to tests/component-tests/promotion/01-promote-with-commit/00-promote-with-commit.yaml index c5bf50cc7..95f13d0d5 100644 --- a/tests/component-tests/promotion/01-git-commit/00-app-sync.yaml +++ b/tests/component-tests/promotion/01-promote-with-commit/00-promote-with-commit.yaml @@ -15,5 +15,5 @@ apiVersion: kuttl.dev/v1beta1 kind: TestStep commands: - - script: ./00-app-sync.sh + - script: ./00-promote-with-commit.sh timeout: 30 \ No newline at end of file diff --git a/tests/component-tests/setup/fixture/applications/simple-dev.yaml b/tests/component-tests/setup/fixture/applications/simple-dev.yaml index c2acaf27b..8f69aa4eb 100644 --- a/tests/component-tests/setup/fixture/applications/simple-dev.yaml +++ b/tests/component-tests/setup/fixture/applications/simple-dev.yaml @@ -6,7 +6,7 @@ metadata: finalizers: - resources-finalizer.argocd.argoproj.io/foreground annotations: - codefresh.io/product: simple-app + codefresh.io/product: echo spec: project: default destination: diff --git a/tests/component-tests/setup/fixture/applications/simple-prod.yaml b/tests/component-tests/setup/fixture/applications/simple-prod.yaml index 3e72fbafd..ac677915d 100644 --- a/tests/component-tests/setup/fixture/applications/simple-prod.yaml +++ b/tests/component-tests/setup/fixture/applications/simple-prod.yaml @@ -6,7 +6,7 @@ metadata: finalizers: - resources-finalizer.argocd.argoproj.io/foreground annotations: - codefresh.io/product: simple-app + codefresh.io/product: echo spec: project: default destination: diff --git a/tests/component-tests/setup/mocks/platform-mocks.json b/tests/component-tests/setup/mocks/platform-mocks.json index 24b306ac9..1d12e8931 100644 --- a/tests/component-tests/setup/mocks/platform-mocks.json +++ b/tests/component-tests/setup/mocks/platform-mocks.json @@ -1,367 +1,389 @@ [ { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\n mutation CreateRuntime($installationArgs: RuntimeInstallationArgs!) {\n createRuntime(installationArgs: $installationArgs) {\n newAccessToken\n }\n }\n", - "variables": { - "installationArgs": { - "runtimeName": "test-runtime", - "runtimeNamespace": "codefresh", - "componentNames": [], - "isExternalArgoCd": false, - "chartVersion": "0.19.0", - "cluster": "https://kubernetes.default.svc", - "ingressClass": "nginx", - "ingressController": "nginx", - "ingressHost": "http://host.docker.internal:8080", - "installationType": "HELM", - "managed": false, - "runtimeVersion": "0.1.71" - } - } - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "createRuntime": { - "newAccessToken": "aaaaaaaaaaaaaaa.bbbbbbbbbbbbbbb" - } - } - } + "httpRequest": { + "method": "POST", + "path": "/2.0/api/promotion-orchestrator/promotion/commit-detected" + }, + "httpResponse": { + "statusCode": 200, + "body": { + "handled": true, + "message": "bla bla" } + } + }, + { + "httpRequest": { + "method": "POST", + "path": "/2.0/api/promotion-orchestrator/promotion/status/promotion/.*/promotionTask/.*" + }, + "httpResponse": { + "statusCode": 200 + } }, { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "type": "REGEX", - "regex": "\\{\\s*\"query\"\\s*:\\s*\".*saveSealingKey.*\",\\s*\"variables\"\\s*:\\s*\\{\\s*\"privateKey\"\\s*:\\s*\".*\"\\s*\\}\\s*\\}" + "httpRequest": { + "method": "POST", + "path": "/2.0/api/graphql", + "body": { + "query": "\n mutation CreateRuntime($installationArgs: RuntimeInstallationArgs!) {\n createRuntime(installationArgs: $installationArgs) {\n newAccessToken\n }\n }\n", + "variables": { + "installationArgs": { + "runtimeName": "test-runtime", + "runtimeNamespace": "codefresh", + "componentNames": [], + "isExternalArgoCd": false, + "chartVersion": "0.19.0", + "cluster": "https://kubernetes.default.svc", + "ingressClass": "nginx", + "ingressController": "nginx", + "ingressHost": "http://host.docker.internal:8080", + "installationType": "HELM", + "managed": false, + "runtimeVersion": "0.1.71" } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "saveSealingKey": "68161a545a284d2ec56e9d1a" - } + } + } + }, + "httpResponse": { + "statusCode": 200, + "body": { + "data": { + "createRuntime": { + "newAccessToken": "aaaaaaaaaaaaaaa.bbbbbbbbbbbbbbb" } + } } + } }, { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\n query {\n productComponentsList(filters: { hasPendingPullRequests: true }) {\n id\n pendingPullRequests {\n repo\n id\n }\n }\n }\n" - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "productComponentsList": [] - } - } + "httpRequest": { + "method": "POST", + "path": "/2.0/api/graphql", + "body": { + "type": "REGEX", + "regex": "\\{\\s*\"query\"\\s*:\\s*\".*saveSealingKey.*\",\\s*\"variables\"\\s*:\\s*\\{\\s*\"privateKey\"\\s*:\\s*\".*\"\\s*\\}\\s*\\}" + } + }, + "httpResponse": { + "statusCode": 200, + "body": { + "data": { + "saveSealingKey": "68161a545a284d2ec56e9d1a" + } } + } }, { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\n query Applications($pagination: SlicePaginationArgs!, $filters: ApplicationsFilterArgs) {\n response: applications(pagination: $pagination, filters: $filters) {\n edges {\n node {\n metadata {\n name\n namespace\n runtime\n account\n }\n }\n }\n }\n }\n", - "variables": { - "filters": { - "inactive": true, - "includeComponents": true - }, - "pagination": { - "first": 50 - } - } - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "response": { - "edges": [], - "pageInfo": { - "startCursor": null, - "endCursor": null, - "hasNextPage": false, - "hasPrevPage": false - } - } - } - } + "httpRequest": { + "method": "POST", + "path": "/2.0/api/graphql", + "body": { + "query": "\n query {\n productComponentsList(filters: { hasPendingPullRequests: true }) {\n id\n pendingPullRequests {\n repo\n id\n }\n }\n }\n" } + }, + "httpResponse": { + "statusCode": 200, + "body": { + "data": { + "productComponentsList": [] + } + } + } }, { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "type": "JSON_SCHEMA", - "jsonSchema": { - "type": "object", - "properties": { - "query": { - "type": "string", - "pattern": "query getSealingKey\\(\\$id: String!\\) \\{[\\s\\S]*getSealingKey" - }, - "variables": { - "type": "object", - "properties": { - "id": { - "type": "string" - } - }, - "required": [ - "id" - ] - } - }, - "required": [ - "query", - "variables" - ] - } + "httpRequest": { + "method": "POST", + "path": "/2.0/api/graphql", + "body": { + "query": "\n query Applications($pagination: SlicePaginationArgs!, $filters: ApplicationsFilterArgs) {\n response: applications(pagination: $pagination, filters: $filters) {\n edges {\n node {\n metadata {\n name\n namespace\n runtime\n account\n }\n }\n }\n }\n }\n", + "variables": { + "filters": { + "inactive": true, + "includeComponents": true + }, + "pagination": { + "first": 50 } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "getSealingKey": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKSndJQkFBS0NBZ0VBb3dYZTFUaldIR1dQQS9zV3FnSmVJSDc5VytBbEdENWJUNkoxanZOVGoyenRSZ2pXClVTeTdZMDNSRGdjZkdNQlRQUzBDdWkxNWlSTUhCNjR3UzNZTEk1eEllOENOY0l2K0taK2RsZ1kyWEE3SVJwREIKZVFabGNwaTdjamcvSEZDbnZiWW5tb0Nja0hJdEpnZHd0Nkl5OFA2Qm0yMVVNUjVXR1VzOXlhTDU5Y28zMVFuTApUeVh5Y1BWOTI0QTdLZkVzdEo4R3F2S0VtUVZFdnFIdFcyeEtkOXNTUDg5ZXpvK3g2WExKaGFVZ002U1JtMzczCndVcjh5d21kOTlrQ0lJVXRjVmRPOTdSZHkzRkpPeUswVmQzb0lMNWZVaXZkV2pQTnFjQjFxSUdCQ3VnbkVFS1IKdTE3TUx2bEtRRkQwKzZ6VGJUSG9iL0pZN0NzMXVXUlBFZGNtOWhWc2lCQTYwN2FIejlCOEtyUnhKT041c2NkZAorc0lnRVlBWjIxZllkVjArVnhYQm9xa3hwYWd1bHExMTd5ZWl5K2FNcmh3VkRyWkx2Tjh0YmtyaitVemhIcThTCjNaYWROdWE4MkRQdzFvSzhnMThPRGVWbVIzcUtuT3hmaUtJWm1kNXhGRzJiUFdCUWtkbUExdkphZGtWdnh5U0YKakJyM1NVREIzNjZ6TERHOElSbzQrWkM5c2dSanlaL2FqTTNkaWhEOFFkU1pBai9oRmZ5Q3FkRjZYWCt3Yk1PRgpDOWhQZDZVa2pFSEZNRHBkNm5MRi9GTENaY2xZSEg3WTMxK3ZsUEE5c3l3eGpLTDlyRmNielhVV3c2RTdnMmN3Cnh4cnpXYkRkT0xtMUpLRjY5NU5EcllNQS8zMjlaVmJOMDZXV0JwTHhkbVlHRU9OWllkRHhWVVJKelVNQ0F3RUEKQVFLQ0FnQW16MVQzU2VxZkpBWmlHanFSQ3JOQjVUbUh6OXJFNU1OME4rYm91MERmV2owNmVRd2NreHVoVG50QQpiYTJYaE9ITUpKVUxvWnZYYURJNlA5dTdlMFMzbTVNZDh2ODVGZnJTQ2UvSU1YNXJlQkZ4eXpCa0VZUEJQbDhSCm1CWmVOVTFadXEyKytITk5hQUVibHBYZEFiNUM1VFFSdm50V25qUTlIVTUrWEZCSmxYU3BRUVdudUE3NW1WZjMKRTVZQ0xDcEtiYmwycFBtd1BETGJkMDA4Z0pGUjYxTnk0WGxlajVMNVVweHJOcDV0N1BYRklQcjJoMVdiT0pUawoxa0xOWHljc1htNnNSY0kybHFlcWJsNmtPb255a1orN3ZqbWFLYzhDWkpFZUpvYUVCRFNZaUdDTlRNb3JQS25TCm1mTllueEpPWXAxRldWcVdEc3RoY1dIcGkyRDR2MkdYaTQ0UnZ2UE1kME9EVDdrVFlFWFc0YlFsQURlVkZjUDIKcjcrOGJDWWZFd0dReG9xRVpsbjdnb0ZsbGd5RVl0RmcyMGRSR2pKVzFxVDI4b21CU0UvMHI4d3lvaGxJQ25XVgowWVJrS01ld1M1VjdXUndnVzNjL3pOa0M5c082VlhZSm82UmRVUWgyVFpDRHROcUZOUmk5ZHIvTnNFcG0zb0ZmCkJUNVRUSW5YQWM5RTJXOVBFUEVic2Z5Y3BacThJcFNuSnNKck9qbW9taTBmalBoMDBvbFYvVVVXdWZ5UDBibzkKcEh3L2tMR3JrOGFzNmlIdE5ITyt6eTl0TEhtcWhKbFY1aEU0azJjNUs0Q1Nqbnh4WlBZTFVkTldMV1NvM2NSbwovMmtvVUhacjRhVWhmVmMxTXFrY2pNZ1RUeEhNNnFxTGRDQXF1dGNqOU1pemJVV0pZUUtDQVFFQTBRQVExMVJvCm1qUGlaZjU5VG1oWHJrOWduSkJGWjJpMk1JdXlBVitFZHc5SFJWRVR6ZjY2S0hHZDFudzJjTGYxaWVVOXRrRzAKeHRHdlFGc1Y1SXRaVzhOMDhjemRQTXNEd0tGNmN1bFJBemhFU2ZxQ3BLek5xaDQ0MFNGaWlqSURYR0hxMTJ6bwplRGNhZjVkL0ZmS1daMUx4c1JFMlhRMFl3Lyt1U1" - } + } + } + }, + "httpResponse": { + "statusCode": 200, + "body": { + "data": { + "response": { + "edges": [], + "pageInfo": { + "startCursor": null, + "endCursor": null, + "hasNextPage": false, + "hasPrevPage": false + } } + } } + } }, { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\n query GitSources($pagination: SlicePaginationArgs, $project: String, $runtime: String) {\n response: gitSources(pagination: $pagination, project: $project, runtime: $runtime) {\n edges {\n node {\n metadata {\n account\n runtime\n group\n version\n kind\n name\n namespace\n }\n self {\n repoURL\n path\n revision\n }\n permissions {\n userId\n read\n write\n }\n }\n }\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPrevPage\n }\n }\n }\n", - "variables": { - "runtime": "test-runtime" - } - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "response": { - "edges": [], - "pageInfo": { - "startCursor": null, - "endCursor": null, - "hasNextPage": false, - "hasPrevPage": false - } - } - } - } + "httpRequest": { + "method": "POST", + "path": "/2.0/api/graphql", + "body": { + "type": "JSON_SCHEMA", + "jsonSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "pattern": "query getSealingKey\\(\\$id: String!\\) \\{[\\s\\S]*getSealingKey" + }, + "variables": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + }, + "required": [ + "id" + ] + } + }, + "required": [ + "query", + "variables" + ] + } } + }, + "httpResponse": { + "statusCode": 200, + "body": { + "data": { + "getSealingKey": "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlKSndJQkFBS0NBZ0VBb3dYZTFUaldIR1dQQS9zV3FnSmVJSDc5VytBbEdENWJUNkoxanZOVGoyenRSZ2pXClVTeTdZMDNSRGdjZkdNQlRQUzBDdWkxNWlSTUhCNjR3UzNZTEk1eEllOENOY0l2K0taK2RsZ1kyWEE3SVJwREIKZVFabGNwaTdjamcvSEZDbnZiWW5tb0Nja0hJdEpnZHd0Nkl5OFA2Qm0yMVVNUjVXR1VzOXlhTDU5Y28zMVFuTApUeVh5Y1BWOTI0QTdLZkVzdEo4R3F2S0VtUVZFdnFIdFcyeEtkOXNTUDg5ZXpvK3g2WExKaGFVZ002U1JtMzczCndVcjh5d21kOTlrQ0lJVXRjVmRPOTdSZHkzRkpPeUswVmQzb0lMNWZVaXZkV2pQTnFjQjFxSUdCQ3VnbkVFS1IKdTE3TUx2bEtRRkQwKzZ6VGJUSG9iL0pZN0NzMXVXUlBFZGNtOWhWc2lCQTYwN2FIejlCOEtyUnhKT041c2NkZAorc0lnRVlBWjIxZllkVjArVnhYQm9xa3hwYWd1bHExMTd5ZWl5K2FNcmh3VkRyWkx2Tjh0YmtyaitVemhIcThTCjNaYWROdWE4MkRQdzFvSzhnMThPRGVWbVIzcUtuT3hmaUtJWm1kNXhGRzJiUFdCUWtkbUExdkphZGtWdnh5U0YKakJyM1NVREIzNjZ6TERHOElSbzQrWkM5c2dSanlaL2FqTTNkaWhEOFFkU1pBai9oRmZ5Q3FkRjZYWCt3Yk1PRgpDOWhQZDZVa2pFSEZNRHBkNm5MRi9GTENaY2xZSEg3WTMxK3ZsUEE5c3l3eGpLTDlyRmNielhVV3c2RTdnMmN3Cnh4cnpXYkRkT0xtMUpLRjY5NU5EcllNQS8zMjlaVmJOMDZXV0JwTHhkbVlHRU9OWllkRHhWVVJKelVNQ0F3RUEKQVFLQ0FnQW16MVQzU2VxZkpBWmlHanFSQ3JOQjVUbUh6OXJFNU1OME4rYm91MERmV2owNmVRd2NreHVoVG50QQpiYTJYaE9ITUpKVUxvWnZYYURJNlA5dTdlMFMzbTVNZDh2ODVGZnJTQ2UvSU1YNXJlQkZ4eXpCa0VZUEJQbDhSCm1CWmVOVTFadXEyKytITk5hQUVibHBYZEFiNUM1VFFSdm50V25qUTlIVTUrWEZCSmxYU3BRUVdudUE3NW1WZjMKRTVZQ0xDcEtiYmwycFBtd1BETGJkMDA4Z0pGUjYxTnk0WGxlajVMNVVweHJOcDV0N1BYRklQcjJoMVdiT0pUawoxa0xOWHljc1htNnNSY0kybHFlcWJsNmtPb255a1orN3ZqbWFLYzhDWkpFZUpvYUVCRFNZaUdDTlRNb3JQS25TCm1mTllueEpPWXAxRldWcVdEc3RoY1dIcGkyRDR2MkdYaTQ0UnZ2UE1kME9EVDdrVFlFWFc0YlFsQURlVkZjUDIKcjcrOGJDWWZFd0dReG9xRVpsbjdnb0ZsbGd5RVl0RmcyMGRSR2pKVzFxVDI4b21CU0UvMHI4d3lvaGxJQ25XVgowWVJrS01ld1M1VjdXUndnVzNjL3pOa0M5c082VlhZSm82UmRVUWgyVFpDRHROcUZOUmk5ZHIvTnNFcG0zb0ZmCkJUNVRUSW5YQWM5RTJXOVBFUEVic2Z5Y3BacThJcFNuSnNKck9qbW9taTBmalBoMDBvbFYvVVVXdWZ5UDBibzkKcEh3L2tMR3JrOGFzNmlIdE5ITyt6eTl0TEhtcWhKbFY1aEU0azJjNUs0Q1Nqbnh4WlBZTFVkTldMV1NvM2NSbwovMmtvVUhacjRhVWhmVmMxTXFrY2pNZ1RUeEhNNnFxTGRDQXF1dGNqOU1pemJVV0pZUUtDQVFFQTBRQVExMVJvCm1qUGlaZjU5VG1oWHJrOWduSkJGWjJpMk1JdXlBVitFZHc5SFJWRVR6ZjY2S0hHZDFudzJjTGYxaWVVOXRrRzAKeHRHdlFGc1Y1SXRaVzhOMDhjemRQTXNEd0tGNmN1bFJBemhFU2ZxQ3BLek5xaDQ0MFNGaWlqSURYR0hxMTJ6bwplRGNhZjVkL0ZmS1daMUx4c1JFMlhRMFl3Lyt1U1" + } + } + } }, { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\n query me {\n me {\n runtimeName\n activeAccount {\n id\n name\n gitProvider\n gitApiUrl\n sharedConfigRepo\n csdpValidated\n }\n }\n }\n" - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "me": { - "runtimeName": "test-runtime", - "activeAccount": { - "id": "6791f6184c56bd51c65784a2", - "name": "local", - "gitProvider": "GITHUB", - "gitApiUrl": "http://mockserver.mockserver:1080", - "sharedConfigRepo": "http://gitea-http.gitea:3000/test-owner/codefresh-isc", - "csdpValidated": true - } - } - } + "httpRequest": { + "method": "POST", + "path": "/2.0/api/graphql", + "body": { + "query": "\n query GitSources($pagination: SlicePaginationArgs, $project: String, $runtime: String) {\n response: gitSources(pagination: $pagination, project: $project, runtime: $runtime) {\n edges {\n node {\n metadata {\n account\n runtime\n group\n version\n kind\n name\n namespace\n }\n self {\n repoURL\n path\n revision\n }\n permissions {\n userId\n read\n write\n }\n }\n }\n pageInfo {\n startCursor\n endCursor\n hasNextPage\n hasPrevPage\n }\n }\n }\n", + "variables": { + "runtime": "test-runtime" + } + } + }, + "httpResponse": { + "statusCode": 200, + "body": { + "data": { + "response": { + "edges": [], + "pageInfo": { + "startCursor": null, + "endCursor": null, + "hasNextPage": false, + "hasPrevPage": false + } } + } } + } }, { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\n query Runtime($name: String!) {\n runtime(name: $name) {\n metadata {\n account\n namespace\n }\n installationStatus\n installationType\n ingressHost\n runtimeVersion\n }\n }\n", - "variables": { - "name": "test-runtime" - } - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "runtime": { - "metadata": { - "account": "6791f6184c56bd51c65784a2", - "namespace": "codefresh" - }, - "installationStatus": "IN_PROGRESS", - "installationType": "HELM", - "ingressHost": "http://host.docker.internal:8080", - "runtimeVersion": "0.1.71" - } - } + "httpRequest": { + "method": "POST", + "path": "/2.0/api/graphql", + "body": { + "query": "\n query me {\n me {\n runtimeName\n activeAccount {\n id\n name\n gitProvider\n gitApiUrl\n sharedConfigRepo\n csdpValidated\n }\n }\n }\n" + } + }, + "httpResponse": { + "statusCode": 200, + "body": { + "data": { + "me": { + "runtimeName": "test-runtime", + "activeAccount": { + "id": "6791f6184c56bd51c65784a2", + "name": "local", + "gitProvider": "GITHUB", + "gitApiUrl": "http://mockserver.mockserver:1080", + "sharedConfigRepo": "http://gitea-http.gitea:3000/test-owner/codefresh-isc", + "csdpValidated": true + } } + } } + } }, { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "type": "REGEX", - "regex": "\\{\\s*\"query\"\\s*:\\s*\".*shouldBeImplicitConfigurationRuntime.*\"\\s*\\}" - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "shouldBeImplicitConfigurationRuntime": false - } + "httpRequest": { + "method": "POST", + "path": "/2.0/api/graphql", + "body": { + "query": "\n query Runtime($name: String!) {\n runtime(name: $name) {\n metadata {\n account\n namespace\n }\n installationStatus\n installationType\n ingressHost\n runtimeVersion\n }\n }\n", + "variables": { + "name": "test-runtime" + } + } + }, + "httpResponse": { + "statusCode": 200, + "body": { + "data": { + "runtime": { + "metadata": { + "account": "6791f6184c56bd51c65784a2", + "namespace": "codefresh" + }, + "installationStatus": "IN_PROGRESS", + "installationType": "HELM", + "ingressHost": "http://host.docker.internal:8080", + "runtimeVersion": "0.1.71" } + } } + } }, { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "type": "REGEX", - "regex": "\\{\\s*\"query\"\\s*:\\s*\".*updateRuntimeClusters.*\",\\s*\"variables\"\\s*:\\s*\\{\\s*\"clusters\"\\s*:\\s*\\[.*\\]\\s*\\}\\s*\\}" - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "runtime": { - "metadata": { - "account": "6791f6184c56bd51c65784a2", - "namespace": "codefresh" - }, - "installationStatus": "COMPLETED", - "installationType": "HELM", - "ingressHost": "http://host.docker.internal:8080", - "runtimeVersion": "0.1.71" - } - } - } + "httpRequest": { + "method": "POST", + "path": "/2.0/api/graphql", + "body": { + "type": "REGEX", + "regex": "\\{\\s*\"query\"\\s*:\\s*\".*shouldBeImplicitConfigurationRuntime.*\"\\s*\\}" + } + }, + "httpResponse": { + "statusCode": 200, + "body": { + "data": { + "shouldBeImplicitConfigurationRuntime": false + } } + } }, { - "httpRequest": { - "method": "POST", - "path": "/api/argo-runtime", - "body": { - "name": "test-runtime" - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "token": "example-runtime-token" + "httpRequest": { + "method": "POST", + "path": "/2.0/api/graphql", + "body": { + "type": "REGEX", + "regex": "\\{\\s*\"query\"\\s*:\\s*\".*updateRuntimeClusters.*\",\\s*\"variables\"\\s*:\\s*\\{\\s*\"clusters\"\\s*:\\s*\\[.*\\]\\s*\\}\\s*\\}" + } + }, + "httpResponse": { + "statusCode": 200, + "body": { + "data": { + "runtime": { + "metadata": { + "account": "6791f6184c56bd51c65784a2", + "namespace": "codefresh" + }, + "installationStatus": "COMPLETED", + "installationType": "HELM", + "ingressHost": "http://host.docker.internal:8080", + "runtimeVersion": "0.1.71" } + } } + } }, { - "httpRequest": { - "method": "GET", - "path": "/api/argo-runtime/test-runtime/storeKey" - }, - "httpResponse": { - "statusCode": 200, - "body": { - "storeKey": "example-runtime-token" - } + "httpRequest": { + "method": "POST", + "path": "/api/argo-runtime", + "body": { + "name": "test-runtime" + } + }, + "httpResponse": { + "statusCode": 200, + "body": { + "token": "example-runtime-token" } + } }, { - "httpRequest": { - "method": "GET", - "path": "/api/ping" - }, - "httpResponse": { - "statusCode": 200 + "httpRequest": { + "method": "GET", + "path": "/api/argo-runtime/test-runtime/storeKey" + }, + "httpResponse": { + "statusCode": 200, + "body": { + "storeKey": "example-runtime-token" } + } }, { - "httpRequest": { - "method": "POST", - "path": "/2.0/api/graphql", - "body": { - "query": "\\n query PromotionData(\\n $srcRuntime: String!\\n $srcNamespace: String!\\n $srcName: String!\\n $destRuntime: String!\\n $destNamespace: String!\\n $destName: String!\\n ) {\\n srcApp: application(runtime: $srcRuntime, namespace: $srcNamespace, name: $srcName) {\\n metadata {\\n name\\n cluster\\n namespace\\n }\\n specSource {\\n repoURL\\n targetRevision\\n path\\n }\\n }\\n destApp: application(runtime: $destRuntime, namespace: $destNamespace, name: $destName) {\\n metadata {\\n name\\n cluster\\n namespace\\n }\\n specSource {\\n repoURL\\n targetRevision\\n path\\n }\\n }\\n promotionTemplate(runtime: $destRuntime, namespace: $destNamespace, name: $destName) {\\n promotion {\\n glob\\n jsonPaths\\n }\\n versionSource {\\n file\\n jsonPath\\n }\\n }\\n }\\n", - "variables": { - "srcRuntime": "test-runtime", - "srcNamespace": "codefresh", - "srcName": "simple-dev", - "destRuntime": "test-runtime", - "destNamespace": "codefresh", - "destName": "simple-prod" - } - } - }, - "httpResponse": { - "statusCode": 200, - "body": { - "data": { - "srcApp": { - "metadata": { - "name": "simple-dev", - "cluster": "https://kubernetes.default.svc", - "namespace": "codefresh" - }, - "specSource": { - "repoURL": "http://gitea-http.gitea:3000/test-owner/simple-app.git", - "targetRevision": "dev", - "path": "." - } - }, - "destApp": { - "metadata": { - "name": "simple-prod", - "cluster": "https://kubernetes.default.svc", - "namespace": "codefresh" - }, - "specSource": { - "repoURL": "http://gitea-http.gitea:3000/test-owner/simple-app.git", - "targetRevision": "HEAD", - "path": "." - } - }, - "promotionTemplate": { - "promotion": [], - "versionSource": { - "file": "", - "jsonPath": "" - } - } - } + "httpRequest": { + "method": "GET", + "path": "/api/ping" + }, + "httpResponse": { + "statusCode": 200 + } + }, + { + "httpRequest": { + "method": "POST", + "path": "/2.0/api/graphql", + "body": { + "query": "\\n query PromotionData(\\n $srcRuntime: String!\\n $srcNamespace: String!\\n $srcName: String!\\n $destRuntime: String!\\n $destNamespace: String!\\n $destName: String!\\n ) {\\n srcApp: application(runtime: $srcRuntime, namespace: $srcNamespace, name: $srcName) {\\n metadata {\\n name\\n cluster\\n namespace\\n }\\n specSource {\\n repoURL\\n targetRevision\\n path\\n }\\n }\\n destApp: application(runtime: $destRuntime, namespace: $destNamespace, name: $destName) {\\n metadata {\\n name\\n cluster\\n namespace\\n }\\n specSource {\\n repoURL\\n targetRevision\\n path\\n }\\n }\\n promotionTemplate(runtime: $destRuntime, namespace: $destNamespace, name: $destName) {\\n promotion {\\n glob\\n jsonPaths\\n }\\n versionSource {\\n file\\n jsonPath\\n }\\n }\\n }\\n", + "variables": { + "srcRuntime": "test-runtime", + "srcNamespace": "codefresh", + "srcName": "simple-dev", + "destRuntime": "test-runtime", + "destNamespace": "codefresh", + "destName": "simple-prod" + } + } + }, + "httpResponse": { + "statusCode": 200, + "body": { + "data": { + "srcApp": { + "metadata": { + "name": "simple-dev", + "cluster": "https://kubernetes.default.svc", + "namespace": "codefresh" + }, + "specSource": { + "repoURL": "http://gitea-http.gitea:3000/test-owner/simple-app.git", + "targetRevision": "dev", + "path": "." + } + }, + "destApp": { + "metadata": { + "name": "simple-prod", + "cluster": "https://kubernetes.default.svc", + "namespace": "codefresh" + }, + "specSource": { + "repoURL": "http://gitea-http.gitea:3000/test-owner/simple-app.git", + "targetRevision": "HEAD", + "path": "." + } + }, + "promotionTemplate": { + "promotion": [], + "versionSource": { + "file": "", + "jsonPath": "" + } } + } } + } } -] + ] \ No newline at end of file diff --git a/tests/component-tests/setup/scripts/cleanup.sh b/tests/component-tests/setup/scripts/cleanup.sh index e23f95749..594c220a6 100755 --- a/tests/component-tests/setup/scripts/cleanup.sh +++ b/tests/component-tests/setup/scripts/cleanup.sh @@ -16,5 +16,4 @@ rm -rf ./test/component-tests/setup/codefresh-isc rm -rf ./test/component-tests/setup/simple-app git restore ./test/component-tests/setup/values/runtime.values.yaml -git restore ./test/component-tests/promotion/01-git-commit/00-app-sync.json -git restore ./test/component-tests/promotion/01-git-commit/01-app-promote.json \ No newline at end of file +git restore ./test/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.json \ No newline at end of file diff --git a/tests/component-tests/setup/scripts/init-gitea.sh b/tests/component-tests/setup/scripts/init-gitea.sh index ca7b99255..2d90f615e 100755 --- a/tests/component-tests/setup/scripts/init-gitea.sh +++ b/tests/component-tests/setup/scripts/init-gitea.sh @@ -36,9 +36,7 @@ response=$(curl --location "http://127.0.0.1:3000/api/v1/users/$owner/tokens" \ --data-binary "@./setup/fixture/payloads/create-user-token.json") token=$(echo "$response" | jq -r '.sha1') -echo "token: $token" -echo "owner: $pwd" -pwd + if [ "$OS_TYPE" = "Linux" ]; then sed -i "s/gitea-token/$token/g" ./setup/values/runtime.values.yaml else @@ -74,13 +72,6 @@ git push git checkout -b dev git config user.name "test-owner" git config user.email "test.owner@gmail.com" -if [ "$OS_TYPE" = "Linux" ]; then - sed -i 's/latest/0.1/g' values.yaml -else - sed -i '' 's/latest/0.1/g' values.yaml -fi -git add --a -git commit -m "update values.yaml" git push --set-upstream origin dev cd .. @@ -96,4 +87,3 @@ cd .. - From 91f719aac40bb6716da08f9871aab7453ff73142 Mon Sep 17 00:00:00 2001 From: Chen Keinan Date: Thu, 20 Nov 2025 11:49:20 +0200 Subject: [PATCH 2/3] chore: update component-test with new arch Signed-off-by: Chen Keinan --- .github/workflows/component-test.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/component-test.yaml b/.github/workflows/component-test.yaml index 7a9a134a5..2b97bfeb1 100644 --- a/.github/workflows/component-test.yaml +++ b/.github/workflows/component-test.yaml @@ -15,7 +15,6 @@ on: jobs: component-test: - if : false # temporarily disable component tests runs-on: ubuntu-latest env: From d4d8d28fbdd9c16d685d10e1bddf161cc24ccc7b Mon Sep 17 00:00:00 2001 From: Chen Keinan Date: Thu, 20 Nov 2025 11:56:54 +0200 Subject: [PATCH 3/3] chore: update component-test with new arch Signed-off-by: Chen Keinan --- .../00-get-promotable-values/00-get-promotable-values.sh | 0 .../promotion/01-promote-with-commit/00-promote-with-commit.sh | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.sh mode change 100644 => 100755 tests/component-tests/promotion/01-promote-with-commit/00-promote-with-commit.sh diff --git a/tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.sh b/tests/component-tests/promotion/00-get-promotable-values/00-get-promotable-values.sh old mode 100644 new mode 100755 diff --git a/tests/component-tests/promotion/01-promote-with-commit/00-promote-with-commit.sh b/tests/component-tests/promotion/01-promote-with-commit/00-promote-with-commit.sh old mode 100644 new mode 100755