github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/abap/build/bfw_mock.go (about) 1 package build 2 3 import ( 4 "bytes" 5 "io" 6 "net/http" 7 "strings" 8 9 piperhttp "github.com/SAP/jenkins-library/pkg/http" 10 ) 11 12 // DownloadClientMock : Mock for Download Client used for artefact test 13 type DownloadClientMock struct{} 14 15 // DownloadFile : Empty file download 16 func (dc *DownloadClientMock) DownloadFile(url, filename string, header http.Header, cookies []*http.Cookie) error { 17 return nil 18 } 19 20 // SetOptions : Download Client options 21 func (dc *DownloadClientMock) SetOptions(opts piperhttp.ClientOptions) {} 22 23 // ClMock : Mock for Build Framework Client used for BF test 24 type ClMock struct { 25 Token string 26 StatusCode int 27 Error error 28 } 29 30 // SetOptions : BF Client options 31 func (c *ClMock) SetOptions(opts piperhttp.ClientOptions) {} 32 33 // SendRequest : BF Send Fake request 34 func (c *ClMock) SendRequest(method string, url string, bdy io.Reader, hdr http.Header, cookies []*http.Cookie) (*http.Response, error) { 35 if method == "GET" || method == "POST" { 36 body := []byte(fakeResponse(method, url)) 37 return &http.Response{ 38 StatusCode: c.StatusCode, 39 Body: io.NopCloser(bytes.NewReader(body)), 40 }, c.Error 41 } else if method == "HEAD" { 42 var body []byte 43 header := http.Header{} 44 header.Set("X-Csrf-Token", c.Token) 45 body = []byte("") 46 return &http.Response{ 47 StatusCode: c.StatusCode, 48 Header: header, 49 Body: io.NopCloser(bytes.NewReader(body)), 50 }, c.Error 51 } else { 52 return nil, c.Error 53 } 54 } 55 56 func fakeResponse(method string, url string) string { 57 if method == "POST" { 58 return responsePOST 59 } 60 if strings.HasSuffix(url, "/builds('ABIFNLDCSQPOVMXK4DNPBDRW2M')") { 61 return responseGetBuild 62 } else if strings.HasSuffix(url, "/builds('ABIFNLDCSQPOVMXK4DNPBDRW2M')/tasks") { 63 return responseGetTasks 64 } else if strings.HasSuffix(url, "/tasks(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=0)/logs") { 65 return responseGetLog0 66 } else if strings.HasSuffix(url, "/tasks(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1)/logs") { 67 return responseGetLog1 68 } else if strings.HasSuffix(url, "/builds('ABIFNLDCSQPOVMXK4DNPBDRW2M')/values") { 69 return responseGetValues 70 } else if strings.HasSuffix(url, "tasks(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=0)/results") { 71 return responseGetResults0 72 } else if strings.HasSuffix(url, "tasks(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1)/results") { 73 return responseGetResults1 74 } 75 return "" 76 } 77 78 var responseGetBuild = `{ 79 "d": { 80 "__metadata": { 81 "id": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/builds('ABIFNLDCSQPOVMXK4DNPBDRW2M')", 82 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/builds('ABIFNLDCSQPOVMXK4DNPBDRW2M')", 83 "type": "BUILD.CORE_SRV.xBUILDxVIEW_BUILDSType" 84 }, 85 "build_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M", 86 "run_state": "FINISHED", 87 "result_state": "SUCCESSFUL", 88 "phase": "test1", 89 "entitytype": "P", 90 "startedby": "BENTELER", 91 "started_at": "/Date(1591718108103+0000)/", 92 "finished_at": "/Date(1591718129432+0000)/", 93 "tasks": { 94 "__deferred": { 95 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/builds('ABIFNLDCSQPOVMXK4DNPBDRW2M')/tasks" 96 } 97 }, 98 "values": { 99 "__deferred": { 100 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/builds('ABIFNLDCSQPOVMXK4DNPBDRW2M')/values" 101 } 102 } 103 } 104 }` 105 106 var responsePOST = `{ 107 "d": { 108 "__metadata": { 109 "id": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/builds('ABIFNLDCSQPNVMOUQL2LHUFAUA')", 110 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/builds('ABIFNLDCSQPNVMOUQL2LHUFAUA')", 111 "type": "BUILD.CORE_SRV.xBUILDxVIEW_BUILDSType" 112 }, 113 "build_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M", 114 "run_state": "ACCEPTED", 115 "result_state": "", 116 "phase": "test1", 117 "entitytype": "", 118 "startedby": "BENTELER", 119 "started_at": null, 120 "finished_at": null, 121 "tasks": { 122 "__deferred": { 123 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/builds('ABIFNLDCSQPNVMOUQL2LHUFAUA')/tasks" 124 } 125 }, 126 "values": { 127 "results": [] 128 } 129 } 130 }` 131 132 var responseGetTasks = `{ 133 "d": { 134 "results": [ 135 { 136 "__metadata": { 137 "id": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/tasks(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1)", 138 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/tasks(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1)", 139 "type": "BUILD.CORE_SRV.xBUILDxVIEW_TASKSType" 140 }, 141 "build_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M", 142 "task_id": 1, 143 "log_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M_1", 144 "plugin_class": "/BUILD/CL_TEST_PLUGIN_OK", 145 "started_at": "/Date(1591718128730+0000)/", 146 "finished_at": "/Date(1591718129369+0000)/", 147 "result_state": "SUCCESSFUL", 148 "logs": { 149 "__deferred": { 150 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/tasks(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1)/logs" 151 } 152 }, 153 "results": { 154 "__deferred": { 155 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/tasks(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1)/results" 156 } 157 } 158 }, 159 { 160 "__metadata": { 161 "id": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/tasks(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=0)", 162 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/tasks(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=0)", 163 "type": "BUILD.CORE_SRV.xBUILDxVIEW_TASKSType" 164 }, 165 "build_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M", 166 "task_id": 0, 167 "log_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M_0", 168 "plugin_class": "", 169 "started_at": "/Date(1591718128728+0000)/", 170 "finished_at": "/Date(1591718129462+0000)/", 171 "result_state": "SUCCESSFUL", 172 "logs": { 173 "__deferred": { 174 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/tasks(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=0)/logs" 175 } 176 }, 177 "results": { 178 "__deferred": { 179 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/tasks(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=0)/results" 180 } 181 } 182 } 183 ] 184 } 185 }` 186 187 var responseGetLog0 = `{ 188 "d": { 189 "results": [ 190 { 191 "__metadata": { 192 "id": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/logs(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=0,log_id='ABIFNLDCSQPOVMXK4DNPBDRW2M_0')", 193 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/logs(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=0,log_id='ABIFNLDCSQPOVMXK4DNPBDRW2M_0')", 194 "type": "BUILD.CORE_SRV.xBUILDxVIEW_LOGSType" 195 }, 196 "build_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M", 197 "task_id": 0, 198 "log_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M_0", 199 "msgty": "I", 200 "detlevel": "3", 201 "log_line": "I:/BUILD/LOG:000 ABAP Build Framework", 202 "TIME_STMP": "20200721133523" 203 }, 204 { 205 "__metadata": { 206 "id": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/logs(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=0,log_id='ABIFNLDCSQPOVMXK4DNPBDRW2M_0')", 207 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/logs(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=0,log_id='ABIFNLDCSQPOVMXK4DNPBDRW2M_0')", 208 "type": "BUILD.CORE_SRV.xBUILDxVIEW_LOGSType" 209 }, 210 "build_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M", 211 "task_id": 0, 212 "log_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M_0", 213 "msgty": "I", 214 "detlevel": "3", 215 "log_line": "I:/BUILD/LOG:000 ... Build Execution finished SUCCESSFUL", 216 "TIME_STMP": "20200721133528" 217 } 218 ] 219 } 220 }` 221 222 var responseGetLog1 = `{ 223 "d": { 224 "results": [ 225 { 226 "__metadata": { 227 "id": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/logs(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1,log_id='ABIFNLDCSQPOVMXK4DNPBDRW2M_1')", 228 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/logs(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1,log_id='ABIFNLDCSQPOVMXK4DNPBDRW2M_1')", 229 "type": "BUILD.CORE_SRV.xBUILDxVIEW_LOGSType" 230 }, 231 "build_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M", 232 "task_id": 1, 233 "log_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M_1", 234 "msgty": "I", 235 "detlevel": "1", 236 "log_line": "I:/BUILD/LOG:000 Hello Packages [1]: , /BUILD/CORE, here is your lovely test_ok plugin!", 237 "TIME_STMP": "20200721133528" 238 }, 239 { 240 "__metadata": { 241 "id": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/logs(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1,log_id='ABIFNLDCSQPOVMXK4DNPBDRW2M_1')", 242 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/logs(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1,log_id='ABIFNLDCSQPOVMXK4DNPBDRW2M_1')", 243 "type": "BUILD.CORE_SRV.xBUILDxVIEW_LOGSType" 244 }, 245 "build_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M", 246 "task_id": 1, 247 "log_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M_1", 248 "msgty": "W", 249 "detlevel": "3", 250 "log_line": "W:/BUILD/LOG:000 We can even have warnings!", 251 "TIME_STMP": "20200721133528" 252 } 253 ] 254 } 255 }` 256 257 var responseGetResults0 = `{ 258 "d": { 259 "results": [] 260 } 261 }` 262 263 var responseGetResults1 = `{ 264 "d": { 265 "results": [ 266 { 267 "__metadata": { 268 "id": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/results(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1,name='HT-6111.JPG')", 269 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/results(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1,name='HT-6111.JPG')", 270 "type": "BUILD.CORE_SRV.xBUILDxVIEW_RESULTSType", 271 "content_type": "image/jpeg", 272 "media_src": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/results(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1,name='HT-6111.JPG')/$value" 273 }, 274 "build_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M", 275 "task_id": 1, 276 "name": "HT-6111.JPG", 277 "additional_info": "", 278 "mimetype": "image/jpeg" 279 }, 280 { 281 "__metadata": { 282 "id": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/results(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1,name='2times_hello')", 283 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/results(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1,name='2times_hello')", 284 "type": "BUILD.CORE_SRV.xBUILDxVIEW_RESULTSType", 285 "content_type": "text/plain", 286 "media_src": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/results(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',task_id=1,name='2times_hello')/$value" 287 }, 288 "build_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M", 289 "task_id": 1, 290 "name": "SAR_XML", 291 "additional_info": "/usr/sap/trans/tmp/SAPK-001AAINITAPC1.SAR", 292 "mimetype": "application/octet-stream" 293 } 294 ] 295 } 296 }` 297 298 var responseGetValues = `{ 299 "d": { 300 "results": [ 301 { 302 "__metadata": { 303 "id": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/values(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',value_id='PHASE')", 304 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/values(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',value_id='PHASE')", 305 "type": "BUILD.CORE_SRV.xBUILDxVIEW_VALUESType" 306 }, 307 "build_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M", 308 "value_id": "PHASE", 309 "value": "test1" 310 }, 311 { 312 "__metadata": { 313 "id": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/values(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',value_id='PACKAGES')", 314 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/values(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',value_id='PACKAGES')", 315 "type": "BUILD.CORE_SRV.xBUILDxVIEW_VALUESType" 316 }, 317 "build_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M", 318 "value_id": "PACKAGES", 319 "value": "/BUILD/CORE" 320 }, 321 { 322 "__metadata": { 323 "id": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/values(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',value_id='season')", 324 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/values(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',value_id='season')", 325 "type": "BUILD.CORE_SRV.xBUILDxVIEW_VALUESType" 326 }, 327 "build_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M", 328 "value_id": "season", 329 "value": "winter" 330 }, 331 { 332 "__metadata": { 333 "id": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/values(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',value_id='SUN')", 334 "uri": "https://ldai3yi3.wdf.sap.corp:44334/sap/opu/odata/BUILD/CORE_SRV/values(build_id='ABIFNLDCSQPOVMXK4DNPBDRW2M',value_id='SUN')", 335 "type": "BUILD.CORE_SRV.xBUILDxVIEW_VALUESType" 336 }, 337 "build_id": "ABIFNLDCSQPOVMXK4DNPBDRW2M", 338 "value_id": "SUN", 339 "value": "FLOWER" 340 } 341 ] 342 } 343 }` 344 345 func GetMockBuildTestDownloadPublish() Build { 346 conn := new(Connector) 347 conn.DownloadClient = &DownloadClientMock{} 348 349 results0 := []Result{ 350 { 351 connector: *conn, 352 Name: dummyResultName, 353 }, 354 } 355 results1 := []Result{ 356 { 357 connector: *conn, 358 Name: "File1", 359 }, 360 { 361 connector: *conn, 362 Name: "File2", 363 }, 364 { 365 connector: *conn, 366 Name: "File3", 367 }, 368 } 369 370 build := Build{ 371 BuildID: "123", 372 Tasks: []task{ 373 { 374 TaskID: 0, 375 Results: results0, 376 }, 377 { 378 TaskID: 1, 379 Results: results1, 380 }, 381 }, 382 } 383 return build 384 }