summaryrefslogtreecommitdiff
path: root/vendor/github.com/onsi/ginkgo/internal/remote/forwarding_reporter_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/onsi/ginkgo/internal/remote/forwarding_reporter_test.go')
-rw-r--r--vendor/github.com/onsi/ginkgo/internal/remote/forwarding_reporter_test.go181
1 files changed, 181 insertions, 0 deletions
diff --git a/vendor/github.com/onsi/ginkgo/internal/remote/forwarding_reporter_test.go b/vendor/github.com/onsi/ginkgo/internal/remote/forwarding_reporter_test.go
new file mode 100644
index 000000000..0d7e4769c
--- /dev/null
+++ b/vendor/github.com/onsi/ginkgo/internal/remote/forwarding_reporter_test.go
@@ -0,0 +1,181 @@
+package remote_test
+
+import (
+ "encoding/json"
+
+ . "github.com/onsi/ginkgo"
+ "github.com/onsi/ginkgo/config"
+ . "github.com/onsi/ginkgo/internal/remote"
+ "github.com/onsi/ginkgo/types"
+ . "github.com/onsi/gomega"
+)
+
+var _ = Describe("ForwardingReporter", func() {
+ var (
+ reporter *ForwardingReporter
+ interceptor *fakeOutputInterceptor
+ poster *fakePoster
+ suiteSummary *types.SuiteSummary
+ specSummary *types.SpecSummary
+ setupSummary *types.SetupSummary
+ serverHost string
+ )
+
+ BeforeEach(func() {
+ serverHost = "http://127.0.0.1:7788"
+
+ poster = newFakePoster()
+
+ interceptor = &fakeOutputInterceptor{
+ InterceptedOutput: "The intercepted output!",
+ }
+
+ reporter = NewForwardingReporter(config.DefaultReporterConfigType{}, serverHost, poster, interceptor, nil, "")
+
+ suiteSummary = &types.SuiteSummary{
+ SuiteDescription: "My Test Suite",
+ }
+
+ setupSummary = &types.SetupSummary{
+ State: types.SpecStatePassed,
+ }
+
+ specSummary = &types.SpecSummary{
+ ComponentTexts: []string{"My", "Spec"},
+ State: types.SpecStatePassed,
+ }
+ })
+
+ Context("When a suite begins", func() {
+ BeforeEach(func() {
+ reporter.SpecSuiteWillBegin(config.GinkgoConfig, suiteSummary)
+ })
+
+ It("should start intercepting output", func() {
+ Ω(interceptor.DidStartInterceptingOutput).Should(BeTrue())
+ })
+
+ It("should POST the SuiteSummary and Ginkgo Config to the Ginkgo server", func() {
+ Ω(poster.posts).Should(HaveLen(1))
+ Ω(poster.posts[0].url).Should(Equal("http://127.0.0.1:7788/SpecSuiteWillBegin"))
+ Ω(poster.posts[0].bodyType).Should(Equal("application/json"))
+
+ var sentData struct {
+ SentConfig config.GinkgoConfigType `json:"config"`
+ SentSuiteSummary *types.SuiteSummary `json:"suite-summary"`
+ }
+
+ err := json.Unmarshal(poster.posts[0].bodyContent, &sentData)
+ Ω(err).ShouldNot(HaveOccurred())
+
+ Ω(sentData.SentConfig).Should(Equal(config.GinkgoConfig))
+ Ω(sentData.SentSuiteSummary).Should(Equal(suiteSummary))
+ })
+ })
+
+ Context("when a BeforeSuite completes", func() {
+ BeforeEach(func() {
+ reporter.BeforeSuiteDidRun(setupSummary)
+ })
+
+ It("should stop, then start intercepting output", func() {
+ Ω(interceptor.DidStopInterceptingOutput).Should(BeTrue())
+ Ω(interceptor.DidStartInterceptingOutput).Should(BeTrue())
+ })
+
+ It("should POST the SetupSummary to the Ginkgo server", func() {
+ Ω(poster.posts).Should(HaveLen(1))
+ Ω(poster.posts[0].url).Should(Equal("http://127.0.0.1:7788/BeforeSuiteDidRun"))
+ Ω(poster.posts[0].bodyType).Should(Equal("application/json"))
+
+ var summary *types.SetupSummary
+ err := json.Unmarshal(poster.posts[0].bodyContent, &summary)
+ Ω(err).ShouldNot(HaveOccurred())
+ setupSummary.CapturedOutput = interceptor.InterceptedOutput
+ Ω(summary).Should(Equal(setupSummary))
+ })
+ })
+
+ Context("when an AfterSuite completes", func() {
+ BeforeEach(func() {
+ reporter.AfterSuiteDidRun(setupSummary)
+ })
+
+ It("should stop, then start intercepting output", func() {
+ Ω(interceptor.DidStopInterceptingOutput).Should(BeTrue())
+ Ω(interceptor.DidStartInterceptingOutput).Should(BeTrue())
+ })
+
+ It("should POST the SetupSummary to the Ginkgo server", func() {
+ Ω(poster.posts).Should(HaveLen(1))
+ Ω(poster.posts[0].url).Should(Equal("http://127.0.0.1:7788/AfterSuiteDidRun"))
+ Ω(poster.posts[0].bodyType).Should(Equal("application/json"))
+
+ var summary *types.SetupSummary
+ err := json.Unmarshal(poster.posts[0].bodyContent, &summary)
+ Ω(err).ShouldNot(HaveOccurred())
+ setupSummary.CapturedOutput = interceptor.InterceptedOutput
+ Ω(summary).Should(Equal(setupSummary))
+ })
+ })
+
+ Context("When a spec will run", func() {
+ BeforeEach(func() {
+ reporter.SpecWillRun(specSummary)
+ })
+
+ It("should POST the SpecSummary to the Ginkgo server", func() {
+ Ω(poster.posts).Should(HaveLen(1))
+ Ω(poster.posts[0].url).Should(Equal("http://127.0.0.1:7788/SpecWillRun"))
+ Ω(poster.posts[0].bodyType).Should(Equal("application/json"))
+
+ var summary *types.SpecSummary
+ err := json.Unmarshal(poster.posts[0].bodyContent, &summary)
+ Ω(err).ShouldNot(HaveOccurred())
+ Ω(summary).Should(Equal(specSummary))
+ })
+
+ Context("When a spec completes", func() {
+ BeforeEach(func() {
+ specSummary.State = types.SpecStatePanicked
+ reporter.SpecDidComplete(specSummary)
+ })
+
+ It("should POST the SpecSummary to the Ginkgo server and include any intercepted output", func() {
+ Ω(poster.posts).Should(HaveLen(2))
+ Ω(poster.posts[1].url).Should(Equal("http://127.0.0.1:7788/SpecDidComplete"))
+ Ω(poster.posts[1].bodyType).Should(Equal("application/json"))
+
+ var summary *types.SpecSummary
+ err := json.Unmarshal(poster.posts[1].bodyContent, &summary)
+ Ω(err).ShouldNot(HaveOccurred())
+ specSummary.CapturedOutput = interceptor.InterceptedOutput
+ Ω(summary).Should(Equal(specSummary))
+ })
+
+ It("should stop, then start intercepting output", func() {
+ Ω(interceptor.DidStopInterceptingOutput).Should(BeTrue())
+ Ω(interceptor.DidStartInterceptingOutput).Should(BeTrue())
+ })
+ })
+ })
+
+ Context("When a suite ends", func() {
+ BeforeEach(func() {
+ reporter.SpecSuiteDidEnd(suiteSummary)
+ })
+
+ It("should POST the SuiteSummary to the Ginkgo server", func() {
+ Ω(poster.posts).Should(HaveLen(1))
+ Ω(poster.posts[0].url).Should(Equal("http://127.0.0.1:7788/SpecSuiteDidEnd"))
+ Ω(poster.posts[0].bodyType).Should(Equal("application/json"))
+
+ var summary *types.SuiteSummary
+
+ err := json.Unmarshal(poster.posts[0].bodyContent, &summary)
+ Ω(err).ShouldNot(HaveOccurred())
+
+ Ω(summary).Should(Equal(suiteSummary))
+ })
+ })
+})