func TestImportImportRequestResponsePairs_CanImportAMultiplePairs(t *testing.T) { RegisterTestingT(t) cache := cache.NewInMemoryCache() cfg := Configuration{Webserver: false} requestMatcher := matching.RequestMatcher{RequestCache: cache, Webserver: &cfg.Webserver} hv := Hoverfly{RequestCache: cache, Cfg: &cfg, RequestMatcher: requestMatcher} RegisterTestingT(t) originalPair1 := v1.RequestResponsePairView{ Response: v1.ResponseDetailsView{ Status: 200, Body: "hello_world", EncodedBody: false, Headers: map[string][]string{"Hoverfly": []string{"testing"}}, }, Request: v1.RequestDetailsView{ Path: StringToPointer("/"), Method: StringToPointer("GET"), Destination: StringToPointer("/"), Scheme: StringToPointer("scheme"), Query: StringToPointer(""), Body: StringToPointer(""), Headers: map[string][]string{"Hoverfly": []string{"testing"}}}} originalPair2 := originalPair1 originalPair2.Request.Path = StringToPointer("/new/path") originalPair3 := originalPair1 originalPair3.Request.Path = StringToPointer("/newer/path") hv.ImportRequestResponsePairViews([]interfaces.RequestResponsePair{originalPair1, originalPair2, originalPair3}) pairBytes, err := cache.Get([]byte("9b114df98da7f7e2afdc975883dab4f2")) Expect(err).To(BeNil()) decodedPair1, err := models.NewRequestResponsePairFromBytes(pairBytes) Expect(err).To(BeNil()) Expect(*decodedPair1).To(Equal(models.NewRequestResponsePairFromRequestResponsePairView(originalPair1))) pairBytes, err = cache.Get([]byte("9c03e4af1f30542ff079a712bddad602")) Expect(err).To(BeNil()) decodedPair2, err := models.NewRequestResponsePairFromBytes(pairBytes) Expect(err).To(BeNil()) Expect(*decodedPair2).To(Equal(models.NewRequestResponsePairFromRequestResponsePairView(originalPair2))) pairBytes, err = cache.Get([]byte("fd099332afee48101edb7441b098cd4a")) Expect(err).To(BeNil()) decodedPair3, err := models.NewRequestResponsePairFromBytes(pairBytes) Expect(err).To(BeNil()) Expect(*decodedPair3).To(Equal(models.NewRequestResponsePairFromRequestResponsePairView(originalPair3))) }
func TestGetNonExistingBucket(t *testing.T) { RegisterTestingT(t) cache := cache.NewBoltDBCache(TestDB, []byte("somebucket")) _, err := cache.Get([]byte("whatever")) Expect(err).ToNot(BeNil()) Expect(err).To(MatchError("Bucket \"somebucket\" not found!")) }
func TestImportRequestResponsePairs_CanImportASinglePair(t *testing.T) { RegisterTestingT(t) cache := cache.NewInMemoryCache() cfg := Configuration{Webserver: false} requestMatcher := matching.RequestMatcher{RequestCache: cache, Webserver: &cfg.Webserver} hv := Hoverfly{RequestCache: cache, Cfg: &cfg, RequestMatcher: requestMatcher} RegisterTestingT(t) originalPair := v1.RequestResponsePairView{ Response: v1.ResponseDetailsView{ Status: 200, Body: "hello_world", EncodedBody: false, Headers: map[string][]string{"Content-Type": []string{"text/plain"}}}, Request: v1.RequestDetailsView{ Path: StringToPointer("/"), Method: StringToPointer("GET"), Destination: StringToPointer("/"), Scheme: StringToPointer("scheme"), Query: StringToPointer(""), Body: StringToPointer(""), Headers: map[string][]string{"Hoverfly": []string{"testing"}}}} hv.ImportRequestResponsePairViews([]interfaces.RequestResponsePair{originalPair}) value, _ := cache.Get([]byte("9b114df98da7f7e2afdc975883dab4f2")) decodedPair, _ := models.NewRequestResponsePairFromBytes(value) Expect(*decodedPair).To(Equal(models.RequestResponsePair{ Response: models.ResponseDetails{ Status: 200, Body: "hello_world", Headers: map[string][]string{"Content-Type": []string{"text/plain"}}, }, Request: models.RequestDetails{ Path: "/", Method: "GET", Destination: "/", Scheme: "scheme", Query: "", Body: "", Headers: map[string][]string{ "Content-Type": []string{"text/plain; charset=utf-8"}, "Hoverfly": []string{"testing"}, }, }, })) }
func TestImportImportRequestResponsePairs_CanImportASingleBase64EncodedPair(t *testing.T) { cache := cache.NewInMemoryCache() cfg := Configuration{Webserver: false} requestMatcher := matching.RequestMatcher{RequestCache: cache, Webserver: &cfg.Webserver} hv := Hoverfly{RequestCache: cache, Cfg: &cfg, RequestMatcher: requestMatcher} RegisterTestingT(t) encodedPair := views.RequestResponsePairView{ Response: views.ResponseDetailsView{ Status: 200, Body: base64String("hello_world"), EncodedBody: true, Headers: map[string][]string{"Content-Encoding": []string{"gzip"}}}, Request: views.RequestDetailsView{ Path: "/", Method: "GET", Destination: "/", Scheme: "scheme", Query: "", Body: "", Headers: map[string][]string{"Hoverfly": []string{"testing"}}}} hv.ImportRequestResponsePairViews([]views.RequestResponsePairView{encodedPair}) value, err := cache.Get([]byte("9b114df98da7f7e2afdc975883dab4f2")) Expect(err).To(BeNil()) decodedPair, err := models.NewRequestResponsePairFromBytes(value) Expect(err).To(BeNil()) Expect(decodedPair).ToNot(Equal(models.RequestResponsePair{ Response: models.ResponseDetails{ Status: 200, Body: "hello_world", Headers: map[string][]string{"Content-Encoding": []string{"gzip"}}}, Request: models.RequestDetails{ Path: "/", Method: "GET", Destination: "/", Scheme: "scheme", Query: "", Body: "", Headers: map[string][]string{"Hoverfly": []string{"testing"}}}})) }