From 2b5e4ca3b8b5190f993eeb8376f0a4e7755a11a9 Mon Sep 17 00:00:00 2001 From: Zhao Xiaojie Date: Sun, 26 Apr 2020 09:29:51 +0800 Subject: [PATCH] Add support to clean invalid config item (#383) * Add support to clean invalid config item * Fix the package issues * Fix some issues found by hound * Fixes the test errors --- app/cmd/center_download_test.go | 5 +- app/cmd/center_test.go | 5 +- app/cmd/center_upgrade_test.go | 5 +- app/cmd/center_watch_test.go | 2 +- app/cmd/computer_launch_test.go | 2 +- app/cmd/config_clean.go | 120 ++++++++++++++++++++++++++ app/cmd/cwp_test.go | 5 +- app/cmd/job_artifact_download_test.go | 2 +- app/cmd/job_build_test.go | 6 +- app/cmd/job_delete_test.go | 5 +- app/cmd/job_edit_test.go | 2 +- app/cmd/job_stop_test.go | 9 +- app/cmd/job_type_test.go | 8 +- app/helper/error.go | 2 + app/helper/error_test.go | 10 +++ client/artifacts_test_common.go | 2 +- client/common.go | 13 ++- client/common_test.go | 14 +-- client/common_test_common.go | 2 +- client/computer_test_common.go | 4 +- client/core_test_common.go | 2 +- client/credentials_test_common.go | 2 +- client/job_test.go | 26 +++--- client/job_test_common.go | 16 ++-- client/pluginApi_test_common.go | 6 +- client/pluginManager_test.go | 2 +- client/status_test_common.go | 2 +- client/test_methods.go | 14 +-- client/updateCenter_test.go | 10 +-- client/user_test_common.go | 2 +- util/http_test.go | 10 +-- 31 files changed, 232 insertions(+), 83 deletions(-) create mode 100644 app/cmd/config_clean.go diff --git a/app/cmd/center_download_test.go b/app/cmd/center_download_test.go index 6a34596..5740926 100644 --- a/app/cmd/center_download_test.go +++ b/app/cmd/center_download_test.go @@ -3,6 +3,7 @@ package cmd import ( "bytes" "github.com/golang/mock/gomock" + "github.com/jenkins-zh/jenkins-cli/client" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "io/ioutil" @@ -66,7 +67,7 @@ var _ = Describe("center download command", func() { Body: ioutil.NopCloser(bytes.NewBufferString(ltsResponseBody)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) rootCmd.SetArgs([]string{"center", "download", "--progress=false", "--output", targetFilePath}) _, err := rootCmd.ExecuteC() @@ -88,7 +89,7 @@ var _ = Describe("center download command", func() { Body: ioutil.NopCloser(bytes.NewBufferString(weeklyResponseBody)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) rootCmd.SetArgs([]string{"center", "download", "--lts=false", "--progress=false", "--output", targetFilePath}) _, err := rootCmd.ExecuteC() diff --git a/app/cmd/center_test.go b/app/cmd/center_test.go index b8b697e..f6fa19f 100644 --- a/app/cmd/center_test.go +++ b/app/cmd/center_test.go @@ -2,6 +2,7 @@ package cmd import ( "bytes" + "github.com/jenkins-zh/jenkins-cli/client" "io/ioutil" "net/http" "os" @@ -54,7 +55,7 @@ var _ = Describe("center command", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(client.NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) request, _ := http.NewRequest("GET", "http://localhost:8080/jenkins/updateCenter/api/json?pretty=false&depth=1", nil) request.SetBasicAuth("admin", "111e3a2f0231198855dceaff96f20540a9") @@ -67,7 +68,7 @@ var _ = Describe("center command", func() { `)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) rootCmd.SetArgs([]string{"center"}) _, err = rootCmd.ExecuteC() diff --git a/app/cmd/center_upgrade_test.go b/app/cmd/center_upgrade_test.go index 4b2fb50..6ca3261 100644 --- a/app/cmd/center_upgrade_test.go +++ b/app/cmd/center_upgrade_test.go @@ -2,6 +2,7 @@ package cmd import ( "bytes" + "github.com/jenkins-zh/jenkins-cli/client" "io/ioutil" "net/http" "os" @@ -53,7 +54,7 @@ var _ = Describe("center upgrade command", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(client.NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) request, _ := http.NewRequest("POST", "http://localhost:8080/jenkins/updateCenter/upgrade", nil) request.SetBasicAuth("admin", "111e3a2f0231198855dceaff96f20540a9") @@ -65,7 +66,7 @@ var _ = Describe("center upgrade command", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) rootCmd.SetArgs([]string{"center", "upgrade"}) _, err = rootCmd.ExecuteC() diff --git a/app/cmd/center_watch_test.go b/app/cmd/center_watch_test.go index 87b46f6..12f918a 100644 --- a/app/cmd/center_watch_test.go +++ b/app/cmd/center_watch_test.go @@ -57,7 +57,7 @@ var _ = Describe("center watch command", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(client.NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) rootCmd.SetArgs([]string{"center", "watch"}) _, err = rootCmd.ExecuteC() diff --git a/app/cmd/computer_launch_test.go b/app/cmd/computer_launch_test.go index 13daba6..4ebcd06 100644 --- a/app/cmd/computer_launch_test.go +++ b/app/cmd/computer_launch_test.go @@ -80,7 +80,7 @@ var _ = Describe("computer launch command", func() { Body: ioutil.NopCloser(bytes.NewBufferString(fakeJar)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) secret := "fake-secret" client.PrepareForComputerAgentSecretRequest(roundTripper, diff --git a/app/cmd/config_clean.go b/app/cmd/config_clean.go new file mode 100644 index 0000000..8b82abc --- /dev/null +++ b/app/cmd/config_clean.go @@ -0,0 +1,120 @@ +package cmd + +import ( + cfg "github.com/jenkins-zh/jenkins-cli/app/config" + "github.com/jenkins-zh/jenkins-cli/app/helper" + "github.com/jenkins-zh/jenkins-cli/app/i18n" + "github.com/jenkins-zh/jenkins-cli/client" + "github.com/spf13/cobra" + "net" + "net/http" + "time" +) + +// ConfigCleanOption option for config list command +type ConfigCleanOption struct { + Timeout int + CleanTimeout bool + + Logger helper.Printer +} + +var configCleanOption ConfigCleanOption + +func init() { + configCmd.AddCommand(configCleanCmd) + configCleanCmd.Flags().IntVarP(&configCleanOption.Timeout, "timeout", "t", 5, + i18n.T("Timeout in second value when checking with the Jenkins URL")) + configCleanCmd.Flags().BoolVarP(&configCleanOption.CleanTimeout, "clean-timeout", "", false, + i18n.T("Clean the config items when timeout with API request")) +} + +// CheckResult is the result of checking +type CheckResult struct { + Name string + StatusCode int + Timeout bool +} + +var configCleanCmd = &cobra.Command{ + Use: "clean", + Short: i18n.T("Clean up some unavailable config items"), + Long: i18n.T("Clean up some unavailable config items"), + RunE: configCleanOption.Run, +} + +// Run is the main entry point of command config-clean +func (o *ConfigCleanOption) Run(cmd *cobra.Command, args []string) (err error) { + if config := getConfig(); config == nil { + cmd.Println("cannot found config file") + } + o.Logger = cmd + + itemCount := len(config.JenkinsServers) + checkResult := make(chan CheckResult, itemCount) + + for _, jenkins := range config.JenkinsServers { + go func(target cfg.JenkinsServer) { + checkResult <- o.Check(target) + }(jenkins) + } + + checkResultList := make([]CheckResult, itemCount) + for i := range config.JenkinsServers { + checkResultList[i] = <-checkResult + } + + // do the clean work + err = o.CleanByCondition(checkResultList) + cmd.Println() + return +} + +// Check check the target JenkinsServer config +// make a request to a Jenkins API +func (o *ConfigCleanOption) Check(jenkins cfg.JenkinsServer) (result CheckResult) { + result.Name = jenkins.Name + + jClient := &client.PluginManager{ + JenkinsCore: client.JenkinsCore{ + RoundTripper: pluginListOption.RoundTripper, + Timeout: time.Duration(o.Timeout), + }, + } + jClient.URL = jenkins.URL + jClient.UserName = jenkins.UserName + jClient.Token = jenkins.Token + jClient.Proxy = jenkins.Proxy + jClient.ProxyAuth = jenkins.ProxyAuth + jClient.InsecureSkipVerify = jenkins.InsecureSkipVerify + + var statusCode int + var err error + if statusCode, _, err = jClient.Request(http.MethodGet, "/api/json", nil, nil); err != nil { + if err, ok := err.(net.Error); ok { + result.Timeout = err.Timeout() + } else { + o.Logger.Println("check request failed, error is", err) + } + } + result.StatusCode = statusCode + return +} + +// CleanByCondition do the clean work by conditions +func (o *ConfigCleanOption) CleanByCondition(resultList []CheckResult) (err error) { + if len(resultList) == 0 { + return + } + + for _, result := range resultList { + if o.CleanTimeout && result.Timeout { + if err = removeJenkins(result.Name); err == nil { + o.Logger.Printf("removed invalid item %s due to timeout reason\n", result.Name) + } + } else { + o.Logger.Printf("status code of %s is %d\n", result.Name, result.StatusCode) + } + } + return +} diff --git a/app/cmd/cwp_test.go b/app/cmd/cwp_test.go index 8393417..aa014be 100644 --- a/app/cmd/cwp_test.go +++ b/app/cmd/cwp_test.go @@ -4,6 +4,7 @@ import ( "bytes" "github.com/golang/mock/gomock" "github.com/jenkins-zh/jenkins-cli/app/cmd/common" + "github.com/jenkins-zh/jenkins-cli/client" "github.com/jenkins-zh/jenkins-cli/mock/mhttp" "github.com/jenkins-zh/jenkins-cli/util" . "github.com/onsi/ginkgo" @@ -103,7 +104,7 @@ func prepareDownloadFileRequest(url, content string, roundTripper *mhttp.MockRou Body: ioutil.NopCloser(bytes.NewBufferString(content)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) } func prepareMavenMetadataRequest(roundTripper *mhttp.MockRoundTripper) { @@ -114,7 +115,7 @@ func prepareMavenMetadataRequest(roundTripper *mhttp.MockRoundTripper) { Body: ioutil.NopCloser(bytes.NewBufferString(getMavenMetadataSample())), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) } func getMavenMetadataSample() string { diff --git a/app/cmd/job_artifact_download_test.go b/app/cmd/job_artifact_download_test.go index 1353e45..b0f9ac4 100644 --- a/app/cmd/job_artifact_download_test.go +++ b/app/cmd/job_artifact_download_test.go @@ -74,7 +74,7 @@ var _ = Describe("job artifact download command", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) buf := new(bytes.Buffer) rootCmd.SetOutput(buf) diff --git a/app/cmd/job_build_test.go b/app/cmd/job_build_test.go index d4ecb2c..b9b65e3 100644 --- a/app/cmd/job_build_test.go +++ b/app/cmd/job_build_test.go @@ -62,7 +62,7 @@ var _ = Describe("job build command", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) requestCrumb, _ := http.NewRequest("GET", "http://localhost:8080/jenkins/crumbIssuer/api/json", nil) requestCrumb.SetBasicAuth("admin", "111e3a2f0231198855dceaff96f20540a9") @@ -75,7 +75,7 @@ var _ = Describe("job build command", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(client.NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) rootCmd.SetArgs([]string{"job", "build", jobName, "-b", "true"}) _, err = rootCmd.ExecuteC() @@ -169,7 +169,7 @@ var _ = Describe("job build command", func() { // `)), // } // roundTripper.EXPECT(). -// RoundTrip(request).Return(response, nil) +// RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) // // client.PrepareForBuildWithParams(roundTripper, url, jobName, user, token) // diff --git a/app/cmd/job_delete_test.go b/app/cmd/job_delete_test.go index 69bd151..9f43f9d 100644 --- a/app/cmd/job_delete_test.go +++ b/app/cmd/job_delete_test.go @@ -5,6 +5,7 @@ import ( "fmt" "github.com/Netflix/go-expect" "github.com/jenkins-zh/jenkins-cli/app/cmd/common" + "github.com/jenkins-zh/jenkins-cli/client" "io/ioutil" "net/http" "os" @@ -67,7 +68,7 @@ var _ = Describe("job delete command", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) requestCrumb, _ := http.NewRequest("GET", "http://localhost:8080/jenkins/crumbIssuer/api/json", nil) requestCrumb.SetBasicAuth("admin", "111e3a2f0231198855dceaff96f20540a9") @@ -80,7 +81,7 @@ var _ = Describe("job delete command", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(client.NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) rootCmd.SetArgs([]string{"job", "delete", jobName, "-b", "true"}) diff --git a/app/cmd/job_edit_test.go b/app/cmd/job_edit_test.go index 21d24d3..520f251 100644 --- a/app/cmd/job_edit_test.go +++ b/app/cmd/job_edit_test.go @@ -107,7 +107,7 @@ var _ = Describe("job edit command", func() { Body: ioutil.NopCloser(bytes.NewBufferString(script)), } roundTripper.EXPECT(). - RoundTrip(remoteJenkinsfileReq).Return(remoteJenkinsfileResponse, nil) + RoundTrip(client.NewRequestMatcher(remoteJenkinsfileReq)).Return(remoteJenkinsfileResponse, nil) rootCmd.SetArgs([]string{"job", "edit", jobName, "--filename", "", "--script", "", "--url", remoteJenkinsfileURL}) diff --git a/app/cmd/job_stop_test.go b/app/cmd/job_stop_test.go index 59c2805..87b8add 100644 --- a/app/cmd/job_stop_test.go +++ b/app/cmd/job_stop_test.go @@ -4,6 +4,7 @@ import ( "bytes" "fmt" "github.com/golang/mock/gomock" + "github.com/jenkins-zh/jenkins-cli/client" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "io/ioutil" @@ -57,7 +58,7 @@ var _ = Describe("job stop command", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) requestCrumb, _ := http.NewRequest("GET", "http://localhost:8080/jenkins/crumbIssuer/api/json", nil) requestCrumb.SetBasicAuth("admin", "111e3a2f0231198855dceaff96f20540a9") @@ -70,7 +71,7 @@ var _ = Describe("job stop command", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(client.NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) rootCmd.SetArgs([]string{"job", "stop", jobName, "1", "-b"}) @@ -99,7 +100,7 @@ var _ = Describe("job stop command", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) requestCrumb, _ := http.NewRequest("GET", "http://localhost:8080/jenkins/crumbIssuer/api/json", nil) requestCrumb.SetBasicAuth("admin", "111e3a2f0231198855dceaff96f20540a9") @@ -112,7 +113,7 @@ var _ = Describe("job stop command", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(client.NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) rootCmd.SetArgs([]string{"job", "stop", jobName, "-b"}) diff --git a/app/cmd/job_type_test.go b/app/cmd/job_type_test.go index 55bc870..867684a 100644 --- a/app/cmd/job_type_test.go +++ b/app/cmd/job_type_test.go @@ -54,7 +54,7 @@ var _ = Describe("job type command", func() { Body: ioutil.NopCloser(bytes.NewBufferString(`{"_class":"jenkins.model.item_category.Categories","categories":[{"description":"description","id":"standalone-projects","items":[{"displayName":"Freestyle project","iconFilePathPattern":"static/da605e5f/images/:size/freestyleproject.png","description":"description","iconClassName":"icon-freestyle-project","class":"hudson.model.FreeStyleProject","order":1}],"minToShow":1,"name":"Nested Projects","order":1}]}`)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) config = &Config{ Current: "fake", @@ -93,7 +93,7 @@ var _ = Describe("job type command", func() { Body: ioutil.NopCloser(bytes.NewBufferString("{}")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) rootCmd.SetArgs([]string{"job", "type"}) @@ -120,7 +120,7 @@ var _ = Describe("job type command", func() { Body: ioutil.NopCloser(bytes.NewBufferString("{}")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) rootCmd.SetArgs([]string{"job", "type"}) @@ -165,7 +165,7 @@ var _ = Describe("job type command", func() { }`)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(client.NewRequestMatcher(request)).Return(response, nil) buf := new(bytes.Buffer) rootCmd.SetOutput(buf) diff --git a/app/helper/error.go b/app/helper/error.go index c56a3c3..97fb0be 100644 --- a/app/helper/error.go +++ b/app/helper/error.go @@ -10,6 +10,8 @@ import ( // Printer for print the info type Printer interface { PrintErr(i ...interface{}) + Println(i ...interface{}) + Printf(format string, i ...interface{}) } // CheckErr print a friendly error message diff --git a/app/helper/error_test.go b/app/helper/error_test.go index 1a0eb27..4797a54 100644 --- a/app/helper/error_test.go +++ b/app/helper/error_test.go @@ -86,6 +86,16 @@ func (p *MemoryPrinter) PrintErr(i ...interface{}) { p.Buffer.WriteString(fmt.Sprintf("%v", i)) } +// Println print the object +func (p *MemoryPrinter) Println(i ...interface{}) { + p.Buffer.WriteString(fmt.Sprintf("%v\n", i)) +} + +// Printf print against a format +func (p *MemoryPrinter) Printf(format string, i ...interface{}) { + p.Buffer.WriteString(fmt.Sprintf(format, i...)) +} + var _ = Describe("CheckErr", func() { var ( printer *MemoryPrinter diff --git a/client/artifacts_test_common.go b/client/artifacts_test_common.go index e049dae..7111b94 100644 --- a/client/artifacts_test_common.go +++ b/client/artifacts_test_common.go @@ -26,7 +26,7 @@ func PrepareGetArtifacts(roundTripper *mhttp.MockRoundTripper, rootURL, user, pa Body: ioutil.NopCloser(bytes.NewBufferString(`[{"id":"n1","name":"a.log","path":"a.log","url":"/job/pipeline/1/artifact/a.log","size":0}]`)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && passwd != "" { request.SetBasicAuth(user, passwd) diff --git a/client/common.go b/client/common.go index 35d6dfb..0923583 100644 --- a/client/common.go +++ b/client/common.go @@ -10,6 +10,7 @@ import ( "io/ioutil" "log" "net/http" + "time" "github.com/jenkins-zh/jenkins-cli/app" "github.com/jenkins-zh/jenkins-cli/util" @@ -26,6 +27,7 @@ func SetLanguage(lan string) { // JenkinsCore core information of Jenkins type JenkinsCore struct { JenkinsCrumb + Timeout time.Duration URL string InsecureSkipVerify bool UserName string @@ -58,7 +60,16 @@ func (j *JenkinsCore) GetClient() (client *http.Client) { } roundTripper = tr } - client = &http.Client{Transport: roundTripper} + + // make sure have a default timeout here + if j.Timeout <= 0 { + j.Timeout = 5 + } + + client = &http.Client{ + Transport: roundTripper, + Timeout: j.Timeout * time.Second, + } return } diff --git a/client/common_test.go b/client/common_test.go index 7e11753..501b5da 100644 --- a/client/common_test.go +++ b/client/common_test.go @@ -55,7 +55,7 @@ var _ = Describe("common test", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) statusCode, data, err := jenkinsCore.Request(method, api, headers, payload) Expect(err).To(BeNil()) @@ -75,7 +75,7 @@ var _ = Describe("common test", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) requestCrumb, _ := http.NewRequest("GET", fmt.Sprintf("%s%s", jenkinsCore.URL, "/crumbIssuer/api/json"), payload) responseCrumb := &http.Response{ @@ -87,7 +87,7 @@ var _ = Describe("common test", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) headers = make(map[string]string, 1) headers["fake"] = "fake" @@ -108,7 +108,7 @@ var _ = Describe("common test", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) _, err := jenkinsCore.GetCrumb() Expect(err).To(HaveOccurred()) @@ -133,7 +133,7 @@ var _ = Describe("common test", func() { // Body: ioutil.NopCloser(bytes.NewBufferString("")), //} //roundTripper.EXPECT(). - // RoundTrip(requestCrumb).Return(responseCrumb, nil) + // RoundTrip(NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) PrepareForGetIssuerWith500(roundTripper, jenkinsCore.URL, "", "") _, err := jenkinsCore.GetCrumb() @@ -159,7 +159,7 @@ var _ = Describe("common test", func() { } request.Header.Set("Accept-Language", "zh-CN") roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) SetLanguage("zh-CN") statusCode, data, err := jenkinsCore.Request("GET", "/view/all/itemCategories?depth=3", nil, nil) @@ -199,7 +199,7 @@ var _ = Describe("common test", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) err := jenkinsCore.CrumbHandle(requestCrumb) Expect(err).To(HaveOccurred()) Expect(err.Error()).To(Equal("unexpected status code: 500")) diff --git a/client/common_test_common.go b/client/common_test_common.go index 5d4e3de..dea8cb9 100644 --- a/client/common_test_common.go +++ b/client/common_test_common.go @@ -19,7 +19,7 @@ func PrepareForGetIssuer(roundTripper *mhttp.MockRoundTripper, rootURL, user, pa Body: ioutil.NopCloser(bytes.NewBufferString(`{"CrumbRequestField":"CrumbRequestField","Crumb":"Crumb"}`)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && password != "" { request.SetBasicAuth(user, password) } diff --git a/client/computer_test_common.go b/client/computer_test_common.go index b7a7128..8eb5a66 100644 --- a/client/computer_test_common.go +++ b/client/computer_test_common.go @@ -21,7 +21,7 @@ func PrepareForComputerListRequest(roundTripper *mhttp.MockRoundTripper, rootURL Body: ioutil.NopCloser(bytes.NewBufferString(PrepareForComputerList())), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && password != "" { request.SetBasicAuth(user, password) } @@ -48,7 +48,7 @@ func PrepareForComputerLogRequestWithCode(roundTripper *mhttp.MockRoundTripper, Body: ioutil.NopCloser(bytes.NewBufferString(`fake-log`)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && password != "" { request.SetBasicAuth(user, password) } diff --git a/client/core_test_common.go b/client/core_test_common.go index 09877e5..6a2dca3 100644 --- a/client/core_test_common.go +++ b/client/core_test_common.go @@ -34,7 +34,7 @@ func PrepareForGetIdentity(roundTripper *mhttp.MockRoundTripper, rootURL, user, {"fingerprint":"fingerprint","publicKey":"publicKey","systemMessage":"systemMessage"}`)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && password != "" { request.SetBasicAuth(user, password) diff --git a/client/credentials_test_common.go b/client/credentials_test_common.go index 7f9a7ee..71a1eba 100644 --- a/client/credentials_test_common.go +++ b/client/credentials_test_common.go @@ -23,7 +23,7 @@ func PrepareForGetCredentialList(roundTripper *mhttp.MockRoundTripper, rootURL, Body: ioutil.NopCloser(bytes.NewBufferString(PrepareForCredentialListJSON())), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && password != "" { request.SetBasicAuth(user, password) } diff --git a/client/job_test.go b/client/job_test.go index 4407a30..fb9c666 100644 --- a/client/job_test.go +++ b/client/job_test.go @@ -71,7 +71,7 @@ var _ = Describe("job test", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) requestCrumb, _ := http.NewRequest("GET", fmt.Sprintf("%s%s", jobClient.URL, "/crumbIssuer/api/json"), nil) responseCrumb := &http.Response{ @@ -83,7 +83,7 @@ var _ = Describe("job test", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) err := jobClient.Build(jobName) Expect(err).To(BeNil()) @@ -100,7 +100,7 @@ var _ = Describe("job test", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) requestCrumb, _ := http.NewRequest("GET", fmt.Sprintf("%s%s", jobClient.URL, "/crumbIssuer/api/json"), nil) responseCrumb := &http.Response{ @@ -112,7 +112,7 @@ var _ = Describe("job test", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) err := jobClient.Build(jobName) Expect(err).To(HaveOccurred()) @@ -134,7 +134,7 @@ var _ = Describe("job test", func() { `)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) result, err := jobClient.GetBuild(jobName, buildID) Expect(err).To(BeNil()) @@ -189,7 +189,7 @@ var _ = Describe("job test", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) requestCrumb, _ := http.NewRequest("GET", fmt.Sprintf("%s%s", jobClient.URL, "/crumbIssuer/api/json"), nil) responseCrumb := &http.Response{ @@ -201,7 +201,7 @@ var _ = Describe("job test", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) err := jobClient.StopJob(jobName, buildID) Expect(err).To(BeNil()) @@ -219,7 +219,7 @@ var _ = Describe("job test", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) requestCrumb, _ := http.NewRequest("GET", fmt.Sprintf("%s%s", jobClient.URL, "/crumbIssuer/api/json"), nil) responseCrumb := &http.Response{ @@ -231,7 +231,7 @@ var _ = Describe("job test", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) err := jobClient.StopJob(jobName, buildID) Expect(err).To(BeNil()) @@ -252,7 +252,7 @@ var _ = Describe("job test", func() { `)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) result, err := jobClient.GetJob(jobName) Expect(err).To(BeNil()) @@ -271,7 +271,7 @@ var _ = Describe("job test", func() { Body: ioutil.NopCloser(bytes.NewBufferString("{}")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) _, err := jobClient.GetJobTypeCategories() Expect(err).To(BeNil()) @@ -335,7 +335,7 @@ var _ = Describe("job test", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) requestCrumb, _ := http.NewRequest("GET", fmt.Sprintf("%s%s", jobClient.URL, "/crumbIssuer/api/json"), nil) responseCrumb := &http.Response{ @@ -347,7 +347,7 @@ var _ = Describe("job test", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) err := jobClient.Delete(jobName) Expect(err).To(BeNil()) diff --git a/client/job_test_common.go b/client/job_test_common.go index 109c8df..17c8740 100644 --- a/client/job_test_common.go +++ b/client/job_test_common.go @@ -25,7 +25,7 @@ func PrepareForGetJobInputActions(roundTripper *mhttp.MockRoundTripper, rootURL, "abortUrl":"/job/test/5/input/Eff7d5dba32b4da32d9a67a519434d3f/abort","redirectApprovalUrl":"/job/test/5/input/"}]`)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && password != "" { request.SetBasicAuth(user, password) @@ -95,7 +95,7 @@ func PrepareForGetJob(roundTripper *mhttp.MockRoundTripper, rootURL, jobName, us }`, jobName))), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && password != "" { request.SetBasicAuth(user, password) } @@ -155,7 +155,7 @@ func PrepareForGetBuild(roundTripper *mhttp.MockRoundTripper, rootURL, jobName s `)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && password != "" { request.SetBasicAuth(user, password) } @@ -180,7 +180,7 @@ func PrepareForJobLog(roundTripper *mhttp.MockRoundTripper, rootURL, jobName str Body: ioutil.NopCloser(bytes.NewBufferString("fake log")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && password != "" { request.SetBasicAuth(user, password) } @@ -196,7 +196,7 @@ func PrepareOneItem(roundTripper *mhttp.MockRoundTripper, rootURL, name, kind, u Body: ioutil.NopCloser(bytes.NewBufferString(`[{"name":"fake","displayName":"fake","description":null,"type":"WorkflowJob","shortURL":"job/fake/","url":"job/fake/"}]`)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && token != "" { request.SetBasicAuth(user, token) } @@ -212,7 +212,7 @@ func PrepareEmptyItems(roundTripper *mhttp.MockRoundTripper, rootURL, name, kind Body: ioutil.NopCloser(bytes.NewBufferString(`[]`)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && token != "" { request.SetBasicAuth(user, token) } @@ -228,7 +228,7 @@ func PrepareForDisableJob(roundTripper *mhttp.MockRoundTripper, rootURL, name, u // Body: ioutil.NopCloser(bytes.NewBufferString(``)), //} //roundTripper.EXPECT(). - // RoundTrip(request).Return(response, nil) + // RoundTrip(NewRequestMatcher(request)).Return(response, nil) //if user != "" && token != "" { // request.SetBasicAuth(user, token) //} @@ -244,7 +244,7 @@ func PrepareForEnableJob(roundTripper *mhttp.MockRoundTripper, rootURL, name, us // Body: ioutil.NopCloser(bytes.NewBufferString(``)), //} //roundTripper.EXPECT(). - // RoundTrip(request).Return(response, nil) + // RoundTrip(NewRequestMatcher(request)).Return(response, nil) //if user != "" && token != "" { // request.SetBasicAuth(user, token) //} diff --git a/client/pluginApi_test_common.go b/client/pluginApi_test_common.go index 0ca0f16..a80401d 100644 --- a/client/pluginApi_test_common.go +++ b/client/pluginApi_test_common.go @@ -22,7 +22,7 @@ func PrepareShowTrend(roundTripper *mhttp.MockRoundTripper, keyword string) ( `)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) return } @@ -64,7 +64,7 @@ func PrepareDownloadPlugin(roundTripper *mhttp.MockRoundTripper) (response *http Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) return } @@ -91,6 +91,6 @@ func PrepareShowPlugins(roundTripper *mhttp.MockRoundTripper, keyword string) ( `)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) return } diff --git a/client/pluginManager_test.go b/client/pluginManager_test.go index 9e016eb..a0aefc4 100644 --- a/client/pluginManager_test.go +++ b/client/pluginManager_test.go @@ -90,7 +90,7 @@ var _ = Describe("PluginManager test", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) _, err := pluginMgr.GetAvailablePlugins() Expect(err).To(HaveOccurred()) diff --git a/client/status_test_common.go b/client/status_test_common.go index 3659176..ce929f0 100644 --- a/client/status_test_common.go +++ b/client/status_test_common.go @@ -19,7 +19,7 @@ func PrepareGetStatus(roundTripper *mhttp.MockRoundTripper, rootURL, user, passw } response.Header.Add("X-Jenkins", "version") roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && password != "" { request.SetBasicAuth(user, password) diff --git a/client/test_methods.go b/client/test_methods.go index dbf585e..0e835db 100644 --- a/client/test_methods.go +++ b/client/test_methods.go @@ -29,7 +29,7 @@ func PrepareForEmptyAvaiablePluginList(roundTripper *mhttp.MockRoundTripper, roo }`)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) return } @@ -99,7 +99,7 @@ func PrepareForEmptyInstalledPluginList(roundTripper *mhttp.MockRoundTripper, ro }`)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) return } @@ -234,7 +234,7 @@ func PrepareCancelQueue(roundTripper *mhttp.MockRoundTripper, rootURL, user, pas Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) PrepareForGetIssuer(roundTripper, rootURL, user, passwd) if user != "" && passwd != "" { @@ -274,7 +274,7 @@ func PrepareGetQueue(roundTripper *mhttp.MockRoundTripper, rootURL, user, passwd }`)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && passwd != "" { request.SetBasicAuth(user, passwd) @@ -355,7 +355,7 @@ func PrepareForRequestUpdateCenter(roundTripper *mhttp.MockRoundTripper, rootURL } `)), } - roundTripper.EXPECT().RoundTrip(requestCenter).Return(responseCenter, nil) + roundTripper.EXPECT().RoundTrip(NewRequestMatcher(requestCenter)).Return(responseCenter, nil) return } @@ -381,7 +381,7 @@ func PrepareForNoAvailablePlugins(roundTripper *mhttp.MockRoundTripper, rootURL } `)), } - roundTripper.EXPECT().RoundTrip(requestCenter).Return(responseCenter, nil) + roundTripper.EXPECT().RoundTrip(NewRequestMatcher(requestCenter)).Return(responseCenter, nil) return } @@ -436,7 +436,7 @@ func PrepareForPipelineJob(roundTripper *mhttp.MockRoundTripper, rootURL, user, Body: ioutil.NopCloser(bytes.NewBufferString(`{"type":null,"displayName":null,"script":"script","sandbox":true}`)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && passwd != "" { request.SetBasicAuth(user, passwd) diff --git a/client/updateCenter_test.go b/client/updateCenter_test.go index d695158..c092873 100644 --- a/client/updateCenter_test.go +++ b/client/updateCenter_test.go @@ -51,7 +51,7 @@ var _ = Describe("update center test", func() { Body: ioutil.NopCloser(bytes.NewBufferString(responseBody)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) err := manager.DownloadJenkins() Expect(err).To(BeNil()) @@ -79,7 +79,7 @@ var _ = Describe("update center test", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCrumb).Return(responseCrumb, nil) + RoundTrip(NewRequestMatcher(requestCrumb)).Return(responseCrumb, nil) request, _ := http.NewRequest("POST", "/updateCenter/upgrade", nil) request.Header.Add("CrumbRequestField", "Crumb") @@ -90,7 +90,7 @@ var _ = Describe("update center test", func() { Body: ioutil.NopCloser(bytes.NewBufferString("")), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) err := manager.Upgrade() Expect(err).To(BeNil()) @@ -112,7 +112,7 @@ var _ = Describe("update center test", func() { `)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) status, err := manager.Status() Expect(err).To(BeNil()) @@ -218,7 +218,7 @@ var _ = Describe("update center test", func() { `)), } roundTripper.EXPECT(). - RoundTrip(requestCenter).Return(responseCenter, nil) + RoundTrip(NewRequestMatcher(requestCenter)).Return(responseCenter, nil) plugins, err := manager.GetSite() Expect(err).To(BeNil()) diff --git a/client/user_test_common.go b/client/user_test_common.go index 2952f7c..ab6ecca 100644 --- a/client/user_test_common.go +++ b/client/user_test_common.go @@ -21,7 +21,7 @@ func PrepareGetUser(roundTripper *mhttp.MockRoundTripper, rootURL, user, passwd Body: ioutil.NopCloser(bytes.NewBufferString(`{"fullName":"admin","description":"fake-description"}`)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip(NewRequestMatcher(request)).Return(response, nil) if user != "" && passwd != "" { request.SetBasicAuth(user, passwd) diff --git a/util/http_test.go b/util/http_test.go index 5b004f4..e343b2f 100644 --- a/util/http_test.go +++ b/util/http_test.go @@ -66,7 +66,7 @@ var _ = Describe("http test", func() { Body: ioutil.NopCloser(bytes.NewBufferString(responseBody)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip((request)).Return(response, nil) err := downloader.DownloadFile() Expect(err).To(BeNil()) @@ -97,7 +97,7 @@ var _ = Describe("http test", func() { Body: ioutil.NopCloser(bytes.NewBufferString(responseBody)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip((request)).Return(response, nil) err := downloader.DownloadFile() Expect(err).To(BeNil()) @@ -126,7 +126,7 @@ var _ = Describe("http test", func() { request, _ := http.NewRequest("GET", "", nil) response := &http.Response{} roundTripper.EXPECT(). - RoundTrip(request).Return(response, fmt.Errorf("fake error")) + RoundTrip((request)).Return(response, fmt.Errorf("fake error")) err := downloader.DownloadFile() Expect(err).To(HaveOccurred()) }) @@ -145,7 +145,7 @@ var _ = Describe("http test", func() { Body: ioutil.NopCloser(bytes.NewBufferString(responseBody)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip((request)).Return(response, nil) err := downloader.DownloadFile() Expect(err).To(HaveOccurred()) @@ -176,7 +176,7 @@ var _ = Describe("http test", func() { Body: ioutil.NopCloser(bytes.NewBufferString(responseBody)), } roundTripper.EXPECT(). - RoundTrip(request).Return(response, nil) + RoundTrip((request)).Return(response, nil) err := downloader.DownloadFile() Expect(err).To(BeNil()) }) -- GitLab