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  }