"external_port": float64(52000), } data := map[string]interface{}{ "host_ip": "1.2.3.4", "host_port": float64(60000), "route": routeData, } log_data := map[string][]interface{}{"tcp_mapping_creation": []interface{}{data}} Expect(logger.Logs()[0].Message).To(ContainSubstring("request")) Expect(logger.Logs()[0].Data["tcp_mapping_creation"]).To(Equal(log_data["tcp_mapping_creation"])) }) Context("when database fails to save", func() { BeforeEach(func() { database.SaveTcpRouteMappingReturns(errors.New("stuff broke")) }) It("responds with a server error", func() { request = handlers.NewTestRequest(tcpMappings) tcpRouteMappingsHandler.Upsert(responseRecorder, request) Expect(responseRecorder.Code).To(Equal(http.StatusInternalServerError)) Expect(responseRecorder.Body.String()).To(ContainSubstring("stuff broke")) }) }) }) Context("when there are errors with the input ports", func() { It("blows up when a external port is negative", func() { request = handlers.NewTestRequest(`[{"route":{"router_group_guid": "tcp-default", "external_port": -1}, "host_ip": "10.1.1.12", "host_port": 60000}]`)
"port": float64(52000), "router_group_guid": "router-group-guid-001", "backend_ip": "1.2.3.4", "backend_port": float64(60000), "modification_tag": map[string]interface{}{"guid": "", "index": float64(0)}, "ttl": float64(0), } log_data := map[string][]interface{}{"tcp_mapping_creation": []interface{}{data}} Expect(logger.Logs()[0].Message).To(ContainSubstring("request")) Expect(logger.Logs()[0].Data["tcp_mapping_creation"]).To(Equal(log_data["tcp_mapping_creation"])) }) Context("when database fails to save", func() { BeforeEach(func() { database.SaveTcpRouteMappingReturns(errors.New("stuff broke")) }) It("responds with a server error", func() { request = handlers.NewTestRequest(tcpMappings) tcpRouteMappingsHandler.Upsert(responseRecorder, request) Expect(responseRecorder.Code).To(Equal(http.StatusInternalServerError)) Expect(responseRecorder.Body.String()).To(ContainSubstring("stuff broke")) }) }) Context("when conflict error is returned", func() { BeforeEach(func() { database.SaveTcpRouteMappingReturns(db.ErrorConflict) })