Пример #1
0
        public async Task TestFirstTimeRequestLinkNotExistsWithInvalidDefRedir(LinkVerifyResult linkVerifyResult)
        {
            string inputToken = "996";
            string t;

            _tokenGeneratorMock
            .Setup(p => p.TryParseToken(inputToken, out t))
            .Returns(true);

            var link        = new Link();
            var memoryCache = MockMemoryCacheService.GetMemoryCache(link, false);

            _linkForwarderServiceMock
            .Setup(p => p.GetLinkAsync(null))
            .ReturnsAsync(new SuccessResponse <Link>(null));

            _linkVerifierMock
            .Setup(p => p.Verify(It.IsAny <string>(), It.IsAny <IUrlHelper>(), It.IsAny <HttpRequest>()))
            .Returns(linkVerifyResult);

            _appSettingsMock.Setup(p => p.Value).Returns(new AppSettings
            {
                DefaultRedirectionUrl = "INVALID_VALUE"
            });

            var ctl = new ForwardController(
                _appSettingsMock.Object,
                _loggerMock.Object,
                _linkForwarderServiceMock.Object,
                _tokenGeneratorMock.Object,
                memoryCache,
                _linkVerifierMock.Object)
            {
                ControllerContext = GetHappyPathHttpContext()
            };

            var result = await ctl.Forward(inputToken);

            Assert.IsInstanceOf(typeof(StatusCodeResult), result);

            var statusCode = ((StatusCodeResult)result).StatusCode;

            Assert.IsTrue(statusCode == 500);
        }
Пример #2
0
        public async Task TestFirstTimeRequestNoDntNoTTL()
        {
            string inputToken = "996";
            string t;

            _tokenGeneratorMock
            .Setup(p => p.TryParseToken(inputToken, out t))
            .Returns(true);

            var link = new Link {
                IsEnabled = true, OriginUrl = "https://edi.wang"
            };
            var memoryCache = MockMemoryCacheService.GetMemoryCache(link, false);

            _linkForwarderServiceMock
            .Setup(p => p.GetLinkAsync(null))
            .ReturnsAsync(new SuccessResponse <Link>(link));

            _linkVerifierMock
            .Setup(p => p.Verify(It.IsAny <string>(), It.IsAny <IUrlHelper>(), It.IsAny <HttpRequest>()))
            .Returns(LinkVerifyResult.Valid);

            _appSettingsMock.Setup(p => p.Value).Returns(new AppSettings
            {
                HonorDNT = false
            });

            var ctl = new ForwardController(
                _appSettingsMock.Object,
                _loggerMock.Object,
                _linkForwarderServiceMock.Object,
                _tokenGeneratorMock.Object,
                memoryCache,
                _linkVerifierMock.Object)
            {
                ControllerContext = GetHappyPathHttpContext()
            };

            var result = await ctl.Forward(inputToken);

            Assert.IsInstanceOf(typeof(RedirectResult), result);
        }
Пример #3
0
        public async Task TestFirstTimeRequestServerError()
        {
            string inputToken = "996";
            string t;

            _tokenGeneratorMock
            .Setup(p => p.TryParseToken(inputToken, out t))
            .Returns(true);

            var link = new Link {
                OriginUrl = "https://996.icu"
            };
            var memoryCache = MockMemoryCacheService.GetMemoryCache(link, false);

            _linkForwarderServiceMock
            .Setup(p => p.GetLinkAsync(null))
            .ReturnsAsync(new FailedResponse <Link>(0));

            var ctl = new ForwardController(
                _appSettingsMock.Object,
                _loggerMock.Object,
                _linkForwarderServiceMock.Object,
                _tokenGeneratorMock.Object,
                memoryCache,
                _linkVerifierMock.Object)
            {
                ControllerContext = GetHappyPathHttpContext()
            };

            var result = await ctl.Forward(inputToken);

            Assert.IsInstanceOf(typeof(StatusCodeResult), result);

            var statusCode = ((StatusCodeResult)result).StatusCode;

            Assert.IsTrue(statusCode == 500);
        }
Пример #4
0
        public async Task TestCacheFound()
        {
            string inputToken = "996";
            string t;

            _tokenGeneratorMock.Setup(p => p.TryParseToken(inputToken, out t))
            .Returns(true);

            var link = new Link
            {
                OriginUrl = "https://996.icu"
            };

            var memoryCache = MockMemoryCacheService.GetMemoryCache(link);

            // var cachedResponse = memoryCache.Get<Link>(inputToken);

            _appSettingsMock.Setup(p => p.Value).Returns(new AppSettings()
            {
                HonorDNT = false
            });

            var ctl = new ForwardController(
                _appSettingsMock.Object,
                _loggerMock.Object,
                _linkForwarderServiceMock.Object,
                _tokenGeneratorMock.Object,
                memoryCache,
                _linkVerifierMock.Object)
            {
                ControllerContext = GetHappyPathHttpContext()
            };

            var result = await ctl.Forward(inputToken);

            Assert.IsInstanceOf(typeof(RedirectResult), result);
        }
Пример #5
0
        public async Task TestFirstTimeRequestLinkNotExistsNoDefRedir()
        {
            string inputToken = "996";
            string t;

            _tokenGeneratorMock
            .Setup(p => p.TryParseToken(inputToken, out t))
            .Returns(true);

            var link        = new Link();
            var memoryCache = MockMemoryCacheService.GetMemoryCache(link, false);

            _linkForwarderServiceMock
            .Setup(p => p.GetLinkAsync(null))
            .ReturnsAsync(new SuccessResponse <Link>(null));

            _appSettingsMock.Setup(p => p.Value).Returns(new AppSettings
            {
                DefaultRedirectionUrl = string.Empty
            });

            var ctl = new ForwardController(
                _appSettingsMock.Object,
                _loggerMock.Object,
                _linkForwarderServiceMock.Object,
                _tokenGeneratorMock.Object,
                memoryCache,
                _linkVerifierMock.Object)
            {
                ControllerContext = GetHappyPathHttpContext()
            };

            var result = await ctl.Forward(inputToken);

            Assert.IsInstanceOf(typeof(NotFoundResult), result);
        }