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 ( tcpRouteMappingsHandler *handlers.TcpRouteMappingsHandler request *http.Request responseRecorder *httptest.ResponseRecorder validator *fake_validator.FakeRouteValidator database *fake_db.FakeDB logger *lagertest.TestLogger token *fake_token.FakeToken ) BeforeEach(func() { database = &fake_db.FakeDB{} token = &fake_token.FakeToken{} validator = &fake_validator.FakeRouteValidator{} logger = lagertest.NewTestLogger("routing-api-test") tcpRouteMappingsHandler = handlers.NewTcpRouteMappingsHandler(token, validator, database, logger) responseRecorder = httptest.NewRecorder() }) Describe("Upsert", func() { Context("POST", func() { var ( tcpMapping db.TcpRouteMapping tcpMappings []db.TcpRouteMapping ) BeforeEach(func() { tcpMapping = db.NewTcpRouteMapping("router-group-guid-001", 52000, "1.2.3.4", 60000) tcpMappings = []db.TcpRouteMapping{tcpMapping} })
var ( tcpRouteMappingsHandler *handlers.TcpRouteMappingsHandler request *http.Request responseRecorder *httptest.ResponseRecorder validator *fake_validator.FakeRouteValidator database *fake_db.FakeDB logger *lagertest.TestLogger fakeClient *fake_client.FakeClient ) BeforeEach(func() { database = &fake_db.FakeDB{} fakeClient = &fake_client.FakeClient{} validator = &fake_validator.FakeRouteValidator{} logger = lagertest.NewTestLogger("routing-api-test") tcpRouteMappingsHandler = handlers.NewTcpRouteMappingsHandler(fakeClient, validator, database, 120, logger) responseRecorder = httptest.NewRecorder() }) Describe("Upsert", func() { Context("POST", func() { var ( tcpMapping models.TcpRouteMapping tcpMappings []models.TcpRouteMapping ) BeforeEach(func() { tcpMapping = models.TcpRouteMapping{ TcpRoute: models.TcpRoute{ RouterGroupGuid: "router-group-guid-001", ExternalPort: 52000,