diff --git a/alfa-client/apps/alfa-e2e/Jenkinsfile b/alfa-client/apps/alfa-e2e/Jenkinsfile index 7e4949b99899583af91595f04237f567356a2700..906adbe4de50ee5216a8b908af46f6cf40b27a54 100644 --- a/alfa-client/apps/alfa-e2e/Jenkinsfile +++ b/alfa-client/apps/alfa-e2e/Jenkinsfile @@ -219,7 +219,7 @@ pipeline { forwardServices(generateNamespace(bezeichner), dbPort) - runTests(bezeichner, 'einheitlicher-ansprechpartner', dbPort, env.STAGE_NAME) + runTests(bezeichner, 'einheitlicher-ansprechpartner', 'user-ea', dbPort, env.STAGE_NAME) } } } @@ -246,7 +246,7 @@ pipeline { forwardServices(generateNamespace(bezeichner), dbPort) - runTests(bezeichner, 'main-tests', dbPort, env.STAGE_NAME) + runTests(bezeichner, 'main-tests', 'user-main', dbPort, env.STAGE_NAME) } } } @@ -439,20 +439,23 @@ Void generateMainNamespaceYaml() { } Void generateNamespaceYaml(String bezeichner, String valuesPathSuffix, String userFolder) { - def envValues = readYaml file: "alfa-client/apps/alfa-e2e/src/fixtures/argocd/" + valuesPathSuffix; + def envValues + dir('alfa-client/apps/alfa-e2e/') { + envValues = readYaml file: "src/fixtures/argocd/" + valuesPathSuffix; - envValues.ozgcloud.bezeichner = bezeichner - envValues.alfa.put("image", ['tag': env.ALFA_IMAGE_TAG]) - envValues.alfa.put("helm", ['version': env.ALFA_HELM_CHART_VERSION, 'repoUrl': env.ALFA_HELM_REPO_URL]) + envValues.ozgcloud.bezeichner = bezeichner + envValues.alfa.put("image", ['tag': env.ALFA_IMAGE_TAG]) + envValues.alfa.put("helm", ['version': env.ALFA_HELM_CHART_VERSION, 'repoUrl': env.ALFA_HELM_REPO_URL]) - envValues.vorgang_manager.put("image", ['tag': env.VORGANG_MANAGER_IMAGE_TAG]) - envValues.vorgang_manager.put("helm", ['version': env.VORGANG_MANAGER_HELM_CHART_VERSION, 'repoUrl': env.VORGANG_MANAGER_HELM_REPO_URL]) + envValues.vorgang_manager.put("image", ['tag': env.VORGANG_MANAGER_IMAGE_TAG]) + envValues.vorgang_manager.put("helm", ['version': env.VORGANG_MANAGER_HELM_CHART_VERSION, 'repoUrl': env.VORGANG_MANAGER_HELM_REPO_URL]) - envValues.user_manager.put("image", ['tag': env.USER_MANAGER_IMAGE_TAG]) - envValues.user_manager.put("helm", ['version': env.USER_MANAGER_HELM_CHART_VERSION, 'repoUrl': env.USER_MANAGER_HELM_REPO_URL]) + envValues.user_manager.put("image", ['tag': env.USER_MANAGER_IMAGE_TAG]) + envValues.user_manager.put("helm", ['version': env.USER_MANAGER_HELM_CHART_VERSION, 'repoUrl': env.USER_MANAGER_HELM_REPO_URL]) - envValues.alfa.sso.put("keycloak_groups", generateKeycloakGroupsForHelmChart()) - envValues.alfa.sso.put("keycloak_users", generateKeycloakUserForHelmChart(userFolder)) + envValues.alfa.sso.put("keycloak_groups", generateKeycloakGroupsForHelmChart()) + envValues.alfa.sso.put("keycloak_users", generateKeycloakUserForHelmChart(userFolder)) + } writeYaml file: "gitops/dev/namespace/namespaces/by-${bezeichner}-dev.yaml", data: envValues, overwrite: true @@ -465,26 +468,23 @@ Void generateNamespaceYaml(String bezeichner, String valuesPathSuffix, String us } List generateKeycloakUserForHelmChart(String userFolder) { - def userFiles = sh (script: 'ls alfa-client/apps/alfa-e2e/src/fixtures/' + userFolder, returnStdout: true); - def helmUsers = [] - userFiles.split("\\n").each { userFile -> - def userJson = readJSON file: "alfa-client/apps/alfa-e2e/src/fixtures/${userFolder}/${userFile}" + readUsersFixtures(userFolder).each { username, userFixture -> def user = [ - "name": userJson.name, - "password": userJson.password, - "first_name": userJson.get("firstName", ""), - "last_name": userJson.get("lastName", ""), - "email": userJson.get("email", "") - ] - - if (userJson.containsKey("clientRoles")) { - user.put("client_roles", mapUserClientRoles(userJson.clientRoles)) + "name" : userFixture.name, + "password" : userFixture.password, + "first_name": userFixture.get("firstName", ""), + "last_name" : userFixture.get("lastName", ""), + "email" : userFixture.get("email", "") + ] + + if (userFixture.containsKey("clientRoles")) { + user.put("client_roles", mapUserClientRoles(userFixture.clientRoles)) } - if (userJson.containsKey("groups")) { - user.put("groups", userJson.groups) + if (userFixture.containsKey("groups")) { + user.put("groups", userFixture.groups) } helmUsers.add(user) @@ -504,12 +504,12 @@ List mapUserClientRoles(userClientRoles) { } List generateKeycloakGroupsForHelmChart() { - def groupFiles = sh (script: 'ls alfa-client/apps/alfa-e2e/src/fixtures/group', returnStdout: true) + def groupFiles = sh (script: 'ls src/fixtures/group', returnStdout: true) def helmGroups = [] groupFiles.split("\\n").each { groupFile -> - def groupJson = readJSON file: "alfa-client/apps/alfa-e2e/src/fixtures/group/${groupFile}" + def groupJson = readJSON file: "src/fixtures/group/${groupFile}" def group = ["name": groupJson.name] groupJson.attributes.each { key, values -> @@ -522,7 +522,7 @@ List generateKeycloakGroupsForHelmChart() { } helmGroups.add(group) - } + } return helmGroups } @@ -618,13 +618,13 @@ Void publishE2ETestResult(String reportFolder, String reportName) { ) } -String runTests(String bezeichner, String reportFolder, Integer dbPort, String stageName) { - def config = generateCypressConfig(bezeichner, reportFolder, dbPort) +String runTests(String bezeichner, String reportFolder, String userFolder, Integer dbPort, String stageName) { + def config = generateCypressConfig(bezeichner, reportFolder, userFolder, dbPort) try { dir('alfa-client'){ - sh "npm run cypress:version" - sh "apps/alfa-e2e/run-tests.sh ${reportFolder} ${config}" + sh "npm run cypress:version" + sh "apps/alfa-e2e/run-tests.sh ${reportFolder} ${config}" } } catch (Exception e) { printNpmDebugLog() @@ -661,37 +661,37 @@ String cutBranchNameForKeycloakRealm(String branchName, String stageName) { return branchName.take(cutBranchNamePosition) } -String generateCypressConfig(String bezeichner, String testFolder, Integer dbPort) { +String generateCypressConfig(String bezeichner, String testFolder, String userFolder, Integer dbPort) { def namespace = generateNamespace(bezeichner) - def configName = "cypress-ci-"+testFolder+".json" + def configName = "cypress-ci-"+testFolder+".json" - dir('alfa-client/apps/alfa-e2e/'){ - def config = readJSON file: 'cypress-ci.json' + dir('alfa-client/apps/alfa-e2e/'){ + def config = readJSON file: 'cypress-ci.json' - def vorgangManagerDatabaseSecret = getVorgangManagerDatabaseSecret(namespace); - def decodedPassword = decodeString(vorgangManagerDatabaseSecret.password); - def parsablePassword = makePasswordUrlConform(decodedPassword); + def vorgangManagerDatabaseSecret = getVorgangManagerDatabaseSecret(namespace); + def decodedPassword = decodeString(vorgangManagerDatabaseSecret.password); + def parsablePassword = makePasswordUrlConform(decodedPassword); - config.baseUrl = "https://${bezeichner}.${env.CLUSTER_BASE_URL}" as String - config.env.dbUrl = "mongodb://${decodeString(vorgangManagerDatabaseSecret.username)}:${parsablePassword}@localhost:${dbPort}/admin?ssl=false&directConnection=true" as String - config.env.keycloakUrl = "https://${env.SSO_URL}/" as String - config.env.keycloakRealm = namespace as String - config.env += createUserIdsEnv(namespace, ["sabine", "dorothea", "emil", "peter"]) - config.videosFolder = "./reports/${testFolder}/videos" as String - config.screenshotsFolder = "./reports/${testFolder}/screenshots" as String - config.reporterOptions.reportDir = "./reports/${testFolder}/mochawesome-report" as String + config.baseUrl = "https://${bezeichner}.${env.CLUSTER_BASE_URL}" as String + config.env.dbUrl = "mongodb://${decodeString(vorgangManagerDatabaseSecret.username)}:${parsablePassword}@localhost:${dbPort}/admin?ssl=false&directConnection=true" as String + config.env.keycloakUrl = "https://${env.SSO_URL}/" as String + config.env.keycloakRealm = namespace as String + config.env += createUserIdsEnv(userFolder, namespace) + config.videosFolder = "./reports/${testFolder}/videos" as String + config.screenshotsFolder = "./reports/${testFolder}/screenshots" as String + config.reporterOptions.reportDir = "./reports/${testFolder}/mochawesome-report" as String config.specPattern = "src/e2e/${testFolder}/**/*.cy.{js,jsx,ts,tsx}" as String - config.env.put("search", getElasticsearchEnv(namespace)) - config.env.put("userManager", getUserManagerEnv(namespace, dbPort)) + config.env.put("search", getElasticsearchEnv(namespace)) + config.env.put("userManager", getUserManagerEnv(namespace, dbPort)) - writeJSON file: configName, json: config + writeJSON file: configName, json: config - sh "cat ${configName}" - } + sh "cat ${configName}" + } - return "cypress-ci-"+testFolder+".config.ts" + return "cypress-ci-"+testFolder+".config.ts" } String makePasswordUrlConform(String password) { @@ -703,9 +703,9 @@ Map getVorgangManagerDatabaseSecret(String namespace) { } Map getUserManagerEnv(String namespace, dbPort){ - def userManagerDatabaseSecret = getUserManagerDatabaseSecret(namespace); + def userManagerDatabaseSecret = getUserManagerDatabaseSecret(namespace); def decodedPassword = decodeString(userManagerDatabaseSecret.password); - def parsablePassword = makePasswordUrlConform(decodedPassword); + def parsablePassword = makePasswordUrlConform(decodedPassword); return [ "dbUrl": "mongodb://${decodeString(userManagerDatabaseSecret.username)}:${parsablePassword}@localhost:${dbPort}/admin?ssl=false&directConnection=true" as String, @@ -717,51 +717,51 @@ Map getUserManagerDatabaseSecret(String namespace) { return readJSON ( text: sh (script: "kubectl get secret ozg-mongodb-admin-user-manager-user -n ${namespace} -o jsonpath={.data}", returnStdout: true)) } -Map createUserIdsEnv(realm, usernames) { - def env = [:] - def userIds = getUserIds(realm, usernames) - - echo "userIds: ${userIds}" - - for (username in usernames) { - if (userIds[username]) { - env[(username + "Uuid")] = userIds[username].id - env[(username + "InternalId")] = userIds[username].ozgCloudUserId - } else { - echo "user ${username} not found in Keycloak" - } - } - return env +Map createUserIdsEnv(String userFolder, realm) { + def keycloakUsers = getKeycloakUsers(realm) + def usersFixtures = readUsersFixtures(userFolder) + return usersFixtures.collectEntries { username, user -> + [(username + "Uuid") : keycloakUsers[username].id, + (username + "InternalId"): keycloakUsers[username].attributes.ozgCloudUserId[0]] + } } -Map getUserIds(realm, usernames) { - def shScript = """curl -H 'Content-Type: application/json' \ +Map getKeycloakUsers(realm) { + def shScript = """curl -H 'Content-Type: application/json' \ -H 'Authorization: bearer ${getKeycloakAccessToken(realm)}' \ 'https://${env.SSO_URL}/admin/realms/${realm}/users' """ + def keycloakUsers = readJSON text: sh(script: shScript, returnStdout: true) - def users = readJSON text: sh(script: shScript, returnStdout: true) + echo "keycloak users: ${keycloakUsers}" - echo "users: ${users}" + return keycloakUsers.collectEntries { [it.username, it] } +} + +Map readUsersFixtures(String userFolder) { + def userFolderPath = "src/fixtures/${userFolder}" + def usersFixturesFiles = sh(script: "ls ${userFolderPath}", returnStdout: true); + return usersFixturesFiles.split("\\n") + .collect { userFixtureFile -> + def userFixture = readJSON file: "${userFolderPath}/${userFixtureFile}" + return createUserFromFixture(userFixture) + }.collectEntries { [it.name, it] } +} - return users - .findAll { it.username in usernames } - .collectEntries { - [ - (it.username): [ - "id" : it.id, - "ozgCloudUserId": it.attributes.ozgCloudUserId[0] - ] - ] - } +Map createUserFromFixture(Map userFixture) { + return ["name" : userFixture.name, + "password" : userFixture.password, + "first_name": userFixture.get("firstName", ""), + "last_name" : userFixture.get("lastName", ""), + "email" : userFixture.get("email", "")] } String getKeycloakAccessToken(String realm) { def userManagerApiUserCredentials = getUserManagerApiUserCredentials(realm) - def token = readJSON text: sh (script: "set +x && curl -d \"client_id=admin-cli\" -d \"username=${userManagerApiUserCredentials.user}\" -d \"password=${userManagerApiUserCredentials.password}\" -d \"grant_type=password\" https://$SSO_URL/realms/$realm/protocol/openid-connect/token", returnStdout: true) + def token = readJSON text: sh (script: "set +x && curl -d \"client_id=admin-cli\" -d \"username=${userManagerApiUserCredentials.user}\" -d \"password=${userManagerApiUserCredentials.password}\" -d \"grant_type=password\" https://$SSO_URL/realms/$realm/protocol/openid-connect/token", returnStdout: true) - return token.access_token + return token.access_token } Map getUserManagerApiUserCredentials(String namespace) { diff --git a/alfa-client/apps/alfa-e2e/Jenkinsfile-static b/alfa-client/apps/alfa-e2e/Jenkinsfile-static index b4a320397a28b8985e4ee4132ad8f959cbbb205f..07445fb5535b775b72d15c197427016f2250bd4a 100644 --- a/alfa-client/apps/alfa-e2e/Jenkinsfile-static +++ b/alfa-client/apps/alfa-e2e/Jenkinsfile-static @@ -192,7 +192,7 @@ pipeline { forwardServices(generateNamespace(bezeichner), dbPort) - runTests(bezeichner, 'einheitlicher-ansprechpartner', dbPort, env.STAGE_NAME) + runTests(bezeichner, 'einheitlicher-ansprechpartner', 'user-ea', dbPort, env.STAGE_NAME) } } } @@ -222,7 +222,7 @@ pipeline { forwardServices(generateNamespace(bezeichner), dbPort) - runTests(bezeichner, 'main-tests', dbPort, env.STAGE_NAME) + runTests(bezeichner, 'main-tests', 'user-main', dbPort, env.STAGE_NAME) } } } @@ -327,8 +327,8 @@ Void publishE2ETestResult(String reportFolder, String reportName) { ) } -String runTests(String bezeichner, String reportFolder, Integer dbPort, String stageName) { - def config = generateCypressConfig(bezeichner, reportFolder, dbPort) +String runTests(String bezeichner, String reportFolder, String userFolder, Integer dbPort, String stageName) { + def config = generateCypressConfig(bezeichner, reportFolder, userFolder, dbPort) try { dir("alfa-client") { @@ -370,11 +370,11 @@ String cutBranchNameForKeycloakRealm(String branchName, String stageName) { return branchName.take(cutBranchNamePosition) } -String generateCypressConfig(String bezeichner, String testFolder, Integer dbPort) { +String generateCypressConfig(String bezeichner, String testFolder, String userFolder, Integer dbPort) { def namespace = generateNamespace(bezeichner) - def configName = "cypress-ci-"+testFolder+".json" + def configName = "cypress-ci-" + testFolder + ".json" - dir('alfa-client/apps/alfa-e2e/'){ + dir('alfa-client/apps/alfa-e2e/') { def config = readJSON file: 'cypress-ci.json' def vorgangManagerDatabaseSecret = getVorgangManagerDatabaseSecret(namespace); @@ -385,7 +385,7 @@ String generateCypressConfig(String bezeichner, String testFolder, Integer dbPor config.env.dbUrl = "mongodb://${decodeString(vorgangManagerDatabaseSecret.username)}:${parsablePassword}@localhost:${dbPort}/admin?ssl=false&directConnection=true" as String config.env.keycloakUrl = "https://${env.SSO_URL}/" as String config.env.keycloakRealm = namespace as String - config.env += createUserIdsEnv(namespace, ["sabine", "dorothea", "emil", "peter"]) + config.env += createUserIdsEnv(userFolder, namespace) config.videosFolder = "./reports/${testFolder}/videos" as String config.screenshotsFolder = "./reports/${testFolder}/screenshots" as String config.reporterOptions.reportDir = "./reports/${testFolder}/mochawesome-report" as String @@ -400,11 +400,11 @@ String generateCypressConfig(String bezeichner, String testFolder, Integer dbPor sh "cat ${configName}" } - return "cypress-ci-"+testFolder+".config.ts" + return "cypress-ci-" + testFolder + ".config.ts" } Map getVorgangManagerDatabaseSecret(String namespace) { - return readJSON ( text: sh (script: "kubectl get secret ozg-mongodb-admin-vorgang-manager-user -n ${namespace} -o jsonpath={.data}", returnStdout: true)) + return readJSON(text: sh(script: "kubectl get secret ozg-mongodb-admin-vorgang-manager-user -n ${namespace} -o jsonpath={.data}", returnStdout: true)) } Map getUserManagerEnv(String namespace, dbPort){ @@ -419,76 +419,72 @@ Map getUserManagerEnv(String namespace, dbPort){ } Map getUserManagerDatabaseSecret(String namespace) { - return readJSON ( text: sh (script: "kubectl get secret ozg-mongodb-admin-user-manager-user -n ${namespace} -o jsonpath={.data}", returnStdout: true)) + return readJSON(text: sh(script: "kubectl get secret ozg-mongodb-admin-user-manager-user -n ${namespace} -o jsonpath={.data}", returnStdout: true)) } String makePasswordUrlConform(String password) { - return sh (script: "printf %s ${password} | jq -sRr @uri", returnStdout: true); + return sh(script: "printf %s ${password} | jq -sRr @uri", returnStdout: true); } -Map createUserIdsEnv(realm, usernames) { - def env = [:] - def userIds = getUserIds(realm, usernames) - - echo "userIds: ${userIds}" - - for (username in usernames) { - if (userIds[username]) { - env[(username + "Uuid")] = userIds[username].id - env[(username + "InternalId")] = userIds[username].ozgCloudUserId - } else { - echo "user ${username} not found in Keycloak" - } - } - return env +Map createUserIdsEnv(String userFolder, realm) { + def keycloakUsers = getKeycloakUsers(realm) + def usersFixtures = readUsersFixtures(userFolder) + return usersFixtures.collectEntries { username, user -> + [(username + "Uuid") : keycloakUsers[username].id, + (username + "InternalId"): keycloakUsers[username].attributes.ozgCloudUserId[0]] + } } -Map getUserIds(realm, usernames) { - def shScript = """curl -H 'Content-Type: application/json' \ +Map getKeycloakUsers(realm) { + def shScript = """curl -H 'Content-Type: application/json' \ -H 'Authorization: bearer ${getKeycloakAccessToken(realm)}' \ 'https://${env.SSO_URL}/admin/realms/${realm}/users' """ + def keycloakUsers = readJSON text: sh(script: shScript, returnStdout: true) - def users = readJSON text: sh(script: shScript, returnStdout: true) + echo "keycloak users: ${keycloakUsers}" - echo "users: ${users}" + return keycloakUsers.collectEntries { [it.username, it] } +} + +Map readUsersFixtures(String userFolder) { + def userFolderPath = "src/fixtures/${userFolder}" + def usersFixturesFiles = sh(script: "ls ${userFolderPath}", returnStdout: true); + return usersFixturesFiles.split("\\n") + .collect { userFixtureFile -> + def userFixture = readJSON file: "${userFolderPath}/${userFixtureFile}" + return createUserFromFixture(userFixture) + }.collectEntries { [it.name, it] } +} - return users - .findAll { it.username in usernames } - .collectEntries { - [ - (it.username): [ - "id" : it.id, - "ozgCloudUserId": it.attributes.ozgCloudUserId[0] - ] - ] - } +Map createUserFromFixture(Map userFixture) { + return ["name" : userFixture.name, + "password" : userFixture.password, + "first_name": userFixture.get("firstName", ""), + "last_name" : userFixture.get("lastName", ""), + "email" : userFixture.get("email", "")] } String getKeycloakAccessToken(String realm) { def userManagerApiUserCredentials = getUserManagerApiUserCredentials(realm) - def token = readJSON text: sh (script: "set +x && curl -d \"client_id=admin-cli\" -d \"username=${userManagerApiUserCredentials.user}\" -d \"password=${userManagerApiUserCredentials.password}\" -d \"grant_type=password\" https://$SSO_URL/realms/$realm/protocol/openid-connect/token", returnStdout: true) + def token = readJSON text: sh(script: "set +x && curl -d \"client_id=admin-cli\" -d \"username=${userManagerApiUserCredentials.user}\" -d \"password=${userManagerApiUserCredentials.password}\" -d \"grant_type=password\" https://$SSO_URL/realms/$realm/protocol/openid-connect/token", returnStdout: true) return token.access_token } Map getUserManagerApiUserCredentials(String namespace) { - def userManagerApiUserCredentials = readJSON ( text: sh (script: "kubectl get secret usermanagerapiuser-credentials -n ${namespace} -o jsonpath={.data}", returnStdout: true)) + def userManagerApiUserCredentials = readJSON(text: sh(script: "kubectl get secret usermanagerapiuser-credentials -n ${namespace} -o jsonpath={.data}", returnStdout: true)) - return [ - "user": decodeString(userManagerApiUserCredentials.name), - "password": decodeString(userManagerApiUserCredentials.password) - ] + return ["user" : decodeString(userManagerApiUserCredentials.name), + "password": decodeString(userManagerApiUserCredentials.password)] } Void sendFailureMessage() { - def data = [ - "msgtype": "m.text", - "body": "E2E-Tests: Failed stage: ${getFailedStage()} Build-ID: ${env.BUILD_NUMBER} Link: ${BLUE_OCEAN_URL}" as String, - "format": "org.matrix.custom.html", - "formatted_body": "E2E-Tests: Failed stage: ${getFailedStage()} Build-ID: <a href='${BLUE_OCEAN_URL}'>${env.BUILD_NUMBER}</a>" as String - ] + def data = ["msgtype" : "m.text", + "body" : "E2E-Tests: Failed stage: ${getFailedStage()} Build-ID: ${env.BUILD_NUMBER} Link: ${BLUE_OCEAN_URL}" as String, + "format" : "org.matrix.custom.html", + "formatted_body": "E2E-Tests: Failed stage: ${getFailedStage()} Build-ID: <a href='${BLUE_OCEAN_URL}'>${env.BUILD_NUMBER}</a>" as String] sh "curl -XPOST -H 'authorization: Bearer ${getElementAccessToken()}' -d '${JsonOutput.toJson(data)}' https://matrix.ozg-sh.de/_matrix/client/v3/rooms/${getElementRoomId()}/send/m.room.message" } @@ -514,27 +510,24 @@ String getElementRoomId() { String getElementAccessToken() { withCredentials([string(credentialsId: 'element-login-json', variable: 'LOGIN_JSON')]) { - return readJSON ( text: sh (script: '''curl -XPOST -d \"$LOGIN_JSON\" https://matrix.ozg-sh.de/_matrix/client/v3/login''', returnStdout: true)).access_token + return readJSON(text: sh(script: '''curl -XPOST -d \"$LOGIN_JSON\" https://matrix.ozg-sh.de/_matrix/client/v3/login''', returnStdout: true)).access_token } } Map getElasticsearchEnv(String namespace) { def elasticsearchSecret = getElasticsearchSecret(namespace) - return [ - "user": decodeString(elasticsearchSecret.username), - "password": decodeString(elasticsearchSecret.password), - "index": decodeString(elasticsearchSecret.index), - "url": "https://localhost:9200" - ] + return ["user" : decodeString(elasticsearchSecret.username), + "password": decodeString(elasticsearchSecret.password), + "index" : decodeString(elasticsearchSecret.index), + "url" : "https://localhost:9200"] } Void forwardServices(String namespace, Integer dbPort) { try { forwardDatenbank(namespace, dbPort) forwardElasticSearch() - } - catch (Exception e) { + } catch (Exception e) { echo "forwardServices Exception: ${e}" error("Error forwarding service") } @@ -547,7 +540,7 @@ Void forwardElasticSearch() { } Boolean isElasticSearchForwarded() { - return sh (script: "lsof -i -P -n | grep LISTEN | grep :9200", returnStatus: true) == env.SH_SUCCESS_STATUS_CODE as Integer + return sh(script: "lsof -i -P -n | grep LISTEN | grep :9200", returnStatus: true) == env.SH_SUCCESS_STATUS_CODE as Integer } Void forwardDatenbank(String namespace, port) { @@ -559,13 +552,13 @@ String generateNamespace(String bezeichner) { } String decodeString(String encoded) { - return sh (script: "echo -n ${encoded} | base64 --decode", returnStdout: true) + return sh(script: "echo -n ${encoded} | base64 --decode", returnStdout: true) } Map getElasticsearchSecret(String namespace) { - return readJSON ( text: sh (script: "kubectl get secret elasticsearch-credentials -n ${namespace} -o jsonpath={.data}", returnStdout: true)) + return readJSON(text: sh(script: "kubectl get secret elasticsearch-credentials -n ${namespace} -o jsonpath={.data}", returnStdout: true)) } Boolean hasNpmDebugLog() { - return sh (script: "ls -l /root/.npm/_logs/*-debug.log", returnStatus: true) == env.SH_SUCCESS_STATUS_CODE as Integer + return sh(script: "ls -l /root/.npm/_logs/*-debug.log", returnStatus: true) == env.SH_SUCCESS_STATUS_CODE as Integer } \ No newline at end of file diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht-formdata.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht-formdata.cy.ts index e401220efc23c21494e18332c15c00c55d5f1d28..a08bf4884204bc076c2c24057614e0f263e7bed1 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht-formdata.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-detailansicht-formdata.cy.ts @@ -37,7 +37,7 @@ import { buildVorgang, createVorgang, initVorgaenge, objectIds } from '../../../ registerLocaleData(localeDe, 'de', localeDeExtra); -describe.skip('Vorgang Detailansicht with formData', () => { +describe('Vorgang Detailansicht with formData', () => { const mainPage: MainPage = new MainPage(); const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList(); @@ -46,17 +46,17 @@ describe.skip('Vorgang Detailansicht with formData', () => { const vorgangHeader: VorgangDetailHeaderE2EComponent = vorgangPage.getVorgangDetailHeader(); - const vorgang: VorgangE2E = { ...createVorgang(), name: 'TestVorgang' }; - const vorgangWithLabels: VorgangE2E = buildVorgang(objectIds[0], 'TestVorgangWithLabels'); - const ort: string = 'Ort'; const sh_strasse: string = 'Strasse'; const sh_hausnummer: string = 'Hausnummer'; const emailadresse: string = 'E-Mail Adresse'; const postleitzahl: string = 'PLZ'; + const vorgang: VorgangE2E = { ...createVorgang(), name: 'TestVorgang' }; + const vorgangWithLabels: VorgangE2E = createVorgangWithLabels(); + before(() => { - initVorgaenge([vorgang]);//, createVorgangWithLabels()]); + initVorgaenge([vorgang, vorgangWithLabels]); loginAsSabine(); @@ -64,17 +64,38 @@ describe.skip('Vorgang Detailansicht with formData', () => { exist(vorgangList.getRoot()); }) - function createVorgangWithLabels(){ - vorgangWithLabels.eingangs[0].formData._kopControlData = { - metaData: true, - labels: { ort, sh_strasse, sh_hausnummer } - }; - - vorgangWithLabels.eingangs[0].formData.empfangendestelle._kopControlData.labels = { - emailadresse, - postleitzahl - }; - return vorgangWithLabels; + function createVorgangWithLabels(): VorgangE2E{ + const vorgang = buildVorgang(objectIds[0], 'TestVorgangWithLabels'); + return { + ...vorgang, + eingangs: [{ + ...vorgang.eingangs[0], + formData: createFormDataWithLabels() + }] + } + } + + function createFormDataWithLabels(): FormData { + return { + ...vorgang.eingangs[0].formData, + _kopControlData: { + metaData: true, + labels: { ort, sh_strasse, sh_hausnummer } + }, + empfangendestelle: createEmpfangendestelleWithLabels() + } + } + + function createEmpfangendestelleWithLabels(): any { + return { + ...vorgang.eingangs[0].formData.empfangendestelle, + _kopControlData: { + labels: { + emailadresse, + postleitzahl + } + } + } } after(() => { diff --git a/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts b/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts index ee3a1ea7f04adbec0e2fbc08c692e6b6c7fa5130..19c0f9759b1a432221edd6b5c5433449703030a9 100644 --- a/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts +++ b/alfa-client/apps/alfa-e2e/src/support/cypress.util.ts @@ -65,7 +65,7 @@ export function contains(element: any, containing: string): void { } export function notContains(element: any, containing: string): void { - element.should('exist').not.contains(containing); + element.contains(containing).should('not.exist'); } export function haveLength(element: any, length: number): void {