Example #1
0
        /// <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"));
        }
Example #3
0
        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"));
        }
Example #5
0
        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);
        }
Example #6
0
        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));
        }
Example #10
0
        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));
        }
Example #11
0
        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);
        }
Example #12
0
        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);
        }
Example #13
0
 public CloudFoundryEndpointOwinMiddleware(OwinMiddleware next, CloudFoundryEndpoint endpoint, ILogger <CloudFoundryEndpointOwinMiddleware> logger = null)
     : base(next, endpoint, logger: logger)
 {
     _endpoint = endpoint ?? throw new ArgumentNullException(nameof(endpoint));
 }
Example #14
0
 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));
 }