Package: release.debian.org Severity: normal Tags: buster User: [email protected] Usertags: pu X-Debbugs-Cc: [email protected]
[ Reason ] USPS is sending notices that HTTP access will be turned off shortly, in favor of HTTPS. Given that is a web service that will break in the wild, in addition to a regular update for unstable, we should update buster (and stretch) via stable-updates (and oldstable-updates). [ Impact ] libbusiness-us-usps-webtools-perl will be unusable after June 24th, 2021. [ Tests ] (What automated or manual tests cover the affected code?) [ Risks ] Patch is a backport of 1.124 -> 1.125 adapted for 1.122. Even if there is a little risk (since I'm not able to fully test it), not updating this package is a more elevated risk. [ Checklist ] [X] *all* changes are documented in the d/changelog [X] I reviewed all changes and I approve them [X] attach debdiff against the package in (old)stable [X] the issue is verified as fixed in unstable [ Changes ] API change Cheers, Yadd
diff --git a/debian/changelog b/debian/changelog index 3a65ac0..964b422 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +libbusiness-us-usps-webtools-perl (1.122-1+deb10u1) buster; urgency=medium + + * Update to new US-USPS API (Closes: #988330) + + -- Yadd <[email protected]> Sat, 22 May 2021 12:17:01 +0200 + libbusiness-us-usps-webtools-perl (1.122-1) unstable; urgency=medium [ gregor herrmann ] diff --git a/debian/patches/series b/debian/patches/series index 38edaa7..4562936 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,2 @@ spelling-errors.patch +update-us-usps-webtools-to-https.patch diff --git a/debian/patches/update-us-usps-webtools-to-https.patch b/debian/patches/update-us-usps-webtools-to-https.patch new file mode 100644 index 0000000..7269fd1 --- /dev/null +++ b/debian/patches/update-us-usps-webtools-to-https.patch @@ -0,0 +1,307 @@ +Description: update due to US-USPS changes +Author: Xavier Guimard <[email protected]> +Forwarded: not-needed +Last-Update: 2021-05-21 + +--- a/lib/Business/US/USPS/WebTools.pm ++++ b/lib/Business/US/USPS/WebTools.pm +@@ -41,7 +41,7 @@ + =cut + + my $LiveServer = "production.shippingapis.com"; +-my $TestServer = "testing.shippingapis.com"; ++my $TestServer = "stg-production.shippingapis.com"; + + =item new( ANONYMOUS_HASH ) + +@@ -123,7 +123,7 @@ + $_[0]->_live ? + "/ShippingAPI.dll" + : +- "/ShippingAPITest.dll" ++ "/ShippingAPI.dll" + } + + sub _make_query_string { +@@ -145,7 +145,7 @@ + sub _make_url { + my( $self, $hash ) = @_; + +- $self->{url} = qq|http://| . $self->_api_host . $self->_api_path . ++ $self->{url} = qq|https://| . $self->_api_host . $self->_api_path . + "?" . $self->_make_query_string( $hash ); + } + +--- a/t/address_verification.t ++++ b/t/address_verification.t +@@ -21,23 +21,35 @@ + "environment variables to run these tests\n"; + } + ++my $is_testing = uc($ENV{USPS_WEBTOOLS_ENVIRONMENT}) eq 'TESTING'; ++ + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + use_ok( $class ); + + my $verifier; +-my $base = qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=Verify&XML=%3CAddressValidateRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CIncludeOptionalElements%3Etrue%3C%2FIncludeOptionalElements%3E%3CReturnCarrierRoute%3Etrue%3C%2FReturnCarrierRoute%3E|; ++ ++my $base = 'https://' . ($is_testing ? 'stg-' : '') . qq|production.shippingapis.com/ShippingAPI.dll?API=Verify&XML=%3CAddressValidateRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CIncludeOptionalElements%3Etrue%3C%2FIncludeOptionalElements%3E%3CReturnCarrierRoute%3Etrue%3C%2FReturnCarrierRoute%3E|; + + subtest setup => sub { + $verifier = $class->new( { + UserID => $ENV{USPS_WEBTOOLS_USERID}, + Password => $ENV{USPS_WEBTOOLS_PASSWORD}, +- Testing => 1, ++ Testing => $is_testing, + } ); + isa_ok( $verifier, $class ); + + can_ok( $verifier, $method ); + }; + ++=pod ++ ++2021-05-19: This test is failing because the API is no longer returning the ++expected output; it now includes the following warning: ++ ++Default address: The address you entered was found but more information is ++needed (such as an apartment, suite, or box number) to match to a specific ++address. ++ + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + # Good response #1 + subtest good_response_1 => sub { +@@ -81,6 +93,8 @@ + is( $hash->{Zip4}, '1441', 'Zip4 matches for Ivy Lane' ); + }; + ++=cut ++ + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + # Good response #2 + subtest good_response_1 => sub { +--- a/t/city_state_lookup.t ++++ b/t/city_state_lookup.t +@@ -21,6 +21,10 @@ + "environment variables to run these tests\n"; + } + ++my $is_testing = uc($ENV{USPS_WEBTOOLS_ENVIRONMENT}) eq 'TESTING'; ++ ++my $base = 'https://' . ($is_testing ? 'stg-' : '') . 'production.shippingapis.com/ShippingAPI.dll'; ++ + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + use_ok( $class ); + +@@ -29,7 +33,7 @@ + $verifier = $class->new( { + UserID => $ENV{USPS_WEBTOOLS_USERID}, + Password => $ENV{USPS_WEBTOOLS_PASSWORD}, +- Testing => 1, ++ Testing => $is_testing, + } ); + isa_ok( $verifier, $class ); + +@@ -44,7 +48,7 @@ + } ); + is( + $url, +- qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=CityStateLookup&XML=%3CCityStateLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CZipCode+ID%3D%220%22%3E%3CZip5%3E90210%3C%2FZip5%3E%3C%2FZipCode%3E%3C%2FCityStateLookupRequest%3E|, ++ qq|$base?API=CityStateLookup&XML=%3CCityStateLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CZipCode+ID%3D%220%22%3E%3CZip5%3E90210%3C%2FZip5%3E%3C%2FZipCode%3E%3C%2FCityStateLookupRequest%3E|, + "URL for 90210 is correct", + ); + +@@ -77,7 +81,7 @@ + } ); + is( + $url, +- qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=CityStateLookup&XML=%3CCityStateLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CZipCode+ID%3D%220%22%3E%3CZip5%3E20770%3C%2FZip5%3E%3C%2FZipCode%3E%3C%2FCityStateLookupRequest%3E|, ++ qq|$base?API=CityStateLookup&XML=%3CCityStateLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CZipCode+ID%3D%220%22%3E%3CZip5%3E20770%3C%2FZip5%3E%3C%2FZipCode%3E%3C%2FCityStateLookupRequest%3E|, + "URL for 20770 is correct", + ); + +@@ -110,7 +114,7 @@ + } ); + is( + $url, +- qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=CityStateLookup&XML=%3CCityStateLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CZipCode+ID%3D%220%22%3E%3CZip5%3E21113%3C%2FZip5%3E%3C%2FZipCode%3E%3C%2FCityStateLookupRequest%3E|, ++ qq|$base?API=CityStateLookup&XML=%3CCityStateLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CZipCode+ID%3D%220%22%3E%3CZip5%3E21113%3C%2FZip5%3E%3C%2FZipCode%3E%3C%2FCityStateLookupRequest%3E|, + "URL for 21113 is correct", + ); + +@@ -143,7 +147,7 @@ + } ); + is( + $url, +- qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=CityStateLookup&XML=%3CCityStateLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CZipCode+ID%3D%220%22%3E%3CZip5%3E21032%3C%2FZip5%3E%3C%2FZipCode%3E%3C%2FCityStateLookupRequest%3E|, ++ qq|$base?API=CityStateLookup&XML=%3CCityStateLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CZipCode+ID%3D%220%22%3E%3CZip5%3E21032%3C%2FZip5%3E%3C%2FZipCode%3E%3C%2FCityStateLookupRequest%3E|, + "URL for 21032 is correct", + ); + +@@ -182,7 +186,7 @@ + } ); + is( + $url, +- qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=CityStateLookup&XML=%3CCityStateLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CZipCode+ID%3D%220%22%3E%3CZip5%3E21117%3C%2FZip5%3E%3C%2FZipCode%3E%3C%2FCityStateLookupRequest%3E|, ++ qq|$base?API=CityStateLookup&XML=%3CCityStateLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CZipCode+ID%3D%220%22%3E%3CZip5%3E21117%3C%2FZip5%3E%3C%2FZipCode%3E%3C%2FCityStateLookupRequest%3E|, + "URL for Sharonwood Road is correct", + ); + +@@ -221,7 +225,7 @@ + } ); + is( + $url, +- qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=CityStateLookup&XML=%3CCityStateLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CZipCode+ID%3D%220%22%3E%3CZip5%3E99999%3C%2FZip5%3E%3C%2FZipCode%3E%3C%2FCityStateLookupRequest%3E|, ++ qq|$base?API=CityStateLookup&XML=%3CCityStateLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CZipCode+ID%3D%220%22%3E%3CZip5%3E99999%3C%2FZip5%3E%3C%2FZipCode%3E%3C%2FCityStateLookupRequest%3E|, + "URL for Sharonwood Road Error is correct", + ); + +--- a/t/test_or_live.t ++++ b/t/test_or_live.t +@@ -15,8 +15,8 @@ + ok( $webtools->_testing, "I think I'm testing" ); + + is( ! $webtools->_live, 1, "I don't think I'm live!" ); +- is( $webtools->_api_host, "testing.shippingapis.com", "Testing host is right" ); +- is( $webtools->_api_path, "/ShippingAPITest.dll", "Testing path is right" ); ++ is( $webtools->_api_host, "stg-production.shippingapis.com", "Testing host is right" ); ++ is( $webtools->_api_path, "/ShippingAPI.dll", "Testing path is right" ); + }; + + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +--- a/t/zip_code_lookup.t ++++ b/t/zip_code_lookup.t +@@ -21,6 +21,10 @@ + "environment variables to run these tests\n"; + } + ++my $is_testing = uc($ENV{USPS_WEBTOOLS_ENVIRONMENT}) eq 'TESTING'; ++ ++my $base = 'https://' . ($is_testing ? 'stg-' : '') . 'production.shippingapis.com/ShippingAPI.dll'; ++ + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + my $verifier; + subtest setup => sub { +@@ -29,13 +33,22 @@ + $verifier = $class->new( { + UserID => $ENV{USPS_WEBTOOLS_USERID}, + Password => $ENV{USPS_WEBTOOLS_PASSWORD}, +- Testing => 1, ++ Testing => $is_testing, + } ); + isa_ok( $verifier, $class ); + + can_ok( $verifier, $method ); + }; + ++=pod ++ ++2021-05-19: This test is failing because the API is no longer returning the ++expected output; it now includes the following warning: ++ ++Default address: The address you entered was found but more information is ++needed (such as an apartment, suite, or box number) to match to a specific ++address. ++ + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + # Good Request #1 + subtest good_request_1 => sub { +@@ -50,7 +63,7 @@ + } ); + is( + $url, +- qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E6406+Ivy+Lane%3C%2FAddress2%3E%3CCity%3EGreenbelt%3C%2FCity%3E%3CState%3EMD%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, ++ qq|$base?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E6406+Ivy+Lane%3C%2FAddress2%3E%3CCity%3EGreenbelt%3C%2FCity%3E%3CState%3EMD%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, + "URL for Ivy Lane is correct", + ); + +@@ -76,6 +89,8 @@ + is( $hash->{Zip4}, '1441', 'Zip4 matches for Ivy Lane' ); + }; + ++=cut ++ + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + # Good request 2 + subtest good_request_2 => sub { +@@ -90,7 +105,7 @@ + } ); + is( + $url, +- qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E8+Wildwood+Drive%3C%2FAddress2%3E%3CCity%3EOld+Lyme%3C%2FCity%3E%3CState%3ECT%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, ++ qq|$base?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E8+Wildwood+Drive%3C%2FAddress2%3E%3CCity%3EOld+Lyme%3C%2FCity%3E%3CState%3ECT%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, + "URL for Wildwood Drive is correct", + ); + +@@ -133,7 +148,7 @@ + } ); + is( + $url, +- qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E4411+Romlon+Street%3C%2FAddress2%3E%3CCity%3EBeltsville%3C%2FCity%3E%3CState%3EMD%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, ++ qq|$base?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E4411+Romlon+Street%3C%2FAddress2%3E%3CCity%3EBeltsville%3C%2FCity%3E%3CState%3EMD%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, + "URL for Romlan Street is correct", + ); + +@@ -176,7 +191,7 @@ + } ); + is( + $url, +- qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E3527+Sharonwood+Road+Apt.+3C%3C%2FAddress2%3E%3CCity%3ELaurel%3C%2FCity%3E%3CState%3EMD%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, ++ qq|$base?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E3527+Sharonwood+Road+Apt.+3C%3C%2FAddress2%3E%3CCity%3ELaurel%3C%2FCity%3E%3CState%3EMD%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, + "URL for Sharonwood Road is correct", + ); + +@@ -224,7 +239,7 @@ + } ); + is( + $url, +- qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E3527+Sharonwood+Road+Apt.+3C%3C%2FAddress2%3E%3CCity%3EWilmington%3C%2FCity%3E%3CState%3EDE%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, ++ qq|$base?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E3527+Sharonwood+Road+Apt.+3C%3C%2FAddress2%3E%3CCity%3EWilmington%3C%2FCity%3E%3CState%3EDE%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, + "URL for Sharonwood Road Error is correct", + ); + +@@ -279,7 +294,7 @@ + } ); + is( + $url, +- qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E1600+Pennsylvania+Avenue%3C%2FAddress2%3E%3CCity%3EWashington%3C%2FCity%3E%3CState%3EDC%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, ++ qq|$base?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E1600+Pennsylvania+Avenue%3C%2FAddress2%3E%3CCity%3EWashington%3C%2FCity%3E%3CState%3EDC%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, + "URL for Pennsylvania Avenue Error is correct", + ); + +@@ -330,7 +345,7 @@ + } ); + is( + $url, +- qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E123+Main+Street%3C%2FAddress2%3E%3CCity%3EWashington%3C%2FCity%3E%3CState%3EZZ%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, ++ qq|$base?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E123+Main+Street%3C%2FAddress2%3E%3CCity%3EWashington%3C%2FCity%3E%3CState%3EZZ%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, + "URL for Main Street Error is correct", + ); + +@@ -382,7 +397,7 @@ + } ); + is( + $url, +- qq|http://testing.shippingapis.com/ShippingAPITest.dll?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E123+Main+Street%3C%2FAddress2%3E%3CCity%3ETrenton%3C%2FCity%3E%3CState%3ENJ%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, ++ qq|$base?API=ZipCodeLookup&XML=%3CZipCodeLookupRequest+USERID%3D%22$ENV{USPS_WEBTOOLS_USERID}%22+PASSWORD%3D%22$ENV{USPS_WEBTOOLS_PASSWORD}%22%3E%3CAddress+ID%3D%220%22%3E%3CFirmName%3E%3C%2FFirmName%3E%3CAddress1%3E%3C%2FAddress1%3E%3CAddress2%3E123+Main+Street%3C%2FAddress2%3E%3CCity%3ETrenton%3C%2FCity%3E%3CState%3ENJ%3C%2FState%3E%3C%2FAddress%3E%3C%2FZipCodeLookupRequest%3E|, + "URL for Trenton, NJ Error is correct", + ); + +--- a/t/track_confirm.t ++++ /dev/null +@@ -1,14 +0,0 @@ +-#!/usr/bin/perl +- +- +-use Test::More; +- +-my $class = "Business::US::USPS::WebTools::TrackConfirm"; +-my $method = 'track'; +- +- +-# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +-use_ok( $class ); +- +- +-done_testing();

