public void TestParseRecord()
        {
            var sample = File.ReadAllText("..\\..\\Samples\\Domains\\adobe.com.txt");

            var record = new WhoisRecord(sample);

            record = visitor.Visit(record);

            Assert.IsNotNull(record.Registrant);
            Assert.AreEqual("Domain Administrator", record.Registrant.Name);
            Assert.AreEqual("Adobe Systems Incorporated", record.Registrant.Organization);
            Assert.AreEqual("345 Park Avenue", record.Registrant.Street);
            Assert.AreEqual("San Jose", record.Registrant.City);
            Assert.AreEqual("CA", record.Registrant.State);
            Assert.AreEqual("95110", record.Registrant.PostalCode);
            Assert.AreEqual("US", record.Registrant.Country);
            Assert.AreEqual("+1.4085366000", record.Registrant.PhoneNumber);
            Assert.AreEqual("", record.Registrant.PhoneNumberExt);
            Assert.AreEqual("", record.Registrant.FaxNumber);
            Assert.AreEqual("", record.Registrant.FaxNumberExt);
            Assert.AreEqual("*****@*****.**", record.Registrant.Email);

            Assert.IsNotNull(record.AdminContact);
            Assert.AreEqual("DNS Admin", record.AdminContact.Name);
            Assert.AreEqual("Adobe Systems Incorporated", record.AdminContact.Organization);
            Assert.AreEqual("345 Park Avenue", record.AdminContact.Street);
            Assert.AreEqual("San Jose", record.AdminContact.City);
            Assert.AreEqual("CA", record.AdminContact.State);
            Assert.AreEqual("95110", record.AdminContact.PostalCode);
            Assert.AreEqual("US", record.AdminContact.Country);
            Assert.AreEqual("+1.4085366000", record.AdminContact.PhoneNumber);
            Assert.AreEqual("", record.AdminContact.PhoneNumberExt);
            Assert.AreEqual("", record.AdminContact.FaxNumber);
            Assert.AreEqual("", record.AdminContact.FaxNumberExt);
            Assert.AreEqual("*****@*****.**", record.AdminContact.Email);

            Assert.IsNotNull(record.TechnicalContact);
            Assert.AreEqual("DNS Tech", record.TechnicalContact.Name);
            Assert.AreEqual("Adobe Systems Incorporated", record.TechnicalContact.Organization);
            Assert.AreEqual("345 Park Avenue", record.TechnicalContact.Street);
            Assert.AreEqual("San Jose", record.TechnicalContact.City);
            Assert.AreEqual("CA", record.TechnicalContact.State);
            Assert.AreEqual("95110", record.TechnicalContact.PostalCode);
            Assert.AreEqual("US", record.TechnicalContact.Country);
            Assert.AreEqual("+1.4085366000", record.TechnicalContact.PhoneNumber);
            Assert.AreEqual("", record.TechnicalContact.PhoneNumberExt);
            Assert.AreEqual("", record.TechnicalContact.FaxNumber);
            Assert.AreEqual("", record.TechnicalContact.FaxNumberExt);
            Assert.AreEqual("*****@*****.**", record.TechnicalContact.Email);

            Assert.AreEqual(5, record.Nameservers.Count);
            Assert.AreEqual("adobe-dns-03.adobe.com", record.Nameservers[0]);
            Assert.AreEqual("adobe-dns-01.adobe.com", record.Nameservers[1]);
            Assert.AreEqual("adobe-dns-02.adobe.com", record.Nameservers[2]);
            Assert.AreEqual("adobe-dns-05.adobe.com", record.Nameservers[3]);
            Assert.AreEqual("adobe-dns-04.adobe.com", record.Nameservers[4]);
        }
        public void TestParseRecord()
        {
            var sample = File.ReadAllText("..\\..\\..\\Samples\\Domains\\adobe.com.txt");

            var state = new LookupState
            {
                Response = new WhoisResponse(sample),
                Options  = new WhoisOptions {
                    ParseWhoisResponse = true
                }
            };

            visitor.Visit(state);

            var record = state.Response.ParsedResponse;

            Assert.AreEqual("adobe.com", record.DomainName);
            Assert.AreEqual("4364022_DOMAIN_COM-VRSN", record.RegistryDomainId);
            Assert.AreEqual("whois.comlaude.com", record.Registrar.WhoisServerUrl);
            Assert.AreEqual("http://www.comlaude.com", record.Registrar.Url);
            Assert.AreEqual(new DateTime(2018, 10, 18, 17, 9, 58), record.Updated.Value.ToUniversalTime());
            Assert.AreEqual(new DateTime(1986, 11, 17, 05, 0, 00), record.Registered.Value.ToUniversalTime());
            Assert.AreEqual(new DateTime(2019, 05, 17, 00, 0, 00), record.Expiration.Value.ToUniversalTime());
            Assert.AreEqual("NOM-IQ Ltd dba Com Laude", record.Registrar.Name);
            Assert.AreEqual("470", record.Registrar.IanaId);
            Assert.AreEqual("clientUpdateProhibited", record.DomainStatus[0]);
            Assert.AreEqual("serverDeleteProhibited", record.DomainStatus[1]);
            Assert.AreEqual("serverTransferProhibited", record.DomainStatus[2]);
            Assert.AreEqual("serverUpdateProhibited", record.DomainStatus[3]);
            Assert.AreEqual("Domain Administrator", record.Registrant.Name);
            Assert.AreEqual("Adobe Inc.", record.Registrant.Organization);
            Assert.AreEqual("345 Park Avenue", record.Registrant.Address[0]);
            Assert.AreEqual("San Jose", record.Registrant.Address[1]);
            Assert.AreEqual("California", record.Registrant.Address[2]);
            Assert.AreEqual("95110", record.Registrant.Address[3]);
            Assert.AreEqual("US", record.Registrant.Address[4]);
            Assert.AreEqual("+1.4085366000", record.Registrant.TelephoneNumber);
            Assert.AreEqual("", record.Registrant.TelephoneNumberExt);
            Assert.AreEqual("", record.Registrant.FaxNumber);
            Assert.AreEqual("", record.Registrant.FaxNumberExt);
            Assert.AreEqual("*****@*****.**", record.Registrant.Email);
            Assert.AreEqual("Domain Administrator", record.AdminContact.Name);
            Assert.AreEqual("Adobe Inc.", record.AdminContact.Organization);
            Assert.AreEqual("345 Park Avenue", record.AdminContact.Address[0]);
            Assert.AreEqual("San Jose", record.AdminContact.Address[1]);
            Assert.AreEqual("California", record.AdminContact.Address[2]);
            Assert.AreEqual("95110", record.AdminContact.Address[3]);
            Assert.AreEqual("US", record.AdminContact.Address[4]);
            Assert.AreEqual("+1.4085366000", record.AdminContact.TelephoneNumber);
            Assert.AreEqual("", record.AdminContact.TelephoneNumberExt);
            Assert.AreEqual("", record.AdminContact.FaxNumber);
            Assert.AreEqual("", record.AdminContact.FaxNumberExt);
            Assert.AreEqual("*****@*****.**", record.AdminContact.Email);
            Assert.AreEqual("REDACTED FOR PRIVACY", record.TechnicalContact.Name);
            Assert.AreEqual("REDACTED FOR PRIVACY", record.TechnicalContact.Organization);
            Assert.AreEqual("REDACTED FOR PRIVACY", record.TechnicalContact.Address[0]);
            Assert.AreEqual("REDACTED FOR PRIVACY", record.TechnicalContact.Address[1]);
            Assert.AreEqual("REDACTED FOR PRIVACY", record.TechnicalContact.Address[2]);
            Assert.AreEqual("REDACTED FOR PRIVACY", record.TechnicalContact.Address[3]);
            Assert.AreEqual("REDACTED FOR PRIVACY", record.TechnicalContact.Address[4]);
            Assert.AreEqual("REDACTED FOR PRIVACY", record.TechnicalContact.TelephoneNumber);
            Assert.AreEqual("REDACTED FOR PRIVACY", record.TechnicalContact.TelephoneNumberExt);
            Assert.AreEqual("REDACTED FOR PRIVACY", record.TechnicalContact.FaxNumber);
            Assert.AreEqual("REDACTED FOR PRIVACY", record.TechnicalContact.FaxNumberExt);
            Assert.AreEqual("*****@*****.**", record.TechnicalContact.Email);

            Assert.AreEqual(7, record.NameServers.Count);
            Assert.AreEqual("a1-217.akam.net", record.NameServers[0]);
            Assert.AreEqual("a10-64.akam.net", record.NameServers[1]);
            Assert.AreEqual("a13-65.akam.net", record.NameServers[2]);
            Assert.AreEqual("a26-66.akam.net", record.NameServers[3]);
            Assert.AreEqual("a28-67.akam.net", record.NameServers[4]);
            Assert.AreEqual("a7-64.akam.net", record.NameServers[5]);
            Assert.AreEqual("adobe-dns-01.adobe.com", record.NameServers[6]);

            Assert.AreEqual("Unsigned Delegation", record.DnsSecStatus);
            Assert.AreEqual("*****@*****.**", record.Registrar.AbuseEmail);
            Assert.AreEqual("+44.2074218250", record.Registrar.AbuseTelephoneNumber);
        }