github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/test/groovy/com/sap/piper/cm/StepHelpersTest.groovy (about) 1 package com.sap.piper.cm 2 3 import org.junit.Before 4 import org.junit.Rule 5 import org.junit.Test 6 import org.junit.rules.RuleChain 7 8 import util.BasePiperTest 9 import util.JenkinsLoggingRule 10 import util.Rules 11 12 class StepHelpersTest extends BasePiperTest { 13 14 // Configuration is not checked by the tests here. 15 // We simply assume it fits. It is the duty of the 16 // step related tests to ensure the configuration is valid. 17 def params = [changeManagement: 18 [git: [ 19 from: 'HEAD~1', 20 to: 'HEAD', 21 format: '%b' 22 ], 23 changeDocumentLabel: "ChangeDocument:", 24 transportRequestLabel: "TransportRequest:", 25 ] 26 ] 27 28 private Map getChangeDocumentIdReceivedParameters = [:] 29 private Map getTransportRequestIdReceivedParameters = [:] 30 31 @Before 32 public void setup() { 33 getChangeDocumentIdReceivedParameters.clear() 34 getTransportRequestIdReceivedParameters.clear() 35 } 36 37 JenkinsLoggingRule loggingRule = new JenkinsLoggingRule(this) 38 39 @Rule 40 public RuleChain rules = Rules.getCommonRules(this) 41 .around(loggingRule) 42 43 private ChangeManagement cm = new ChangeManagement(nullScript) { 44 45 String getTransportRequestId( 46 String from, 47 String to, 48 String label, 49 String format 50 ) { 51 getTransportRequestIdReceivedParameters['from'] = from 52 getTransportRequestIdReceivedParameters['to'] = to 53 getTransportRequestIdReceivedParameters['label'] = label 54 getTransportRequestIdReceivedParameters['format'] = format 55 return '097' 56 } 57 58 String getChangeDocumentId( 59 String from, 60 String to, 61 String label, 62 String format 63 ) { 64 getChangeDocumentIdReceivedParameters['from'] = from 65 getChangeDocumentIdReceivedParameters['to'] = to 66 getChangeDocumentIdReceivedParameters['label'] = label 67 getChangeDocumentIdReceivedParameters['format'] = format 68 return '001' 69 } 70 } 71 72 @Test 73 public void transportRequestIdViaCommitHistoryTest() { 74 75 def transportRequestId = StepHelpers.getTransportRequestId(cm, nullScript, params) 76 77 assert transportRequestId == '097' 78 assert getTransportRequestIdReceivedParameters == 79 [ 80 from: 'HEAD~1', 81 to: 'HEAD', 82 label: 'TransportRequest:', 83 format: '%b' 84 ] 85 86 // We cache the value. Otherwise we have to retrieve it each time from the 87 // commit history. 88 assert nullScript.commonPipelineEnvironment.getValue('transportRequestId') == '097' 89 } 90 91 public void changeDocumentIdViaCommitHistoryTest() { 92 93 def changeDocumentId = StepHelpers.getChangeDocumentId(cm, nullScript, params) 94 95 assert changeDocumentId == '001' 96 assert getChangeDocumentIdReceivedParameters == 97 [ 98 from: 'HEAD~1', 99 to: 'HEAD', 100 label: 'ChangeDocument:', 101 format: '%b' 102 ] 103 104 // We cache the value. Otherwise we have to retrieve it each time from the 105 // commit history. 106 assert nullScript.commonPipelineEnvironment.getChangeDocumentId() == '001' 107 } 108 109 @Test 110 public void transportRequestIdViaCommonPipelineEnvironmentTest() { 111 112 nullScript.commonPipelineEnvironment.setValue('transportRequestId', '098') 113 def transportRequestId = StepHelpers.getTransportRequestId(cm, nullScript, params) 114 115 assert transportRequestId == '098' 116 117 // getTransportRequestId gets not called on ChangeManagement util class 118 // in this case. 119 assert getTransportRequestIdReceivedParameters == [:] 120 } 121 122 @Test 123 public void transportRequestIdViaParametersTest() { 124 125 params << [transportRequestId: '099'] 126 127 def transportRequestId = StepHelpers.getTransportRequestId(cm, nullScript, params) 128 129 assert transportRequestId == '099' 130 131 // In case we get the transport request id via parameters we do not cache it 132 // Caller knows the transport request id anyway. So the caller can provide it with 133 // each call. 134 assert nullScript.commonPipelineEnvironment.getValue('transportRequestId') == null 135 136 // getTransportRequestId gets not called on ChangeManagement util class 137 // in this case. 138 assert getTransportRequestIdReceivedParameters == [:] 139 } 140 141 @Test 142 public void transportRequestIdNotProvidedTest() { 143 144 loggingRule.expect('Cannot retrieve transportRequestId from commit history') 145 146 def cm = new ChangeManagement(nullScript) { 147 String getTransportRequestId( 148 String from, 149 String to, 150 String label, 151 String format 152 ) { 153 throw new ChangeManagementException('Cannot retrieve transport request id') 154 } 155 } 156 157 def transportRequestId = StepHelpers.getTransportRequestId(cm, nullScript, params) 158 assert transportRequestId == null 159 } 160 161 @Test 162 public void changeDocumentIdViaCommonPipelineEnvironmentTest() { 163 164 nullScript.commonPipelineEnvironment.setChangeDocumentId('002') 165 def transportRequestId = StepHelpers.getChangeDocumentId(cm, nullScript, params) 166 167 assert transportRequestId == '002' 168 169 // getChangeDocumentId gets not called on ChangeManagement util class 170 // in this case. 171 assert getChangeDocumentIdReceivedParameters == [:] 172 } 173 174 @Test 175 public void changeDocumentIdViaParametersTest() { 176 177 params << [changeDocumentId: '003'] 178 179 def transportRequestId = StepHelpers.getChangeDocumentId(cm, nullScript, params) 180 181 assert transportRequestId == '003' 182 183 // In case we get the change document id via parameters we do not cache it 184 // Caller knows the change document id anyway. So the caller can provide it with 185 // each call. 186 assert nullScript.commonPipelineEnvironment.getChangeDocumentId() == null 187 188 // getChangeDocumentId gets not called on ChangeManagement util class 189 // in this case. 190 assert getChangeDocumentIdReceivedParameters == [:] 191 } 192 193 @Test 194 public void changeDocumentIdNotProvidedTest() { 195 196 loggingRule.expect('[WARN] Cannot retrieve changeDocumentId from commit history') 197 198 def cm = new ChangeManagement(nullScript) { 199 String getChangeDocumentId( 200 String from, 201 String to, 202 String label, 203 String format 204 ) { 205 throw new ChangeManagementException('Cannot retrieve change document ids') 206 } 207 } 208 209 def changeDocumentId = StepHelpers.getChangeDocumentId(cm, nullScript, params) 210 211 assert changeDocumentId == null 212 } 213 214 @Test 215 public void reqidViaConfigTest() { 216 217 nullScript.commonPipelineEnvironment.setValue('transportRequestId', 'unused') 218 219 def calledWithParameters = null 220 221 helper.registerAllowedMethod( 'piperExecuteBin', [Map, String, String, List], 222 { 223 params, stepName, metaData, creds -> 224 if(stepName.equals("transportRequestReqIDFromGit")) { 225 calledWithParameters = params 226 } 227 } 228 ) 229 230 def transportRequestId = StepHelpers.getTransportRequestId(nullScript, [transportRequestId: '100']) 231 232 assert transportRequestId == '100' 233 assert calledWithParameters == null 234 } 235 236 @Test 237 public void reqidViaCommonPipelineEnvironmentTest() { 238 239 nullScript.commonPipelineEnvironment.setValue('transportRequestId', '200') 240 241 def calledWithParameters = null 242 243 helper.registerAllowedMethod( 'piperExecuteBin', [Map, String, String, List], 244 { 245 params, stepName, metaData, creds -> 246 if(stepName.equals("transportRequestReqIDFromGit")) { 247 calledWithParameters = params 248 } 249 } 250 ) 251 252 def transportRequestId = StepHelpers.getTransportRequestId(nullScript, params) 253 254 assert transportRequestId == '200' 255 assert calledWithParameters == null 256 } 257 258 @Test 259 public void reqidViaCommitHistoryTest() { 260 261 def calledWithParameters = null 262 263 helper.registerAllowedMethod( 'piperExecuteBin', [Map, String, String, List], 264 { 265 params, stepName, metaData, creds -> 266 if(stepName.equals("transportRequestReqIDFromGit")) { 267 nullScript.commonPipelineEnvironment.setValue('transportRequestId', '300') 268 } 269 } 270 ) 271 272 def transportRequestId = StepHelpers.getTransportRequestId(nullScript, params) 273 274 assert transportRequestId == '300' 275 assert nullScript.commonPipelineEnvironment.getValue('transportRequestId') == '300' 276 } 277 278 @Test 279 public void reqidNotProvidedTest() { 280 281 def calledWithParameters = null 282 283 helper.registerAllowedMethod( 'piperExecuteBin', [Map, String, String, List], 284 { 285 params, stepName, metaData, creds -> 286 if(stepName.equals("transportRequestReqIDFromGit")) { 287 calledWithParameters = params 288 } 289 } 290 ) 291 292 loggingRule.expect('[INFO] Retrieving transportRequestId from commit history') 293 loggingRule.expect('[WARN] Cannot retrieve transportRequestId from commit history') 294 295 def transportRequestId = StepHelpers.getTransportRequestId(nullScript, params) 296 297 assert transportRequestId == null 298 assert calledWithParameters != null 299 } 300 301 @Test 302 public void docidViaConfigTest() { 303 304 nullScript.commonPipelineEnvironment.setValue('changeDocumentId', 'unused') 305 306 def calledWithParameters = null 307 308 helper.registerAllowedMethod( 'piperExecuteBin', [Map, String, String, List], 309 { 310 params, stepName, metaData, creds -> 311 if(stepName.equals("transportRequestDocIDFromGit")) { 312 calledWithParameters = params 313 } 314 } 315 ) 316 317 def changeDocumentId = StepHelpers.getChangeDocumentId(nullScript, [changeDocumentId: '100']) 318 319 assert changeDocumentId == '100' 320 assert calledWithParameters == null 321 } 322 323 @Test 324 public void docidViaCommonPipelineEnvironmentTest() { 325 326 nullScript.commonPipelineEnvironment.setValue('changeDocumentId', '200') 327 328 def calledWithParameters = null 329 330 helper.registerAllowedMethod( 'piperExecuteBin', [Map, String, String, List], 331 { 332 params, stepName, metaData, creds -> 333 if(stepName.equals("transportRequestDocIDFromGit")) { 334 calledWithParameters = params 335 } 336 } 337 ) 338 339 def changeDocumentId = StepHelpers.getChangeDocumentId(nullScript, params) 340 341 assert changeDocumentId == '200' 342 assert calledWithParameters == null 343 } 344 345 @Test 346 public void docidViaCommitHistoryTest() { 347 348 def calledWithParameters = null 349 350 helper.registerAllowedMethod( 'piperExecuteBin', [Map, String, String, List], 351 { 352 params, stepName, metaData, creds -> 353 if(stepName.equals("transportRequestDocIDFromGit")) { 354 nullScript.commonPipelineEnvironment.setValue('changeDocumentId', '300') 355 } 356 } 357 ) 358 359 def changeDocumentId = StepHelpers.getChangeDocumentId(nullScript, params) 360 361 assert changeDocumentId == '300' 362 assert nullScript.commonPipelineEnvironment.getValue('changeDocumentId') == '300' 363 } 364 365 @Test 366 public void docidNotProvidedTest() { 367 368 def calledWithParameters = null 369 370 helper.registerAllowedMethod( 'piperExecuteBin', [Map, String, String, List], 371 { 372 params, stepName, metaData, creds -> 373 if(stepName.equals("transportRequestDocIDFromGit")) { 374 calledWithParameters = params 375 } 376 } 377 ) 378 379 loggingRule.expect('[INFO] Retrieving changeDocumentId from commit history') 380 loggingRule.expect('[WARN] Cannot retrieve changeDocumentId from commit history') 381 382 def changeDocumentId = StepHelpers.getChangeDocumentId(nullScript, params) 383 384 assert changeDocumentId == null 385 assert calledWithParameters != null 386 } 387 }