Example #1
0
        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);
        }
Example #2
0
        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
     });
 }
Example #5
0
        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
            }));
        }