func constructApiServer(cfg config.Config, database db.DB, statsdClient statsd.Statter, stopChan chan struct{}, logger lager.Logger) ifrit.Runner { var tokenValidator authentication.TokenValidator if *devMode { tokenValidator = authentication.NullTokenValidator{} } else { uaaKeyFetcher := authentication.NewUaaKeyFetcher(logger, cfg.UAAEndpoint+"/token_key") uaaPublicKey, err := uaaKeyFetcher.FetchKey() if err != nil { logger.Error("Failed to get verification key from UAA", err) os.Exit(1) } tokenValidator = authentication.NewAccessTokenValidator(logger, uaaPublicKey, uaaKeyFetcher) err = tokenValidator.CheckPublicToken() if err != nil { logger.Error("Failed to check public token", err) os.Exit(1) } } validator := handlers.NewValidator() routesHandler := handlers.NewRoutesHandler(tokenValidator, *maxTTL, validator, database, logger) eventStreamHandler := handlers.NewEventStreamHandler(tokenValidator, database, logger, statsdClient, stopChan) routeGroupsHandler := handlers.NewRouteGroupsHandler(tokenValidator, logger) tcpMappingsHandler := handlers.NewTcpRouteMappingsHandler(tokenValidator, validator, database, logger) actions := rata.Handlers{ routing_api.UpsertRoute: route(routesHandler.Upsert), routing_api.DeleteRoute: route(routesHandler.Delete), routing_api.ListRoute: route(routesHandler.List), routing_api.EventStreamRoute: route(eventStreamHandler.EventStream), routing_api.ListRouterGroups: route(routeGroupsHandler.ListRouterGroups), routing_api.UpsertTcpRouteMapping: route(tcpMappingsHandler.Upsert), routing_api.DeleteTcpRouteMapping: route(tcpMappingsHandler.Delete), routing_api.ListTcpRouteMapping: route(tcpMappingsHandler.List), routing_api.EventStreamTcpRoute: route(eventStreamHandler.TcpEventStream), } handler, err := rata.NewRouter(routing_api.Routes, actions) if err != nil { logger.Error("failed to create router", err) os.Exit(1) } handler = handlers.LogWrap(handler, logger) return http_server.New(":"+strconv.Itoa(int(*port)), handler) }
func constructApiServer(cfg config.Config, database db.DB, statsdClient statsd.Statter, logger lager.Logger) ifrit.Runner { uaaClient, err := newUaaClient(logger, cfg) if err != nil { logger.Error("Failed to create uaa client", err) os.Exit(1) } _, err = uaaClient.FetchKey() if err != nil { logger.Error("Failed to get verification key from UAA", err) os.Exit(1) } validator := handlers.NewValidator() routesHandler := handlers.NewRoutesHandler(uaaClient, int(maxTTL.Seconds()), validator, database, logger) eventStreamHandler := handlers.NewEventStreamHandler(uaaClient, database, logger, statsdClient) routeGroupsHandler := handlers.NewRouteGroupsHandler(uaaClient, logger, database) tcpMappingsHandler := handlers.NewTcpRouteMappingsHandler(uaaClient, validator, database, int(maxTTL.Seconds()), logger) actions := rata.Handlers{ routing_api.UpsertRoute: route(routesHandler.Upsert), routing_api.DeleteRoute: route(routesHandler.Delete), routing_api.ListRoute: route(routesHandler.List), routing_api.EventStreamRoute: route(eventStreamHandler.EventStream), routing_api.ListRouterGroups: route(routeGroupsHandler.ListRouterGroups), routing_api.UpsertTcpRouteMapping: route(tcpMappingsHandler.Upsert), routing_api.DeleteTcpRouteMapping: route(tcpMappingsHandler.Delete), routing_api.ListTcpRouteMapping: route(tcpMappingsHandler.List), routing_api.EventStreamTcpRoute: route(eventStreamHandler.TcpEventStream), } handler, err := rata.NewRouter(routing_api.Routes, actions) if err != nil { logger.Error("failed to create router", err) os.Exit(1) } handler = handlers.LogWrap(handler, logger) return http_server.New(":"+strconv.Itoa(int(*port)), handler) }
) var _ = Describe("RouterGroupsHandler", func() { var ( routerGroupHandler *handlers.RouterGroupsHandler request *http.Request responseRecorder *httptest.ResponseRecorder token *fake_token.FakeToken logger *lagertest.TestLogger ) BeforeEach(func() { logger = lagertest.NewTestLogger("test-router-group") token = &fake_token.FakeToken{} routerGroupHandler = handlers.NewRouteGroupsHandler(token, logger) responseRecorder = httptest.NewRecorder() }) Describe("ListRouterGroups", func() { It("responds with 200 OK and returns default router group details", func() { var err error request, err = http.NewRequest("GET", routing_api.ListRouterGroups, nil) Expect(err).NotTo(HaveOccurred()) routerGroupHandler.ListRouterGroups(responseRecorder, request) Expect(responseRecorder.Code).To(Equal(http.StatusOK)) payload := responseRecorder.Body.String() Expect(payload).To(MatchJSON(`[ { "guid": "bad25cff-9332-48a6-8603-b619858e7992", "name": "default_tcp",
var _ = Describe("RouterGroupsHandler", func() { var ( routerGroupHandler *handlers.RouterGroupsHandler request *http.Request responseRecorder *httptest.ResponseRecorder fakeClient *fake_client.FakeClient fakeDb *fake_db.FakeDB logger *lagertest.TestLogger ) BeforeEach(func() { logger = lagertest.NewTestLogger("test-router-group") fakeClient = &fake_client.FakeClient{} fakeDb = &fake_db.FakeDB{} routerGroupHandler = handlers.NewRouteGroupsHandler(fakeClient, logger, fakeDb) responseRecorder = httptest.NewRecorder() fakeRouterGroups := []models.RouterGroup{ { Guid: DefaultRouterGroupGuid, Name: DefaultRouterGroupName, Type: DefaultRouterGroupType, ReservablePorts: "1024-65535", }, } fakeDb.ReadRouterGroupsReturns(fakeRouterGroups, nil) }) Describe("ListRouterGroups", func() { It("responds with 200 OK and returns default router group details", func() {