public ActionResult <RegisterUrlResponseBody> RegisterUrl([FromBody] RegisterUrlRequestBody request) { var accountClaim = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier); if (accountClaim == null) { return(Unauthorized()); } var account = accountClaim.Value; if (account == null) { return(Unauthorized()); } if (!ModelState.IsValid) { return(BadRequest()); } RegisteredUrl registeredUrl = _urlService.CreateRegisteredUrl(request, account); RegisterUrlResponseBody response = new RegisterUrlResponseBody() { shortUrl = $"http://localhost:6500/{registeredUrl.ShortUrl}" }; return(Created("", response)); }
public void RegiterUrl_OkResult() { InitializeControllerWithAuthorizedContext(); _mockService.Setup(service => service.CreateRegisteredUrl(It.IsAny <RegisterUrlRequestBody>(), It.IsAny <string>())) .Returns(new RegisteredUrl() { LongUrl = "www.google.com", ShortUrl = "AStzHGv", AccountID = "54321" }); RegisterUrlRequestBody request = new RegisterUrlRequestBody() { url = "www.google.com", redirectType = 301 }; var actionResult = _controller.RegisterUrl(request); Assert.IsType <ActionResult <RegisterUrlResponseBody> >(actionResult); OkObjectResult okResult = (OkObjectResult)actionResult.Result; Assert.IsType <OkObjectResult>((OkObjectResult)actionResult.Result); Assert.IsType <RegisterUrlResponseBody>(okResult.Value); RegisterUrlResponseBody response = (RegisterUrlResponseBody)okResult.Value; Assert.Equal("AStzHGv", response.shortUrl); }
/** * metoda vraca registrirani URL * * Ako za korisnika 'Account' vec postoji URL kao u 'Request'u, onda vraćamo taj postojeći objekt iz baze * Ako URL ne postoji, kreiramo novi RegisteredUrl, spremamo u bazu i vraćamo ga */ public RegisteredUrl CreateRegisteredUrl(RegisterUrlRequestBody Request, string Account) { //pokusavamo naci url u bazi podataka. ako postoji, provjeravamo da li pripada ovom accountu. //ako je sve zo zadovoljeno, nema potrebe kreirati novi zapis, nego vracamo stari RegisteredUrl findUrl = _context.RegisteredUrls.FirstOrDefault(databaseUrl => databaseUrl.LongUrl == Request.url && databaseUrl.AccountID == Account); if (findUrl != null) { return(findUrl); } else { //URL ne postoji, kreiramo novi zapis u bazi i vracamo novi RegisteredUrl objekt RegisteredUrl registeredUrl = new RegisteredUrl() { LongUrl = Request.url, ShortUrl = ShortUrlGenerator.Generate(10), AccountID = Account }; if (Request.redirectType > 0) { registeredUrl.RedirectType = Request.redirectType; } else { registeredUrl.RedirectType = 302; } _context.RegisteredUrls.Add(registeredUrl); _context.SaveChanges(); return(registeredUrl); } }
private async void RegisterUrl(string AuthenticationToken) { try { RestClient restClient = new RestClient() { BaseUrl = new Uri("https://sandbox.safaricom.co.ke") }; RestRequest restRequest = new RestRequest() { Resource = "mpesa/c2b/v1/registerurl", Method = Method.POST }; restRequest.AddHeader("Authorization", "Bearer " + AuthenticationToken); RegisterUrlRequestBody registerUrlRequestBody = new RegisterUrlRequestBody() { ShortCode = "601426", //ShortCode = "695656", ResponseType = "Completed", ConfirmationURL = "https://johncustomertobusiness.azurewebsites.net/api/ApiConfirmationResponses", ValidationURL = "https://johncustomertobusiness.azurewebsites.net" }; restRequest.AddJsonBody(registerUrlRequestBody); var response = await Task.Run(() => { return(restClient.Execute(restRequest)); }); if (response.IsSuccessful) { //do something Console.WriteLine(response.Content); } } catch (Exception ex) { Console.WriteLine(ex); } }
public void RegiterUrl_Unauthorized() { _mockService.Setup(service => service.CreateRegisteredUrl(It.IsAny <RegisterUrlRequestBody>(), It.IsAny <string>())) .Returns(new RegisteredUrl() { LongUrl = "www.google.com", ShortUrl = "AStzHGv", AccountID = "54321" }); RegisterUrlRequestBody request = new RegisterUrlRequestBody() { url = "www.google.com", redirectType = 300 }; //krivi redirectType var actionResult = _controller.RegisterUrl(request); Assert.IsType <UnauthorizedResult>((UnauthorizedResult)actionResult.Result); }
public void RegiterUrl_ModelNotValid() { InitializeControllerWithAuthorizedContext(); _mockService.Setup(service => service.CreateRegisteredUrl(It.IsAny <RegisterUrlRequestBody>(), It.IsAny <string>())) .Returns((RegisteredUrl)null); _controller.ModelState.AddModelError("Url", "invalid data"); RegisterUrlRequestBody request = new RegisterUrlRequestBody() { url = "www.google.com", redirectType = 300 }; //krivi redirectType var actionResult = _controller.RegisterUrl(request); Assert.IsType <BadRequestResult>((BadRequestResult)actionResult.Result); }