public async void CreateShortenUrlWithValidCodeOrEmpty(string code, string url) { var shortenUrlDTO = new ShortenUrlDTO { Code = code, Url = url }; var ShortenUrlRepostory = new Mock <IShortenUrlRepository>(); ShortenUrlRepostory.Setup(p => p.GetShortenUrl(It.IsAny <string>())).Returns(Task.FromResult <ShortenUrl>(null)); ShortenUrlRepostory.Setup(p => p.InsertShortenUrl(It.IsAny <ShortenUrlDTO>())); var shortenUrlService = new ShortenUrlService(ShortenUrlRepostory.Object, new CodeService()); var result = await shortenUrlService.CreateShortenUrl(shortenUrlDTO); if (string.IsNullOrEmpty(code)) { Assert.NotEmpty(result.Code); } else { Assert.Equal(code, result.Code); } Assert.Equal(6, result.Code.Length); }
public async Task <ShortUrlCreatedViewModel> CreateShortenUrl(ShortenUrlDTO shortenUrlDTO) { if (string.IsNullOrEmpty(shortenUrlDTO.Code)) { shortenUrlDTO.Code = _codeService.GenerateCode(6, new Random()); } if (_codeService.IsCodeValid(shortenUrlDTO.Code)) { var shortenUrl = await _shortenUrlRepository.GetShortenUrl(shortenUrlDTO.Code); if (shortenUrl != null) { throw new ConflictException("Code in Use"); } await _shortenUrlRepository.InsertShortenUrl(shortenUrlDTO); return(new ShortUrlCreatedViewModel { Code = shortenUrlDTO.Code }); } else { throw new UnprocessableEntityException("Code should be alphanumeric and 6 chars long"); } }
public IActionResult Post([FromBody] ShortenUrlDTO shortenUrlDTO) { var shortUrl = CreateNewShortUrl(shortenUrlDTO); SaveToDatabase(shortUrl); return(Ok(new ShortenedUrlDTO { Original_link = shortUrl.OriginalUrl, Short_link = shortUrl.Alias })); }
public async Task InsertShortenUrl(ShortenUrlDTO shortenUrlDTO) { var parameters = new Dictionary <string, object> { { "Code", shortenUrlDTO.Code }, { "OriginalUrl", shortenUrlDTO.Url } }; await _sqlDataAccess.Execute("uspInsertShortUrl", parameters); }
private ShortUrl CreateNewShortUrl(ShortenUrlDTO shortenUrlDTO) { var shortUrl = new ShortUrl { Id = Guid.NewGuid(), OriginalUrl = shortenUrlDTO.Url }; shortUrl.Alias = baseUrl + RandomStringHelper.RandomString(8); while (dbContext.ShortUrls.Any(su => su.Alias == shortUrl.Alias)) { shortUrl.Alias = baseUrl + RandomStringHelper.RandomString(8); } return(shortUrl); }
public async void CreateShortenUrlExistingCode(string code, string url) { var shortenUrlDTO = new ShortenUrlDTO { Code = code, Url = url }; var ShortenUrlRepostory = new Mock <IShortenUrlRepository>(); ShortenUrlRepostory.Setup(p => p.GetShortenUrl(It.IsAny <string>())).Returns(Task.FromResult <ShortenUrl>(new ShortenUrl())); ShortenUrlRepostory.Setup(p => p.InsertShortenUrl(It.IsAny <ShortenUrlDTO>())); var shortenUrlService = new ShortenUrlService(ShortenUrlRepostory.Object, new CodeService()); await Assert.ThrowsAsync <ConflictException>(() => shortenUrlService.CreateShortenUrl(shortenUrlDTO)); }
public void ShortenController_PostUrlForShortening_ReturnOkAndShortUrl() { // Arrange var shortenController = new ShortenController(dbContext); var originalUrl = "http://www.google.com"; var shortenUrlDto = new ShortenUrlDTO { Url = originalUrl }; // Act var actionResult = shortenController.Post(shortenUrlDto); // Assert actionResult.Should().NotBeNull(); var okResult = actionResult as OkObjectResult; okResult.Should().NotBeNull(); var shortenedUrlDto = okResult.Value as ShortenedUrlDTO; shortenedUrlDto.Should().NotBeNull(); shortenedUrlDto.Original_link.Should().Be(originalUrl); dbContext.ShortUrls.Any(url => url.OriginalUrl == originalUrl).Should().BeTrue(); }
public async Task <ActionResult <ShortUrlCreatedViewModel> > CreateShortenUrl(ShortenUrlDTO shortenUrlDTO, [FromServices] IShortenUrlService shortenUrlService) { var code = await shortenUrlService.CreateShortenUrl(shortenUrlDTO); return(Created(string.Empty, code)); }