public async Task <IHttpActionResult> CreateNewShortUrl([FromUri] string nativeUrl) { //ToDo серверная валидация на корректный url var link = await LinksGenerator.GetNewShortLinkAsync(nativeUrl); return(Ok(link)); }
public async void GetRandomSymbolsTest() { int linksCount = 10000; var uniqueShortLinks = new HashSet <string>(); for (int i = 0; i < linksCount; i++) { var shortLinks = await LinksGenerator.GetNewShortLinkAsync("http://testurl.com"); uniqueShortLinks.Add(shortLinks); Assert.IsNotNull(shortLinks); } var uniqueShortLinkCount = uniqueShortLinks.Distinct().Count(); Assert.AreEqual(linksCount, uniqueShortLinkCount); }
public async Task WpLzhEnumPageLinksTest() { var site = await WpLzhSiteAsync; var gen = new LinksGenerator(site, site.SiteInfo.MainPage) { PaginationSize = 20 }; Output.WriteLine(gen.PageTitle); var links = await gen.EnumItemsAsync().Select(stub => stub.Title).ToList(); var linkPages = await gen.EnumPagesAsync().Select(p => p.Title).ToList(); ShallowTrace(links); Assert.Contains("文言維基大典", links); Assert.Contains("幫助:凡例", links); Assert.Contains("維基大典:卓著", links); // The items taken from generator are unordered. Assert.Equal(links.ToHashSet(), linkPages.ToHashSet()); }
public void ComplexTest() { var routeRelations = new Dictionary <string, List <string> >(); var payload = new ModelSample() { Id = 1, Name = "test", Price = 5.0, EMailAddress = "*****@*****.**" }; routeRelations.Add("GET/api/{id}?query={query}", new List <string>() { "get-query" }); routeRelations.Add("PUT/api/prod/{id}", new List <string>() { "put-prod" }); var links = LinksGenerator.Generate(_actionConfiguration, routeRelations, payload); var serialized = JsonConvert.SerializeObject(links); Assume.That(serialized, Is.EqualTo("[{\"rel\":[\"get-query\",\"__query\"],\"href\":\"http://localhost/api/1?query=:query\"}]")); }
public GenreHATEOASAttribute(LinksGenerator linksGenerator) { this.linksGenerator = linksGenerator; }