public async Task GenerateLinkSuccess() { //Arrange var playerName = "Test Name"; var playerRegion = "Test Region"; var generatLinkDto = new GenerateLinkDto { Api = "Test Api", Nickname = playerName, Server = playerRegion }; var mockRiotService = new Mock <IRiotApiService>(); mockRiotService.Setup(rs => rs.FetchPlayerId(playerName, playerRegion)).ReturnsAsync("ID"); var mockSendgridService = new Mock <ISendgridService>(); var controller = new WebPageController(mockRiotService.Object, mockSendgridService.Object); controller.ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext() }; //Act var result = await controller.GenerateLink(generatLinkDto); //Assert var redirectToActionResult = Assert.IsType <RedirectToActionResult>(result); Assert.Equal("Link", redirectToActionResult.ActionName); }
public async Task GenerateLinkRegionNotFound() { //Arrange var playerName = "Test Name"; var playerRegion = "Test Region"; var generatLinkDto = new GenerateLinkDto { Nickname = playerName, Server = playerRegion }; var mockRiotService = new Mock <IRiotApiService>(); mockRiotService.Setup(rs => rs.FetchPlayerId(playerName, playerRegion)).ThrowsAsync(new RegionNotFoundException()); var mockSendgridService = new Mock <ISendgridService>(); var controller = new WebPageController(mockRiotService.Object, mockSendgridService.Object); //Act var result = await controller.GenerateLink(generatLinkDto); //Assert var viewResult = Assert.IsType <ViewResult>(result); viewResult.ViewData.ModelState.TryGetValue("RegionNotFound", out var error); Assert.Equal("Selected region not found.", error.Errors[0].ErrorMessage); }
public IHttpActionResult CreateShortLink(string url) { try { Uri uriResult; bool result = Uri.TryCreate(url, UriKind.Absolute, out uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps); if (!result) { return(Json(new { success = false, Message = "آدرس وارد شده صحیح نمی باشد." })); } var uri = new Uri(url); var host = uri.Host; string scheme = uri.Scheme; string token = GenerateToken(); biturl = new GenerateLinkDto() { Token = token, URL = url, ShortenedURL = scheme + "://" + host + "/" + token }; GenerateLinkEntity GenerateEntity = _GenerateLinkMapper.MapToEntity(biturl); bool results = _GenerateLinkRepository.Add(GenerateEntity); return(Json(new { success = true, Message = "لینک کوتاه با موفقیت تولید شد.", shortLink = scheme + "://" + host + "/" + token })); } catch (Exception e) { return(Json(new { success = false, Message = "مشکل از سمت سرور" })); } }
/// <summary> /// پیاده سازی تبدیل مدل به اینتیتی /// </summary> /// <param name="generateLinkDto"></param> /// <returns></returns> public GenerateLinkEntity MapToEntity(GenerateLinkDto generateLinkDto) { return(new GenerateLinkEntity() { Id = generateLinkDto.Id, URL = generateLinkDto.URL, ShortenedURL = generateLinkDto.ShortenedURL, Clicked = generateLinkDto.Clicked, Created = generateLinkDto.Created, Token = generateLinkDto.Token }); }
public async Task GenerateLinkModelStateInvalid() { //Arrange var generatLinkDto = new GenerateLinkDto(); var mockRiotService = new Mock <IRiotApiService>(); var mockSendgridService = new Mock <ISendgridService>(); var controller = new WebPageController(mockRiotService.Object, mockSendgridService.Object); controller.ModelState.AddModelError("Testing Error", "Error"); //Act var result = await controller.GenerateLink(generatLinkDto); //Assert var viewResult = Assert.IsType <ViewResult>(result); viewResult.ViewData.ModelState.TryGetValue("Testing Error", out var error); Assert.Equal("Error", error.Errors[0].ErrorMessage); }
public async Task <IHttpActionResult> GetWithShortLink(string shortLink) { try { GenerateLinkEntity GenerateLinkEntity = await _GenerateLinkRepository.GetWithShortLink(shortLink); if (GenerateLinkEntity == null) { return(Json(new { success = false, Message = "لینک مورد نظر موجود نیست" })); } GenerateLinkDto model = _GenerateLinkMapper.MapToDto(GenerateLinkEntity); return(Json(new { success = true, Url = model.URL })); } catch (Exception e) { return(Json(new { success = false, Message = "مشکل از سمت سرور" })); } }
public async Task <IActionResult> GenerateLink(GenerateLinkDto generateLinkViewModel) { if (!ModelState.IsValid) { return(View()); } try { var playerId = await riotApiService.FetchPlayerId(generateLinkViewModel.Nickname, generateLinkViewModel.Server); } catch (PlayerNotFoundException) { ModelState.AddModelError("PlayerNotFound", "Player not found try again with different name, or change your server."); return(View()); } catch (RegionNotFoundException) { ModelState.AddModelError("RegionNotFound", "Selected region not found."); return(View()); } string link = $"{Request.Scheme}://{Request.Host}" .AppendPathSegment(generateLinkViewModel.Api) .AppendPathSegment(generateLinkViewModel.Nickname) .AppendPathSegment(generateLinkViewModel.Server); if (generateLinkViewModel.Api == "mastery") { link = link.AppendPathSegment("<replace with bot argument>"); } return(RedirectToAction("Link", new LinkViewModel { Link = link })); }