From 8e305980b77750b72d428ffb8f38d7a302e7b64c Mon Sep 17 00:00:00 2001 From: Duong Pham Date: Mon, 19 Sep 2022 14:57:05 +0700 Subject: [PATCH] feat: add function to get playbackURL and clean up comments --- README.md | 2 +- servirtium.go | 41 ++++++++++++----------------------------- servirtium_test.go | 26 ++++++++++++++++++++++---- 3 files changed, 35 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index f89ee0f..fd325ae 100644 --- a/README.md +++ b/README.md @@ -151,4 +151,4 @@ func (s *ClimateTestSuiteDirect) TestAverageRainfallForGreatBritainFrom1980to199 s.Equal(expected, directResult) s.Nil(directErr) } -``` \ No newline at end of file +``` diff --git a/servirtium.go b/servirtium.go index 3447178..eaae6a5 100644 --- a/servirtium.go +++ b/servirtium.go @@ -55,19 +55,17 @@ func NewServirtium() *Impl { } } -// StartPlayback ... func (s *Impl) StartPlayback(recordFileName string, servirtiumPort int) { s.initServerPlaybackOnPort(recordFileName, servirtiumPort) - log.Fatal(s.ServerPlayback.ListenAndServe()) + go s.ServerPlayback.ListenAndServe() } -// EndPlayback ... func (s *Impl) EndPlayback() { s.ServerPlayback.Shutdown(context.TODO()) } -func (s *Impl) initServerPlayback(recordFileName string) { - s.initServerPlaybackOnPort(recordFileName, 61417) +func (s *Impl) GetPlaybackURL() string { + return fmt.Sprintf("http://%s", s.ServerPlayback.Addr) } func (s *Impl) initServerPlaybackOnPort(recordFileName string, servirtiumPort int) { @@ -128,7 +126,8 @@ func (s *Impl) getPlaybackResponse(data string) (string, map[string]string, stri } if strings.HasPrefix(v, "Response body recorded for playback") { responseBody = strings.TrimSpace(strings.Split(v, "```")[1]) - statusCode = strings.Split(strings.Split(v, "(")[1], ": ")[0] + statusPart := strings.Split(v, "(")[1] + statusCode = strings.Split(statusPart, " :")[0] } } return responseBody, responseHeaders, statusCode @@ -186,17 +185,14 @@ func (s *Impl) playbackHandler(recordFileName string) func(w http.ResponseWriter w.WriteHeader(statusCode) _, _ = w.Write([]byte(callerResponseBody)) - return } } -// StartRecord ... func (s *Impl) StartRecord(apiURL string, servirtiumPort int) { s.initRecordServerOnPort(apiURL, servirtiumPort) - log.Fatal(s.ServerRecord.ListenAndServe()) + go s.ServerRecord.ListenAndServe() } -// WriteRecord ... func (s *Impl) WriteRecord(recordFileName string) { workingPath, err := os.Getwd() if err != nil { @@ -213,15 +209,10 @@ func (s *Impl) WriteRecord(recordFileName string) { } } -// EndRecord ... func (s *Impl) EndRecord() { s.ServerRecord.Shutdown(context.TODO()) } -func (s *Impl) initRecordServer(apiURL string) { - s.initRecordServerOnPort(apiURL, 61417) -} - func (s *Impl) initRecordServerOnPort(apiURL string, servirtiumPort int) { r := mux.NewRouter() r.PathPrefix("/").HandlerFunc(s.recordHandler(apiURL)) @@ -304,9 +295,14 @@ func (s *Impl) recordHandler(apiURL string) func(w http.ResponseWriter, r *http. // Make a request proxyRequest, err := http.NewRequest(r.Method, url, bytes.NewReader([]byte(proxyRequestBody))) + if err != nil { + log.Fatal(err) + } proxyRequest.Header = newCallerProxyRequestHeader response, err := http.DefaultClient.Do(proxyRequest) - + if err != nil { + log.Fatal(err) + } // Clone response body responseBody, err := ioutil.ReadAll(response.Body) if err != nil { @@ -356,7 +352,6 @@ func (s *Impl) recordHandler(apiURL string) func(w http.ResponseWriter, r *http. } } -// checkMarkdownExists ... func (s *Impl) checkMarkdownExists(path string) bool { if _, err := os.Stat(path); err != nil { if os.IsNotExist(err) { @@ -406,62 +401,50 @@ func (s *Impl) record(params recordData) { s.interactionSequence = s.interactionSequence + 1 } -// SetCallerRequestHeadersRemoval ... func (s *Impl) SetCallerRequestHeadersRemoval(headers []string) { s.callerRequestHeadersRemoval = headers } -// SetCallerRequestHeaderReplacements ... func (s *Impl) SetCallerRequestHeaderReplacements(replaceRegex map[*regexp.Regexp]string) { s.callerRequestHeaderReplacements = replaceRegex } -// SetCallerRequestBodyReplacement ... func (s *Impl) SetCallerRequestBodyReplacement(replaceRegex map[*regexp.Regexp]string) { s.callerRequestBodyReplacement = replaceRegex } -// SetRecordRequestHeadersRemoval ... func (s *Impl) SetRecordRequestHeadersRemoval(headers []string) { s.recordRequestHeadersRemoval = headers } -// SetRecordRequestHeaderReplacements ... func (s *Impl) SetRecordRequestHeaderReplacements(replaceRegex map[*regexp.Regexp]string) { s.recordRequestHeaderReplacements = replaceRegex } -// SetRecordRequestBodyReplacement ... func (s *Impl) SetRecordRequestBodyReplacement(replaceRegex map[*regexp.Regexp]string) { s.recordRequestBodyReplacement = replaceRegex } -// SetCallerResponseHeadersRemoval ... func (s *Impl) SetCallerResponseHeadersRemoval(headers []string) { s.callerResponseHeadersRemoval = headers } -// SetCallerResponseHeaderReplacements ... func (s *Impl) SetCallerResponseHeaderReplacements(replaceRegex map[*regexp.Regexp]string) { s.callerResponseHeaderReplacements = replaceRegex } -// SetCallerResponseBodyReplacement ... func (s *Impl) SetCallerResponseBodyReplacement(replaceRegex map[*regexp.Regexp]string) { s.callerResponseBodyReplacement = replaceRegex } -// SetRecordResponseHeadersRemoval ... func (s *Impl) SetRecordResponseHeadersRemoval(headers []string) { s.recordResponseHeadersRemoval = headers } -// SetRecordResponseHeaderReplacements ... func (s *Impl) SetRecordResponseHeaderReplacements(replaceRegex map[*regexp.Regexp]string) { s.recordResponseHeaderReplacements = replaceRegex } -// SetRecordResponseBodyReplacement ... func (s *Impl) SetRecordResponseBodyReplacement(replaceRegex map[*regexp.Regexp]string) { s.recordResponseBodyReplacement = replaceRegex } diff --git a/servirtium_test.go b/servirtium_test.go index 6cb7a0a..1e5c2f0 100644 --- a/servirtium_test.go +++ b/servirtium_test.go @@ -25,8 +25,14 @@ func (s *ServirtiumTestSuite) SetupTest() { s.servirtium = servirtium } -func (s *ServirtiumTestSuite) TestInitServerPlayback() { - s.servirtium.initServerPlayback("mockName") +func (s *ServirtiumTestSuite) TestInitServerPlaybackOnPort() { + s.servirtium.initServerPlaybackOnPort("mockName", 61416) + s.NotNil(s.servirtium.ServerPlayback) + s.servirtium.EndPlayback() +} + +func (s *ServirtiumTestSuite) TestStartServerPlaybackOnPort() { + s.servirtium.StartPlayback("mockName", 61416) s.NotNil(s.servirtium.ServerPlayback) s.servirtium.EndPlayback() } @@ -36,8 +42,20 @@ func (s *ServirtiumTestSuite) TestAnualAvgHandlerPlayback() { s.NotNil(result) } -func (s *ServirtiumTestSuite) TestInitRecordServer() { - s.servirtium.initRecordServer("https://google.com") +func (s *ServirtiumTestSuite) TestGetPlaybackURL() { + s.servirtium.initServerPlaybackOnPort("mockName", 61417) + result := s.servirtium.GetPlaybackURL() + s.NotNil(result) +} + +func (s *ServirtiumTestSuite) TestInitRecordServerOnPort() { + s.servirtium.initRecordServerOnPort("https://google.com", 61418) + s.NotNil(s.servirtium.ServerRecord) + s.servirtium.EndRecord() +} + +func (s *ServirtiumTestSuite) TesStartRecordServerOnPort() { + s.servirtium.initRecordServerOnPort("https://google.com", 61419) s.NotNil(s.servirtium.ServerRecord) s.servirtium.EndRecord() }