public async void Can_Skip_When_Path_Excluded()
        {
            var contextFake = new DefaultHttpContext();

            contextFake.Request.Headers.Add("X-API-KEY", "WrongValue");

            contextFake.Request.Path = new PathString("/api");

            var middlewareFake = new ApiKeyMiddleware(next: async(innerHttpContext) =>
            {
                await _nextMock(innerHttpContext);
            }
                                                      , setupAction: c =>
            {
                c.ValidApiKeys = new List <string> {
                    "test", "test2"
                };
                c.NameInHeader          = "X-API-KEY";
                c.PathSegmentsToExclude = new List <string> {
                    "/api"
                };
            }
                                                      , logger: _loggerMock);

            await middlewareFake.Invoke(contextFake);

            _nextMock.Received(1);
            _loggerMock.Received(0).Log <Object>(Arg.Any <LogLevel>(), Arg.Is <EventId>(x => x.Id == LoggingEvents.Authentication), Arg.Any <Object>(), Arg.Any <Exception>(), Arg.Any <Func <Object, Exception, string> >());
        }
        public async void Can_Pass_When_Header_ApiKey_Correct()
        {
            var contextFake = new DefaultHttpContext();

            contextFake.Request.Headers.Add("X-API-KEY", "test");

            await _middleware.Invoke(contextFake);

            _nextMock.Received(1);
            _loggerMock.Received(0).Log <Object>(Arg.Any <LogLevel>(), Arg.Is <EventId>(x => x.Id == LoggingEvents.Authentication), Arg.Any <Object>(), Arg.Any <Exception>(), Arg.Any <Func <Object, Exception, string> >());
        }