diff --git a/pipelines/License-server/license-test-backup.groovy b/pipelines/License-server/license-test-backup.groovy index e6e0614..0679a19 100644 --- a/pipelines/License-server/license-test-backup.groovy +++ b/pipelines/License-server/license-test-backup.groovy @@ -1,5 +1,7 @@ @Library('shared-lib') _ +import tech.avroid.jenkins.Notifications +import groovy.json.JsonOutput import java.text.SimpleDateFormat properties([ @@ -12,6 +14,66 @@ properties([ ]) +List tests = [ + [ expectedCode: '201', + method: 'POST', + URL: '/api/activate', + body: [ + "activation_key_id": "C0AE-AC61-20E0-18D5", + "vendor_app_id": "tavro_aurora", + "device_id": "FCA4PZgXnFBJUfQUpXlS3iyqXcXog9Qd8xEa8qp267I=", + "app_version": "5.2.4", + "check_only": false + ] + ], + [ expectedCode: '404', + method: 'POST', + URL: '/api/activate', + body: [ + "activation_key_id": "C0AE-AC61-20E0-18D", + "vendor_app_id": "tavro_aurora", + "device_id": "FCA4PZgXnFBJUfQUpXlS3iyqXcXog9Qd8xEa8qp267I=", + "app_version": "5.2.4", + "check_only": false + ] + ], + [ expectedCode: '201', + method: 'POST', + URL: '/api/activate', + body: [ + "activation_key_id": "C0AE-AC61-20E0-18D5", + "vendor_app_id": "tavro_aurora", + "device_id": "FCA4PZgXnFBJUfQUpXlS3iyqXcXog9Qd8xEa8qp267I=", + "app_version": "5.0.1", + "check_only": false + ] + ], + [ expectedCode: '400', + method: 'POST', + URL: '/api/activate', + body: [ + "activation_key_id": "C0AE-AC61-20E0-18D5", + "vendor_app_id": "tavro_aurora", + "device_id": "FCA4PZgXnFBJUfQUpXlS3iyqXcXog9Qd8xEa8qp267I=", + "app_version": "1.2.4", + "check_only": false + ] + ], + [ expectedCode: '201', + method: 'POST', + URL: '/api/activate', + body: [ + "activation_key_id": "A7F9-072A-D239-7D67", + "vendor_app_id": "tavro_aurora_lite", + "device_id": "[AvroidActivation]", + "app_version": "5.2.4", + "check_only": true + ] + ] +] + +String recipient = "devops@avroid.team" + Object date = new Date() Object todayDate = new SimpleDateFormat("yyyy-MM-dd") @@ -44,18 +106,49 @@ String cmdRestoreDB = "docker exec postgresql pg_restore -Fc -U postgres -p 5432 String cmdClearTmp = "rm -rf /home/jenkins/*" node('slave01') { - stage('Restore backup') { - withVault([configuration: configuration, vaultSecrets: sshPassword]) { - sh """ - sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdUnarchiveBackup} - sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdClearDockerTmp} - sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdCopyRoles} - sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdCopyDB} - sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdRestoreRoles} - sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdDropDB} - sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdRestoreDB} - sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdClearTmp} - """ + try { + stage('Restore backup') { + withVault([configuration: configuration, vaultSecrets: sshPassword]) { + sh """ + sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdUnarchiveBackup} + sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdClearDockerTmp} + sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdCopyRoles} + sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdCopyDB} + sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdRestoreRoles} + sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdDropDB} + sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdRestoreDB} + sshpass -p $password ssh -o StrictHostKeychecking=no jenkins@${licBackupServer} ${cmdClearTmp} + """ + } } + + stage('Run tests'){ + tests.each { test -> + httpRequest( + url: "http://${licBackupServer}${test.URL}", + contentType: 'APPLICATION_JSON', + httpMode: test.method, + validResponseCodes: test.expectedCode, + requestBody: JsonOutput.toJson(test.body) + + ) + } + } + } catch(err) { + errorMessage = err.getMessage() + + println 'ERROR: ' + errorMessage + + currentBuild.result = 'FAILURE' + + String emailSubject = "${currentBuild.currentResult}. " + + "Pipeline task: ${currentBuild.fullDisplayName}" + Notifications.email( + script: this, + subject: emailSubject, + errorString: errorMessage, + recipientProviders: [], + to: recipient + ) } }