public void Invalid_Header_Provider_FQDN_Invalid()
        {
            var requestMock = new Mock <HttpRequest>();

            requestMock.Setup(x => x.Method).Returns("GET");
            requestMock.Setup(x => x.Path).Returns(new PathString("/nrls-ri/SSP/https%3A%2F%2Ftest888-invalid.domain.com%2Fbinary%2Ffile%2F0001"));
            requestMock.Setup(x => x.Headers).Returns(new HeaderDictionary()
            {
                { HeaderNames.Authorization, "valid-jwt" },
                { FhirConstants.HeaderSspFromAsid, "000" },
                { FhirConstants.HeaderSspToAsid, "888" },
                { FhirConstants.HeaderSspTradeId, "valid-trace" },
                { FhirConstants.HeaderSspInterationId, "valid-interaction" }
            });

            var contextMock = new Mock <HttpContext>();

            contextMock.Setup(x => x.Request).Returns(requestMock.Object);

            var sspAProxyGateMiddleware = new SspProxyGateMiddleware(next: (innerHttpContext) => Task.FromResult(0), sdsService: _sdsService, nrlsValidation: _nrlsValidation);

            //Test will fail if invalid
            Assert.ThrowsAsync <HttpFhirException>(async delegate
            {
                await sspAProxyGateMiddleware.Invoke(contextMock.Object);
            });
        }
        public async void Valid_Headers()
        {
            var requestMock = new Mock <HttpRequest>();

            requestMock.Setup(x => x.Method).Returns("GET");
            requestMock.Setup(x => x.Path).Returns(new PathString("/nrls-ri/SSP/https%3A%2F%2Ftest999.domain.com%2Fbinary%2Ffile%2F0001"));
            requestMock.Setup(x => x.Headers).Returns(new HeaderDictionary()
            {
                { HeaderNames.Authorization, "we-are-not-validating-jwt-here" },
                { FhirConstants.HeaderSspFromAsid, "000" },
                { FhirConstants.HeaderSspToAsid, "999" },
                { FhirConstants.HeaderSspInterationId, FhirConstants.ReadInteractionId },
                { FhirConstants.HeaderSspTradeId, Guid.NewGuid().ToString() }
            });


            var contextMock = new Mock <HttpContext>();

            contextMock.Setup(x => x.Request).Returns(requestMock.Object);


            var sspAProxyGateMiddleware = new SspProxyGateMiddleware(next: (innerHttpContext) => Task.FromResult(0), sdsService: _sdsService, nrlsValidation: _nrlsValidation);

            //Test will fail if invalid
            await sspAProxyGateMiddleware.Invoke(contextMock.Object);
        }
        public void Invalid_Header_InteractionID_Invalid()
        {
            var requestMock = new Mock <HttpRequest>();

            requestMock.Setup(x => x.Method).Returns("GET");
            requestMock.Setup(x => x.Headers).Returns(new HeaderDictionary()
            {
                { HeaderNames.Authorization, "valid-jwt" },
                { FhirConstants.HeaderSspFromAsid, "000" },
                { FhirConstants.HeaderSspToAsid, "999" },
                { FhirConstants.HeaderSspTradeId, "valid-trace" },
                { FhirConstants.HeaderSspInterationId, "invalid-interaction" }
            });

            var contextMock = new Mock <HttpContext>();

            contextMock.Setup(x => x.Request).Returns(requestMock.Object);

            var sspAProxyGateMiddleware = new SspProxyGateMiddleware(next: (innerHttpContext) => Task.FromResult(0), sdsService: _sdsService, nrlsValidation: _nrlsValidation);

            //Test will fail if invalid
            Assert.ThrowsAsync <HttpFhirException>(async delegate
            {
                await sspAProxyGateMiddleware.Invoke(contextMock.Object);
            });
        }
        public void Invalid_Header_Authorization_Missing()
        {
            var requestMock = new Mock <HttpRequest>();

            requestMock.Setup(x => x.Method).Returns("GET");
            requestMock.Setup(x => x.Headers).Returns(new HeaderDictionary()
            {
            });

            var contextMock = new Mock <HttpContext>();

            contextMock.Setup(x => x.Request).Returns(requestMock.Object);

            var sspAProxyGateMiddleware = new SspProxyGateMiddleware(next: (innerHttpContext) => Task.FromResult(0), sdsService: _sdsService, nrlsValidation: _nrlsValidation);

            //Test will fail if invalid
            Assert.ThrowsAsync <HttpFhirException>(async delegate
            {
                await sspAProxyGateMiddleware.Invoke(contextMock.Object);
            });
        }