public void SearchInWhoisAsync() { Domain domain = new Domain() { Name = "umbler.com", Ip = "187.84.237.146", UpdatedAt = DateTime.Now, WhoIs = "Domain Name: UMBLER.COM\nRegistry Domain ID: 1805958813_DOMAIN_COM - VRSN\nRegistrar WHOIS Server: whois.publicdomainregistry.com\nRegistrar URL: www.publicdomainregistry.com\nUpdated Date: 2019 - 04 - 16T14: 20:33Z\nCreation Date: 2013 - 06 - 03T20: 42:15Z\nRegistrar Regi", Ttl = 60, HostedAt = "Umbler Provedor Internet LTDA", }; string domainName = "umbler.com.br"; Mock <SearchWhois> mock = new Mock <SearchWhois>(); mock.Setup(m => m.SearchInWhoisAsync(domainName)).Returns(Task.FromResult(domain)); SearchWhois verif = new SearchWhois(); var resultadoEsperado = mock.Object.SearchInWhoisAsync(domainName); var resultado = verif.SearchInWhoisAsync(domainName); Assert.AreEqual(resultado, resultadoEsperado); }
public async Task <IActionResult> Get(string domainName) { //procura se já tenho esse domínio no banco var whois = new SearchWhois(); var domain = await _db.SearchDomain(_db, domainName); //se não encontrou o domínio no banco, pesquisa no whois e salva no banco if (domain == null) { domain = await whois.SearchInWhoisAsync(domainName); if (domain.Name == "Error") { return(BadRequest(domain.WhoIs)); } _db.Domains.Add(domain); } var hora = DateTime.Now.Subtract(domain.UpdatedAt).TotalMinutes; //se já esgotou o ttl do domínio, preciso pesquisar novamente no whois e atualizar no banco. if (hora > domain.Ttl) { var domain2 = await whois.SearchInWhoisAsync(domainName); domain.Name = domain2.Name; domain.Ip = domain2.Ip; domain.UpdatedAt = DateTime.Now; domain.WhoIs = domain2.WhoIs; domain.Ttl = domain2.Ttl; domain.HostedAt = domain2.HostedAt; } //repasso os dados do domínio para minha ViewModel var domainView = new DomainViewModel { Name = domain.Name, Ip = domain.Ip ?? "n/a", WhoIs = domain.WhoIs, HostedAt = domain.HostedAt ?? "n/a" }; //aguardando atualizar o banco await _db.SaveChangesAsync(); //retornando a view com o domínio return(Ok(domainView)); }
public void SearchInWhoisAsync() { //definição da string Domain domain = new Domain() { Name = "umbler.com", Ip = "187.84.237.146", UpdatedAt = DateTime.Now, WhoIs = "Domain Name: UMBLER.COM\nRegistry Domain ID: 1805958813_DOMAIN_COM - VRSN\nRegistrar WHOIS Server: whois.publicdomainregistry.com\nRegistrar URL: www.publicdomainregistry.com\nUpdated Date: 2019 - 04 - 16T14: 20:33Z\nCreation Date: 2013 - 06 - 03T20: 42:15Z\nRegistrar Regi", Ttl = 60, HostedAt = "Umbler Provedor Internet LTDA", }; string domainName = "umbler.com"; //Criação do objeto Mock, que utiliza a interface ISearchWhois, sendo, então, fortemente tipado. //Vale ressaltar que o objeto Mock poderia emular qualquer implementação da interface definida, caso existisse mais de uma; Mock <ISearchWhois> mock = new Mock <ISearchWhois>(); //Realização do setup de objeto Mock, que foi definido para esperar um retorno de produto barato. //Note que, independentemente do valor do preço no objeto produtoBarato, o valor de retorno do objeto Mock será sempre a string “Produto barato!”, pois assim foi definido; mock.Setup(m => m.SearchInWhoisAsync(domainName)).Returns(domain); //Criação do objeto SearchWhois para comparação posterior; SearchWhois verif = new SearchWhois(); //Execução do método SearchInWhoisAsync no objeto Mock; var resultadoEsperado = mock.Object.SearchInWhoisAsync(domainName); //Execução do método SearchInWhoisAsync no objeto normal; var resultado = verif.SearchInWhoisAsync(domainName); //Seção assert do teste, que faz com que o teste passe caso os resultados sejam iguais. Assert.AreEqual(resultado, resultadoEsperado); }