/// <summary> /// Add Cloud Foundry actuator to OWIN Pipeline /// </summary> /// <param name="builder">Your OWIN <see cref="IAppBuilder"/></param> /// <param name="config">Your application's <see cref="IConfiguration"/></param> /// <param name="mgmtOptions">Shared management options</param> /// <param name="loggerFactory"><see cref="ILoggerFactory"/> for logging within the middleware</param> /// <returns>Your OWIN <see cref="IAppBuilder"/> with Cloud Foundry actuator attached</returns> public static IAppBuilder UseCloudFoundryActuator(this IAppBuilder builder, IConfiguration config, IEnumerable <IManagementOptions> mgmtOptions, ILoggerFactory loggerFactory = null) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (config == null) { throw new ArgumentNullException(nameof(config)); } if (mgmtOptions == null) { mgmtOptions = ManagementOptions.Get(config); } var cloudFoundryOptions = new CloudFoundryEndpointOptions(config); var mgmt = mgmtOptions.OfType <CloudFoundryManagementOptions>().Single(); mgmt.EndpointOptions.Add(cloudFoundryOptions); var endpoint = new CloudFoundryEndpoint(cloudFoundryOptions, mgmtOptions, loggerFactory?.CreateLogger <CloudFoundryEndpoint>()); var logger = loggerFactory?.CreateLogger <CloudFoundryEndpointOwinMiddleware>(); return(builder.Use <CloudFoundryEndpointOwinMiddleware>(endpoint, mgmtOptions, logger)); }
public void CloudFoundryEndpointMiddleware_PathAndVerbMatching_ReturnsExpected() { var opts = new CloudFoundryOptions(); var ep = new CloudFoundryEndpoint(opts); var middle = new CloudFoundryEndpointOwinMiddleware(null, ep); Assert.True(middle.RequestVerbAndPathMatch("GET", "/")); Assert.False(middle.RequestVerbAndPathMatch("PUT", "/")); Assert.False(middle.RequestVerbAndPathMatch("GET", "/badpath")); }
public static void UseCloudFoundryActuator(IConfiguration configuration, ILoggerFactory loggerFactory = null) { var options = new CloudFoundryOptions(configuration); var ep = new CloudFoundryEndpoint(options, CreateLogger <CloudFoundryEndpoint>(loggerFactory)); var handler = new CloudFoundryHandler(ep, SecurityService, CreateLogger <CloudFoundryHandler>(loggerFactory)); ConfiguredHandlers.Add(handler); var handler2 = new CloudFoundryCorsHandler(options, SecurityService, CreateLogger <CloudFoundryCorsHandler>(loggerFactory)); ConfiguredHandlers.Add(handler2); }
public void CloudFoundryEndpointMiddleware_PathAndVerbMatching_ReturnsExpected() { var opts = new CloudFoundryEndpointOptions(); var mgmtOptions = TestHelpers.GetManagementOptions(opts); var ep = new CloudFoundryEndpoint(opts, mgmtOptions); var middle = new CloudFoundryEndpointMiddleware(null, ep, mgmtOptions); Assert.True(middle.RequestVerbAndPathMatch("GET", "/cloudfoundryapplication")); Assert.False(middle.RequestVerbAndPathMatch("PUT", "/cloudfoundryapplication")); Assert.False(middle.RequestVerbAndPathMatch("GET", "/cloudfoundryapplication/badpath")); }
public void Invoke_OnlyCloudFoundryEndpoint_ReturnsExpectedLinks() { var cloudOpts = new CloudFoundryEndpointOptions(); var mgmtOptions = TestHelper.GetManagementOptions(cloudOpts); var ep = new CloudFoundryEndpoint(cloudOpts, mgmtOptions); var info = ep.Invoke("http://localhost:5000/foobar"); Assert.NotNull(info); Assert.NotNull(info._links); Assert.True(info._links.ContainsKey("self")); Assert.Equal("http://localhost:5000/foobar", info._links["self"].href); Assert.Single(info._links); }
public void Invoke_CloudFoundryDisable_ReturnsExpectedLinks() { var infoOpts = new InfoEndpointOptions { Enabled = true }; var cloudOpts = new CloudFoundryEndpointOptions { Enabled = false }; var mgmtOptions = TestHelper.GetManagementOptions(infoOpts, cloudOpts); var ep = new CloudFoundryEndpoint(cloudOpts, mgmtOptions); var info = ep.Invoke("http://localhost:5000/foobar"); Assert.NotNull(info); Assert.NotNull(info._links); Assert.Empty(info._links); }
public void Invoke_CloudFoundryDisable_ReturnsExpectedLinks() { var infoOpts = new InfoOptions(); infoOpts.Enabled = true; var cloudOpts = new CloudFoundryOptions(); cloudOpts.Enabled = false; var ep = new CloudFoundryEndpoint(cloudOpts); var info = ep.Invoke("http://localhost:5000/foobar"); Assert.NotNull(info); Assert.NotNull(info._links); Assert.Equal(0, info._links.Count); }
public void Invoke_ReturnsExpectedLinks() { var infoOpts = new InfoOptions(); var cloudOpts = new CloudFoundryOptions(); var ep = new CloudFoundryEndpoint(cloudOpts, null); var info = ep.Invoke("http://localhost:5000/foobar"); Assert.NotNull(info); Assert.NotNull(info._links); Assert.True(info._links.ContainsKey("self")); Assert.Equal("http://localhost:5000/foobar", info._links["self"].href); Assert.True(info._links.ContainsKey("info")); Assert.Equal("http://localhost:5000/foobar/info", info._links["info"].href); Assert.Equal(2, info._links.Count); }
/// <summary> /// Add Cloud Foundry actuator to OWIN Pipeline /// </summary> /// <param name="builder">Your OWIN <see cref="IAppBuilder"/></param> /// <param name="config">Your application's <see cref="IConfiguration"/></param> /// <param name="loggerFactory"><see cref="ILoggerFactory"/> for logging within the middleware</param> /// <returns>Your OWIN <see cref="IAppBuilder"/> with Cloud Foundry actuator attached</returns> public static IAppBuilder UseCloudFoundryActuator(this IAppBuilder builder, IConfiguration config, ILoggerFactory loggerFactory = null) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (config == null) { throw new ArgumentNullException(nameof(config)); } var endpoint = new CloudFoundryEndpoint(new CloudFoundryOptions(config), loggerFactory?.CreateLogger <CloudFoundryEndpoint>()); var logger = loggerFactory?.CreateLogger <CloudFoundryEndpointOwinMiddleware>(); return(builder.Use <CloudFoundryEndpointOwinMiddleware>(endpoint, logger)); }
public void IsCloudFoundryRequest_ReturnsExpected() { var opts = new CloudFoundryOptions(); var ep = new CloudFoundryEndpoint(opts); var middle = new CloudFoundryEndpointMiddleware(null, ep); var context = CreateRequest("GET", "/"); Assert.True(middle.IsCloudFoundryRequest(context)); var context2 = CreateRequest("PUT", "/"); Assert.False(middle.IsCloudFoundryRequest(context2)); var context3 = CreateRequest("GET", "/badpath"); Assert.False(middle.IsCloudFoundryRequest(context3)); }
public void Invoke_HonorsEndpointEnabled_ReturnsExpectedLinks() { var infoOpts = new InfoOptions { Enabled = false }; var cloudOpts = new CloudFoundryOptions(); var ep = new CloudFoundryEndpoint(cloudOpts); var info = ep.Invoke("http://localhost:5000/foobar"); Assert.NotNull(info); Assert.NotNull(info._links); Assert.True(info._links.ContainsKey("self")); Assert.Equal("http://localhost:5000/foobar", info._links["self"].href); Assert.False(info._links.ContainsKey("info")); Assert.Single(info._links); }
public static void UseCloudFoundryActuator(IConfiguration configuration, ILoggerFactory loggerFactory = null) { var options = new CloudFoundryEndpointOptions(configuration); var managementOptions = _mgmtOptions.OfType <CloudFoundryManagementOptions>().SingleOrDefault(); if (managementOptions == null) { managementOptions = new CloudFoundryManagementOptions(configuration, Platform.IsCloudFoundry); _mgmtOptions.Add(managementOptions); } managementOptions.EndpointOptions.Add(options); var ep = new CloudFoundryEndpoint(options, _mgmtOptions, CreateLogger <CloudFoundryEndpoint>(loggerFactory)); var handler = new CloudFoundryHandler(ep, SecurityServices, _mgmtOptions, CreateLogger <CloudFoundryHandler>(loggerFactory)); ConfiguredHandlers.Add(handler); var handler2 = new CloudFoundryCorsHandler(options, SecurityServices, _mgmtOptions, CreateLogger <CloudFoundryCorsHandler>(loggerFactory)); ConfiguredHandlers.Add(handler2); }
public CloudFoundryEndpointOwinMiddleware(OwinMiddleware next, CloudFoundryEndpoint endpoint, ILogger <CloudFoundryEndpointOwinMiddleware> logger = null) : base(next, endpoint, logger: logger) { _endpoint = endpoint ?? throw new ArgumentNullException(nameof(endpoint)); }
public CloudFoundryEndpointOwinMiddleware(OwinMiddleware next, CloudFoundryEndpoint endpoint, IEnumerable <IManagementOptions> mgmtOptions, ILogger <CloudFoundryEndpointOwinMiddleware> logger = null) : base(next, endpoint, mgmtOptions?.OfType <CloudFoundryManagementOptions>(), logger: logger) { _endpoint = endpoint ?? throw new ArgumentNullException(nameof(endpoint)); }