request = handlers.NewTestRequest(route) routesHandler.Upsert(responseRecorder, request) Expect(responseRecorder.Code).To(Equal(http.StatusCreated)) }) It("accepts a list of routes in the body", func() { route = append(route, route[0]) route[1].IP = "5.4.3.2" request = handlers.NewTestRequest(route) routesHandler.Upsert(responseRecorder, request) Expect(responseRecorder.Code).To(Equal(http.StatusCreated)) Expect(database.SaveRouteCallCount()).To(Equal(2)) Expect(database.SaveRouteArgsForCall(0)).To(Equal(route[0])) Expect(database.SaveRouteArgsForCall(1)).To(Equal(route[1])) }) It("accepts route_service_url parameters", func() { route[0].RouteServiceUrl = "https://my-rs.com" request = handlers.NewTestRequest(route) routesHandler.Upsert(responseRecorder, request) Expect(responseRecorder.Code).To(Equal(http.StatusCreated)) Expect(database.SaveRouteCallCount()).To(Equal(1)) Expect(database.SaveRouteArgsForCall(0)).To(Equal(route[0])) }) It("logs the route declaration", func() { request = handlers.NewTestRequest(route)
process = ifrit.Invoke(routeRegister) }) Context("registration", func() { Context("with no errors", func() { BeforeEach(func() { database.SaveRouteStub = func(route models.Route) error { return nil } }) It("registers the route for a routing api on init", func() { Eventually(database.SaveRouteCallCount).Should(Equal(1)) Eventually(func() models.Route { return database.SaveRouteArgsForCall(0) }).Should(Equal(route)) }) It("registers on an interval", func() { timeChan <- time.Now() Eventually(database.SaveRouteCallCount).Should(Equal(2)) Eventually(func() models.Route { return database.SaveRouteArgsForCall(1) }).Should(Equal(route)) Eventually(logger.Logs).Should(HaveLen(0)) }) }) Context("when there are errors", func() { BeforeEach(func() { database.SaveRouteStub = func(route models.Route) error { return errors.New("beep boop, self destruct mode engaged")