Пример #1
0
        public async Task GenerateLinkIfNoCollisionsFound()
        {
            _shortLinkGenerator.Setup(f => f.CreateShortLink(It.IsAny <int>())).Returns("ABCD");
            _checkExistenceFunction.Setup(f => f(It.IsAny <string>())).ReturnsAsync(false);

            var actual = await _collisionResolver.FindSuitableShortLinkAsync();

            actual.ShouldBeEquivalentTo("ABCD");
        }
Пример #2
0
        public async Task <string> CreateShortLinkAsync(string fullLink, User user)
        {
            var pattern =
                "^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$";

            if (!Regex.IsMatch(fullLink, pattern))
            {
                throw new InvalidLinkException();
            }

            var shortLink = await _collisionResolver.FindSuitableShortLinkAsync();

            await _shortLinksRepository.InsertAsync(new ShortLink(shortLink, fullLink, user));

            return(shortLink);
        }