public void Should_Not_Retrieve_Context_From_Accessor_At_Constructor()
        {
            // Arrange

            // Act
            var _ = new HostRefererHttpTokenResolver(_mockHttpContextAccessor.Object);

            // Assert
            _mockHttpContextAccessor.Verify(a => a.HttpContext, Times.Never());
        }
        public void Should_Try_To_Retrieve_HeaderReferer_From_Headers()
        {
            // Arrange
            var sut = new HostRefererHttpTokenResolver(_mockHttpContextAccessor.Object);

            // Act
            var _ = sut.GetTenantToken().Result;

            // Assert
            _mockHeaders.Verify(h => h.TryGetValue(It.Is <string>(key => string.Equals(key, HeaderReferer)), out It.Ref <StringValues> .IsAny), Times.Once());
        }
        public void Should_Retrieve_Header_From_Request()
        {
            // Arrange
            var sut = new HostRefererHttpTokenResolver(_mockHttpContextAccessor.Object);

            // Act
            var _ = sut.GetTenantToken().Result;

            // Assert
            _mockHttpRequest.Verify(c => c.Headers, Times.Once());
        }
        public void Should_Retrieve_Context_From_Accessor()
        {
            // Arrange
            var sut = new HostRefererHttpTokenResolver(_mockHttpContextAccessor.Object);

            // Act
            var _ = sut.GetTenantToken().Result;

            // Assert
            _mockHttpContextAccessor.Verify(a => a.HttpContext, Times.Once());
        }
        public void Should_Return_Null_If_Context_Is_Null()
        {
            // Arrange
            _mockHttpContextAccessor.Setup(a => a.HttpContext).Returns((HttpContext)null);
            var sut = new HostRefererHttpTokenResolver(_mockHttpContextAccessor.Object);

            // Act
            var result = sut.GetTenantToken().Result;

            // Assert
            result.Should().BeNull();
        }
        public void Should_Return_Null_If_HeaderReferer_Does_Not_Exist()
        {
            // Arrange
            _mockHeaders.Setup(h => h.TryGetValue(It.Is <string>(key => string.Equals(key, HeaderReferer)), out It.Ref <StringValues> .IsAny)).Returns(false);
            var sut = new HostRefererHttpTokenResolver(_mockHttpContextAccessor.Object);

            // Act
            var result = sut.GetTenantToken().Result;

            // Assert
            result.Should().BeNull();
        }
        public void Should_Return_Null_If_Headers_Are_Null()
        {
            // Arrange
            _mockHttpRequest.Setup(a => a.Headers).Returns((IHeaderDictionary)null);
            var sut = new HostRefererHttpTokenResolver(_mockHttpContextAccessor.Object);

            // Act
            var result = sut.GetTenantToken().Result;

            // Assert
            result.Should().BeNull();
        }
        public void Should_Return_Host_From_HeaderReferer()
        {
            // Arrange
            const string host           = "test.com";
            var          headerReferrer = new StringValues($"HTTP://{host}:81/path/query?test=pass&success=true");

            _mockHeaders.Setup(h => h.TryGetValue(It.Is <string>(key => string.Equals(key, HeaderReferer)), out headerReferrer)).Returns(true);
            var sut = new HostRefererHttpTokenResolver(_mockHttpContextAccessor.Object);

            // Act
            var result = sut.GetTenantToken().Result;

            // Assert
            result.Should().Be(host);
        }