using System; using System.Xml; using System.Xml.Linq; using Xunit; using USPS.ApiCalls; using USPS.Configuration; using USPS.Parsers; using Landmark.OLA.Models.Addresses; using Landmark.OLA.Models.Addresses.Enums; namespace USPS.Tests { public class AddressValidationTest { private readonly IResponseParser
AddressParser; public AddressValidationTest() { AddressParser = new AddressValidationResponseParser(); } private readonly Address address = new Address() { Address1 = "109 N Hancock St", Address2 = "Apt 2", City = "Madison", State = StateOption.WI, PostalCode = "53703", PostalCodeExt = "2466", Country = CountryOption.UnitedStates }; [Fact] public void ErrorResponseParse() { XmlDocument doc = new XmlDocument(); doc.Load("ExampleXML" + System.IO.Path.DirectorySeparatorChar + "USPSAddressError.xml"); XDocument response; using (XmlNodeReader reader = new XmlNodeReader(doc)) { response = XDocument.Load(reader); } Exception ex = Assert.Throws(() => AddressParser.Parse(response.Root)); Assert.Equal("Attempt to parse address that is in error.", ex.Message); } [Fact] public void SuccessResponseParse() { XmlDocument doc = new XmlDocument(); doc.Load("ExampleXML" + System.IO.Path.DirectorySeparatorChar + "USPSAddressSuccess.xml"); XDocument response; using (XmlNodeReader reader = new XmlNodeReader(doc)) { response = XDocument.Load(reader); } var parsedAddress = AddressParser.Parse(response.Root); Assert.Equal("MADISON", parsedAddress.City); } [Fact] public void AddressValidationBuild() { UspsSettings settings = new UspsSettings(); settings.Username = "TestUser"; settings.EndpointUrl = "http://production.shippingapis.com/ShippingAPI?"; AddressValidationRequestBuilder api = new AddressValidationRequestBuilder(settings, address); string expectedURI = "http://production.shippingapis.com/ShippingAPI?API=Verify&XML=%3cAddressValidateRequest+USERID%3d%22TestUser%22%3e%3cAddress%3e%3cAddress1%3eApt+2%3c%2fAddress1%3e%3cAddress2%3e109+N+Hancock+St%3c%2fAddress2%3e%3cCity%3eMadison%3c%2fCity%3e%3cState%3eWI%3c%2fState%3e%3cZip5%3e53703%3c%2fZip5%3e%3cZip4+%2f%3e%3c%2fAddress%3e%3c%2fAddressValidateRequest%3e"; Assert.Equal(expectedURI, api.BuildGET()); } } }