routesHandler.Delete(responseRecorder, request) _, permission := token.DecodeTokenArgsForCall(0) Expect(permission).To(ConsistOf(handlers.AdvertiseRouteScope, handlers.AdminRouteScope)) }) Context("when all inputs are present and correct", func() { It("returns a status not found when deleting a route", func() { request = handlers.NewTestRequest(route) routesHandler.Delete(responseRecorder, request) Expect(responseRecorder.Code).To(Equal(http.StatusNoContent)) Expect(database.DeleteRouteCallCount()).To(Equal(1)) Expect(database.DeleteRouteArgsForCall(0)).To(Equal(route[0])) }) It("accepts an array of routes in the body", func() { route = append(route, route[0]) route[1].IP = "5.4.3.2" request = handlers.NewTestRequest(route) routesHandler.Delete(responseRecorder, request) Expect(responseRecorder.Code).To(Equal(http.StatusNoContent)) Expect(database.DeleteRouteCallCount()).To(Equal(2)) Expect(database.DeleteRouteArgsForCall(0)).To(Equal(route[0])) Expect(database.DeleteRouteArgsForCall(1)).To(Equal(route[1])) })
return errors.New("beep boop, self destruct mode engaged") } }) It("only logs the error once for each attempt", func() { Consistently(func() int { return len(logger.Logs()) }).Should(BeNumerically("<=", 1)) Eventually(func() string { if len(logger.Logs()) > 0 { return logger.Logs()[0].Data["error"].(string) } else { return "" } }).Should(ContainSubstring("beep boop, self destruct mode engaged")) }) }) }) Context("unregistration", func() { It("unregisters the routing api when a SIGTERM is received", func() { process.Signal(syscall.SIGTERM) Eventually(database.DeleteRouteCallCount).Should(Equal(1)) Eventually(func() models.Route { return database.DeleteRouteArgsForCall(0) }).Should(Equal(route)) }) }) }) })