public void MvcRequestLoggingFilter_Constructor_DictionaryHelper_Default()
        {
            //Arrange
            var diagContext = Mock.Of <IDiagnosticContext>();
            var logger      = Mock.Of <ILogger <MvcRequestLoggingFilter> >();
            var dicHelper   = Mock.Of <IDictionaryHelper>();

            //Act
            //System Under Test (SUT)
            var sut = new MvcRequestLoggingFilter(
                diagContext,
                logger,
                dicHelper);

            //Assert
            var expected = dicHelper;
            var actual   = sut.DictionaryHelper;

            Assert.Equal(expected, actual);
        }
        public void MvcRequestLoggingFilter_OnActionExecuting_HostValue()
        {
            var hostValueString = "https://www.testingIsGreat:4444";
            var hostKeyString   = "HttpContext.Request.Host.Value";

            var controllerName = "MyControllerName";
            //Arrange
            var store = new Dictionary <string, object>();

            var diagContext     = Mock.Of <IDiagnosticContext>();
            var logger          = Mock.Of <ILogger <MvcRequestLoggingFilter> >();
            var dicHelperLogger = Mock.Of <ILogger <DictionaryHelper> >();
            var dicHelper       = new Mock <DictionaryHelper>(dicHelperLogger);

            dicHelper
            .Setup(x => x.InitializeValueStore())
            .Returns(store);
            dicHelper.CallBase = true;

            var test = dicHelper.Object.InitializeValueStore();

            var httpContext = new DefaultHttpContext();

            var uri        = new Uri(hostValueString);
            var hostString = HostString.FromUriComponent(uri);

            httpContext.Request.Host = hostString;

            IList <IFilterMetadata>      filters         = new List <IFilterMetadata>();
            IDictionary <string, object> actionArguments = new Dictionary <string, object>();
            object controller = Mock.Of <ControllerBase>();

            var routeData      = new RouteData();
            var ctrlDescriptor = new ControllerActionDescriptor();

            ctrlDescriptor.ActionName                  = "MyActionName";
            ctrlDescriptor.ControllerName              = "ControllerName";
            ctrlDescriptor.DisplayName                 = controllerName;
            ctrlDescriptor.ControllerTypeInfo          = controller.GetType().GetTypeInfo();
            ctrlDescriptor.AttributeRouteInfo          = new AttributeRouteInfo();
            ctrlDescriptor.AttributeRouteInfo.Template = "/abc/this/isroute";

            var actionContext = new ActionContext(
                httpContext,
                routeData,
                ctrlDescriptor);

            var actionExecutingContext = new Mock <ActionExecutingContext>(
                actionContext,
                filters,
                actionArguments,
                controller);

            //System Under Test (SUT)
            var sut = new MvcRequestLoggingFilter(
                diagContext,
                logger,
                dicHelper.Object);

            //Act
            sut.OnActionExecuting(actionExecutingContext.Object);

            //Assert
            var expected = hostString.Value;
            var actual   = store[hostKeyString];

            Assert.Equal(expected, actual);
        }