From 0a2f6eaf1e5744b15805922a822b8e3a87f457bf Mon Sep 17 00:00:00 2001 From: Reguel Wermelinger Date: Tue, 2 Apr 2024 15:57:44 +0200 Subject: [PATCH 1/3] refactor: move tests to own dir --- {bin => tests}/_test.sh | 0 {bin => tests}/jenkins_test.bats | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename {bin => tests}/_test.sh (100%) rename {bin => tests}/jenkins_test.bats (97%) diff --git a/bin/_test.sh b/tests/_test.sh similarity index 100% rename from bin/_test.sh rename to tests/_test.sh diff --git a/bin/jenkins_test.bats b/tests/jenkins_test.bats similarity index 97% rename from bin/jenkins_test.bats rename to tests/jenkins_test.bats index cfe588b..4b8421c 100644 --- a/bin/jenkins_test.bats +++ b/tests/jenkins_test.bats @@ -1,7 +1,7 @@ #!/usr/bin/env bats setup(){ - . ./jenkinsOp.sh + source ../bin/jenkinsOp.sh } @test "parseJson" { From 37d0876d85a25e344677b7a22e9dd75261728aa1 Mon Sep 17 00:00:00 2001 From: Reguel Wermelinger Date: Tue, 2 Apr 2024 16:00:46 +0200 Subject: [PATCH 2/3] ci using github actions --- .github/workflows/ci.yml | 27 +++++++++++++++++++++++++++ tests/jenkins_test.bats | 9 ++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..184beb3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,27 @@ +name: ci + +on: + push: +# branches: [ "master" ] + pull_request: +# branches: [ "master" ] + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Install dependencies + run: | + sudo apt install -y bats + - name: Test with Bats + shell: 'script -q -e -c "bash {0}"' # work around tty issues + env: + TERM: linux # fix tput for tty issue work around + run: | + cd tests + bats -t . diff --git a/tests/jenkins_test.bats b/tests/jenkins_test.bats index 4b8421c..2af61bb 100644 --- a/tests/jenkins_test.bats +++ b/tests/jenkins_test.bats @@ -1,7 +1,11 @@ #!/usr/bin/env bats setup(){ - source ../bin/jenkinsOp.sh + DIR=`pwd` + if ! [ -f "${DIR}/../bin/.env" ]; then + touch "${DIR}/../bin/.env" + fi + source "${DIR}/../bin/jenkinsOp.sh" } @test "parseJson" { @@ -11,11 +15,13 @@ setup(){ } @test "loadBranches" { + skip "http" branches=$(getAvailableBranches) [[ " ${branches[@]} " =~ "master" ]] # contains master } @test "loadJobs" { + skip "http" jobs=$(getAvailableTestJobs) [[ " ${jobs[@]} " =~ "ivy-core_test-bpm-exec" ]] [[ " ${jobs[@]} " =~ "ivy-core_ci-windows" ]] @@ -30,6 +36,7 @@ setup(){ } @test "health emoji" { + skip "http" state=$(getHealth "ivy-core_ci" "master") [[ "$state" == 🆗* ]] } From 62d05b70d2a51a99d1c9fa1d76a4e1608118cfe7 Mon Sep 17 00:00:00 2001 From: Reguel Wermelinger Date: Wed, 3 Apr 2024 10:33:23 +0200 Subject: [PATCH 3/3] mock out http requests --- .github/workflows/ci.yml | 5 +- bin/jenkinsOp.sh | 23 +-- tests/jenkins_test.bats | 13 +- tests/mock/api/json | 215 +++++++++++++++++++++ tests/mock/job/core_ci/api/json | 42 ++++ tests/mock/job/core_ci/job/master/api/json | 1 + 6 files changed, 279 insertions(+), 20 deletions(-) create mode 100644 tests/mock/api/json create mode 100644 tests/mock/job/core_ci/api/json create mode 100644 tests/mock/job/core_ci/job/master/api/json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 184beb3..cdd31cf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,11 +17,14 @@ jobs: - uses: actions/checkout@v4 - name: Install dependencies run: | - sudo apt install -y bats + sudo apt install -y bats python3 - name: Test with Bats shell: 'script -q -e -c "bash {0}"' # work around tty issues env: TERM: linux # fix tput for tty issue work around run: | cd tests + python3 -m http.server --bind 127.0.0.1 --directory ${GITHUB_WORKSPACE}/tests/mock & + sleep 1 # wait for server start + export BASE_URL="http://127.0.0.1:8000" bats -t . diff --git a/bin/jenkinsOp.sh b/bin/jenkinsOp.sh index db7bbe6..2edd826 100755 --- a/bin/jenkinsOp.sh +++ b/bin/jenkinsOp.sh @@ -3,13 +3,14 @@ SELECT=$1 JOB=core_ci -if [ ! -z "$3" ] - then - JOB=$3 +if [ ! -z "$3" ]; then + JOB=$3 fi JENKINS="jenkins.ivyteam.io" -URL="https://${JENKINS}/job/${JOB}/" +if [ -z "${BASE_URL}" ]; then + BASE_URL="https://${JENKINS}/" +fi DIR="$( cd "$( dirname "$BASH_SOURCE" )" && pwd )" ENV="$DIR/.env" @@ -29,14 +30,14 @@ if ! [ -x "$(command -v curl)" ]; then fi getAvailableBranches(){ - local JSON=$(curl -sS "${URL}/api/json?tree=jobs\[name\]") + local JSON=$(curl -sS "${BASE_URL}/job/${JOB}/api/json?tree=jobs\[name\]") local BRANCHES="$(jsonField "${JSON}" "name" \ | sed -e 's|%2F|/|' )" echo ${BRANCHES} } getAvailableTestJobs(){ - local JSON=$(curl -sS "https://$JENKINS/api/json?tree=jobs\[name\]") + local JSON=$(curl -sS "${BASE_URL}/api/json?tree=jobs\[name\]") local JOBS="$(jsonField "$JSON" "name" \ | grep 'core_product\|core_test\|core_ci\|core_json-schema' \ | sed -e 's|%2F|/|' )" @@ -46,7 +47,7 @@ getAvailableTestJobs(){ getHealth(){ JOB="$1" BRANCH="$2" - API_URI="https://${JENKINS}/job/${JOB}/job/${BRANCH}/api/json?tree=color" + API_URI="${BASE_URL}/job/${JOB}/job/${BRANCH}/api/json?tree=color" JSON=$(curl -sS "${API_URI}") COLOR=$(jsonField "${JSON}" "color") colorToEmo $COLOR @@ -95,13 +96,13 @@ triggerBuild(){ RUN_JOB=$1 BRANCH=$2 - JOB_URL="https://$JENKINS/job/${RUN_JOB}/job/${BRANCH}" + JOB_URL="${BASE_URL}/job/${RUN_JOB}/job/${BRANCH}" RESPONSE=$( requestBuild ${JOB_URL} ) echo -e "[ $( statusColor ${RESPONSE} ) ] @ $JOB_URL" if [ "$RESPONSE" == 404 ] || [ "$RESPONSE" == 409 ] ; then # job may requires a manual rescan to expose our new branch | isolate in sub bash to avoid conflicts! - SCANNED=$( rescanBranches "https://$JENKINS/job/$RUN_JOB/" 3>&1 1>&2 2>&3 ) + SCANNED=$( rescanBranches "${BASE_URL}/job/$RUN_JOB/" 3>&1 1>&2 2>&3 ) # re-try RESPONSE=$( requestBuild ${JOB_URL} ) echo -e "[ $( statusColor ${RESPONSE} ) ] @ $JOB_URL" @@ -121,7 +122,7 @@ requestBuild(){ # get XSS preventention token if [ -z ${CRUMB+x} ]; then - ISSUER_URI="https://${JENKINS}/crumbIssuer/api/xml" + ISSUER_URI="${BASE_URL}/crumbIssuer/api/xml" CRUMB=$(curl -sS --basic -u "${JENKINS_USER}:${JENKINS_TOKEN}" "$ISSUER_URI") \ | grep -o -E '"crumb":"[^"]*' | sed -e 's|"crumb":"||' export CRUMB="$CRUMB" #re-use for follow up requests @@ -164,7 +165,7 @@ createView(){ BRANCH=$1 BRANCH_NAME=$( echo $BRANCH | sed -e 's|/|_|') ISSUE_REGEX=$( echo ".*${BRANCH}" | sed -e 's|.*/|\.*|' ) - MYVIEWS_URL="https://$JENKINS/user/${JENKINS_USER}/my-views" + MYVIEWS_URL="${BASE_URL}/user/${JENKINS_USER}/my-views" curl -sS -k -X POST -u "$JENKINS_USER:$JENKINS_TOKEN" -H "$CRUMB" \ --form name="${BRANCH_NAME}" --form mode=hudson.model.ListView \ --form json="{'name': '${BRANCH_NAME}', 'mode': 'hudson.model.ListView', 'useincluderegex': 'on', 'includeRegex': '${ISSUE_REGEX}', 'recurse': 'true'}" \ diff --git a/tests/jenkins_test.bats b/tests/jenkins_test.bats index 2af61bb..7d435b3 100644 --- a/tests/jenkins_test.bats +++ b/tests/jenkins_test.bats @@ -15,29 +15,26 @@ setup(){ } @test "loadBranches" { - skip "http" branches=$(getAvailableBranches) [[ " ${branches[@]} " =~ "master" ]] # contains master } @test "loadJobs" { - skip "http" jobs=$(getAvailableTestJobs) - [[ " ${jobs[@]} " =~ "ivy-core_test-bpm-exec" ]] - [[ " ${jobs[@]} " =~ "ivy-core_ci-windows" ]] - [[ " ${jobs[@]} " != *ivy-core_techdoc* ]] + [[ " ${jobs[@]} " =~ "core_test-bpm-exec" ]] + [[ " ${jobs[@]} " =~ "core_ci-windows" ]] + [[ " ${jobs[@]} " != *core_techdoc* ]] } @test "connectability" { - URL="http://jenkins.ivyteam.oblivion" + BASE_URL="http://jenkins.ivyteam.oblivion" rm -f /tmp/stderr getAvailableBranches 2> /tmp/stderr grep "Could not resolve host" /tmp/stderr } @test "health emoji" { - skip "http" - state=$(getHealth "ivy-core_ci" "master") + state=$(getHealth "core_ci" "master") [[ "$state" == 🆗* ]] } diff --git a/tests/mock/api/json b/tests/mock/api/json new file mode 100644 index 0000000..221cf2e --- /dev/null +++ b/tests/mock/api/json @@ -0,0 +1,215 @@ +{"_class":"hudson.model.Hudson", + "jobs":[ + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"addons"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"admin-ui"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"basic-workflow-ui"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"birt-project-report"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"birt-reporting"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"branding-images"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"build-container_edirectory"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"build-container_odata-converter"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"build-container_oracle"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"build-container_read-the-docs"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"build-container_ssh-client"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"bundled-elasticsearch"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"case-map-ui"}, + {"_class":"hudson.matrix.MatrixProject","name":"cleanup-docker-images"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"cluster-restart-test"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"cluster-tests"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"config-editor-client"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_casemapui"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_ci"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_doc"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_doc-publish"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_doc-update-release-notes"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_elasticsearch-launcher"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_engine-launchers"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_findbugs"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_ivy-projects"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_javadoc"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_p2"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_pom"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_product"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_release-nightly"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_release-official"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_release-update-version"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_test-bpm-exec"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_test-eclipse-core"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_test-eclipse-ui"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_test-elasticsearch"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_test-htmldialog"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_test-integration-hsqldb"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_test-integration-mssql"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_test-integration-mysql"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_test-integration-oracle"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_test-integration-postgres"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_test-richdialog"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_test-serverexec"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-7_test-windows"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core-icons"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_ci"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_ci-fast"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_ci-windows"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_compile"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_db-migration"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_doc"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_doc-market-installer-reference"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_doc-publish"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_doc-screenshots-designer"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_doc-screenshots-engine"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_doc-update-release-notes"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_javadoc"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_json-schema"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_p2"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_pom"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_product"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_product-debian"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_product-engine"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_product-jre"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_product-mac"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_product-windows"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_public-api-jar"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_rebuild-docker-image"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_release-dev"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_release-nightly"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_release-official"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_release-sprint"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_release-update-debian-changelog"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_release-update-version"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_sonar"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-blob-storage-s3"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-bpm-exec"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-bpm-exec-windows"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-db-meta-plugin"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-debian"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-designer-screenshots-linux"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-designer-screenshots-mac"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-designer-screenshots-windows"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-eclipse-core"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-eclipse-core-windows"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-eclipse-ui"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-eclipse-ui-windows"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-elasticsearch"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-elasticsearch-performance"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-elasticsearch-performance-compare"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-engine-integration"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-engine-integration-windows"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-identity-azure"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-identity-jndi"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-identity-microsoft-entra-id"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-integration-hsqldb"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-integration-hsqldb-windows"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-integration-mariadb"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-integration-mariadb-oldest"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-integration-mssql"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-integration-mssql-jtds"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-integration-mssql-oldest"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-integration-mysql"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-integration-mysql-oldest"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-integration-oracle"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-integration-oracle-oldest"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-integration-postgres"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-integration-postgres-oldest"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-market-product"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-microsoft-azure"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-microsoft-graph"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-microsoft-teams"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-notification-microsoft-teams"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-rcptt-linux-all"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-rcptt-mac-all"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-rcptt-mac-all-bigSur"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-rcptt-mac-ci"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-rcptt-mac-ci-bigSur"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-rcptt-windows-all"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-rcptt-windows-ci"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-selenium"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-serverexec"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-serverexec-windows"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-system-db-performance"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-system-db-performance-compare"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"core_test-windows"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"demo-projects"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"demo-projects_test-connectivity-rcptt"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"dev-workflow-ui"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"dev.axonivy.com"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"dev.axonivy.com_issue-list-generator"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"doc-images"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"docker-image"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"docker-image_docker-scout"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"docker-integration-tests"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"docker-samples"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"dummy-keystores"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"engine-cockpit"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"engine-cockpit-integration"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"engine-cockpit-screenshots"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"engine-launchers"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"extension-demos"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"form-editor-client"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"github-repo-manager_github-repo-settings"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"github-repo-manager_new-jira-version"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"github-repo-manager_public-repo-license"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"github-repo-manager_raise-build-plugin-version"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"github-repo-manager_raise-deps"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"github-repo-manager_raise-ivy-projects-version"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"github-repo-manager_raise-portal-version"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"github-repo-manager_raise-version"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"github-repo-manager_raise-web-tester-version"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"github-repo-manager_release-branch"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"github-repo-manager_replace"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"github-repo-manager_scan-issues"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"github-repo-manager_tag-git-repos"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"infra_edirectory-testdata"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"inscription-client"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"inscription-client_integration"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"inscription-client_screenshot"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"ivymx"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"kubernetes-samples"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"license-order"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"market"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"market.axonivy.com"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"maven-image-text-plugin"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"maven-jira-plugin"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"maven-plugins"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"maven-screenshot-html-plugin"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"maven-version-plugin"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"maven-windows-launcher-modifier-plugin"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"mavenizer"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"monaco-yaml"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"msgraph-demo"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"openvscode-server_docker-image"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"p2-targetplatform"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"p2.axonivy.com"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"performance-tests"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"primefaces-themes"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"process-editor-client"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"process-editor-client-integration"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"process-editor-client_screenshots"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"process-editor-core"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"product.ivyteam.io"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"project-build-examples"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"project-build-plugin"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"project-build-plugin_release"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"rmf-compliance"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"rules"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"swagger-ui"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"test-webservices"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"theia-ide"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"theia-ide-docker-image"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"theia-ide-mac"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"theia-ide-windows"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"thirdparty-libs"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"thirdparty-libs_OWASP-Scanner"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"ui-components"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"ulc-ria"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"update.axonivy.com"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"vscode-extensions"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"vscode-extensions_integration"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"vscode-extensions_integration-openvscode-server"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"vscode-extensions_integration-windows"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"web-tester"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"web-tester_release"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"webeditor"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"webeditor-rcptt-linux"}, + {"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject","name":"ws-axis"} + ] +} diff --git a/tests/mock/job/core_ci/api/json b/tests/mock/job/core_ci/api/json new file mode 100644 index 0000000..fd3c60c --- /dev/null +++ b/tests/mock/job/core_ci/api/json @@ -0,0 +1,42 @@ +{"_class":"org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject", + "jobs":[ + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"PR-4741"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"PR-5076"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"PR-5287"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"PR-5412"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"PR-5435"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"XIVY-11800-zRemove"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"XIVY-13150%2Ffix-button"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"XIVY-13553_primefaces_update"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"XIVY-13553_primefaces_update_130"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"XIVY-13635-pjson-113"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"basicAuthLogs"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"coolstuff%2Fclassfile"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"coolstuff%2Fhealthcheck"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"crypto"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"crypto-base64"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"dev10.0"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"dev11.1"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"dev11.2"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"eclipse-2023-12"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"es-escape-whitspaces"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"exclude-CVE-2024-28752"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"java21"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"mail-semaphore"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"master"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"maven-mirror.ivyteam.io"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"priority"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"public-api-jar"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"public-api-jar-rule"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"r8-ticket-3999"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"release%2F10.0"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"release%2F11.2"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"release%2F8.0"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"release%2F9.1"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"release%2F9.2"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"release%2F9.3"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"release%2F9.4"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"snakeyaml-rexport"}, + {"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","name":"test_cluster_slave"} + ] +} diff --git a/tests/mock/job/core_ci/job/master/api/json b/tests/mock/job/core_ci/job/master/api/json new file mode 100644 index 0000000..cb95c15 --- /dev/null +++ b/tests/mock/job/core_ci/job/master/api/json @@ -0,0 +1 @@ +{"_class":"org.jenkinsci.plugins.workflow.job.WorkflowJob","color":"blue"}