Avatax_AddressService 1.0.12 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -13
- data/Avatax_AddressService.gemspec +19 -19
- data/LICENSE.txt +20 -20
- data/lib/address_log.txt +1 -1
- data/lib/{addressservice_dev.wsdl → addressservice.wsdl} +289 -289
- data/lib/avatax_addressservice.rb +187 -199
- data/lib/template_isauthorized.erb +21 -21
- data/lib/template_ping.erb +21 -21
- data/lib/template_validate.erb +39 -39
- data/samples/PingTest.rb +26 -25
- data/samples/ValidateAddressTest.rb +49 -50
- data/spec/addressservice_spec.rb +41 -41
- data/spec/isauthorized_spec.rb +76 -76
- data/spec/ping_spec.rb +76 -76
- data/spec/spec_helper.rb +16 -16
- data/spec/validate_spec.rb +84 -84
- metadata +14 -16
- data/Avatax Ruby SDK Guide.docx +0 -0
- data/lib/addressservice_prd.wsdl +0 -290
data/lib/template_validate.erb
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://avatax.avalara.com/services">
|
|
2
|
-
<soapenv:Header>
|
|
3
|
-
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
|
|
4
|
-
<wsse:UsernameToken wsu:Id="UsernameToken-7" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
|
|
5
|
-
<wsse:Username><%= @username %></wsse:Username>
|
|
6
|
-
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"><%= @password %></wsse:Password>
|
|
7
|
-
<wsu:Created>2012-03-02T23:41:44.511Z</wsu:Created>
|
|
8
|
-
</wsse:UsernameToken>
|
|
9
|
-
</wsse:Security>
|
|
10
|
-
<ser:Profile>
|
|
11
|
-
<ser:Name><%= @name %></ser:Name>
|
|
12
|
-
<ser:Client><%= @clientname %></ser:Client>
|
|
13
|
-
<ser:Adapter><%= @adapter %></ser:Adapter>
|
|
14
|
-
<ser:Machine><%= @machine %></ser:Machine>
|
|
15
|
-
</ser:Profile>
|
|
16
|
-
</soapenv:Header>
|
|
17
|
-
<soapenv:Body>
|
|
18
|
-
<ser:Validate>
|
|
19
|
-
<ser:ValidateRequest>
|
|
20
|
-
<ser:Address>
|
|
21
|
-
<ser:AddressCode><%= @addresscode %></ser:AddressCode>
|
|
22
|
-
<ser:Line1><%= @line1 %></ser:Line1>
|
|
23
|
-
<ser:Line2><%= @line2 %></ser:Line2>
|
|
24
|
-
<ser:Line3><%= @line3 %></ser:Line3>
|
|
25
|
-
<ser:City><%= @city %></ser:City>
|
|
26
|
-
<ser:Region><%= @region %></ser:Region>
|
|
27
|
-
<ser:PostalCode><%= @postalcode %></ser:PostalCode>
|
|
28
|
-
<ser:Country><%= @country %></ser:Country>
|
|
29
|
-
<ser:TaxRegionId><%= @taxregionid %></ser:TaxRegionId>
|
|
30
|
-
<ser:Latitude><%= @latitude %></ser:Latitude>
|
|
31
|
-
<ser:Longitude><%= @longitude %></ser:Longitude>
|
|
32
|
-
</ser:Address>
|
|
33
|
-
<ser:TextCase><%= @textcase %></ser:TextCase>
|
|
34
|
-
<ser:Coordinates><%= @coordinates %></ser:Coordinates>
|
|
35
|
-
<ser:Taxability><%= @taxability %></ser:Taxability>
|
|
36
|
-
<ser:Date>1900-01-01</ser:Date>
|
|
37
|
-
</ser:ValidateRequest>
|
|
38
|
-
</ser:Validate>
|
|
39
|
-
</soapenv:Body>
|
|
1
|
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://avatax.avalara.com/services">
|
|
2
|
+
<soapenv:Header>
|
|
3
|
+
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
|
|
4
|
+
<wsse:UsernameToken wsu:Id="UsernameToken-7" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
|
|
5
|
+
<wsse:Username><%= @username %></wsse:Username>
|
|
6
|
+
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"><%= @password %></wsse:Password>
|
|
7
|
+
<wsu:Created>2012-03-02T23:41:44.511Z</wsu:Created>
|
|
8
|
+
</wsse:UsernameToken>
|
|
9
|
+
</wsse:Security>
|
|
10
|
+
<ser:Profile>
|
|
11
|
+
<ser:Name><%= @name %></ser:Name>
|
|
12
|
+
<ser:Client><%= @clientname %></ser:Client>
|
|
13
|
+
<ser:Adapter><%= @adapter %></ser:Adapter>
|
|
14
|
+
<ser:Machine><%= @machine %></ser:Machine>
|
|
15
|
+
</ser:Profile>
|
|
16
|
+
</soapenv:Header>
|
|
17
|
+
<soapenv:Body>
|
|
18
|
+
<ser:Validate>
|
|
19
|
+
<ser:ValidateRequest>
|
|
20
|
+
<ser:Address>
|
|
21
|
+
<ser:AddressCode><%= @addresscode %></ser:AddressCode>
|
|
22
|
+
<ser:Line1><%= @line1 %></ser:Line1>
|
|
23
|
+
<ser:Line2><%= @line2 %></ser:Line2>
|
|
24
|
+
<ser:Line3><%= @line3 %></ser:Line3>
|
|
25
|
+
<ser:City><%= @city %></ser:City>
|
|
26
|
+
<ser:Region><%= @region %></ser:Region>
|
|
27
|
+
<ser:PostalCode><%= @postalcode %></ser:PostalCode>
|
|
28
|
+
<ser:Country><%= @country %></ser:Country>
|
|
29
|
+
<ser:TaxRegionId><%= @taxregionid %></ser:TaxRegionId>
|
|
30
|
+
<ser:Latitude><%= @latitude %></ser:Latitude>
|
|
31
|
+
<ser:Longitude><%= @longitude %></ser:Longitude>
|
|
32
|
+
</ser:Address>
|
|
33
|
+
<ser:TextCase><%= @textcase %></ser:TextCase>
|
|
34
|
+
<ser:Coordinates><%= @coordinates %></ser:Coordinates>
|
|
35
|
+
<ser:Taxability><%= @taxability %></ser:Taxability>
|
|
36
|
+
<ser:Date>1900-01-01</ser:Date>
|
|
37
|
+
</ser:ValidateRequest>
|
|
38
|
+
</ser:Validate>
|
|
39
|
+
</soapenv:Body>
|
|
40
40
|
</soapenv:Envelope>
|
data/samples/PingTest.rb
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
require_relative '../
|
|
2
|
-
#require 'Avatax_AddressService'
|
|
3
|
-
|
|
4
|
-
accountNumber = "1234567890"
|
|
5
|
-
licenseKey = "A1B2C3D4E5F6G7H8"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
# Header Level Parameters
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
# Required Header Parameters
|
|
12
|
-
:username => accountNumber,
|
|
13
|
-
:password => licenseKey,
|
|
14
|
-
:
|
|
15
|
-
:clientname => "AvaTaxSample",
|
|
16
|
-
|
|
17
|
-
# Optional Header Parameters
|
|
18
|
-
:name => "Development")
|
|
19
|
-
|
|
20
|
-
pingResult =
|
|
21
|
-
|
|
22
|
-
#Display the result
|
|
23
|
-
puts "PingTest ResultCode: " + pingResult[:result_code]
|
|
24
|
-
if pingResult[:result_code] != "Success"
|
|
25
|
-
|
|
1
|
+
require_relative '../lib/avatax_addressservice.rb'
|
|
2
|
+
#require 'Avatax_AddressService'
|
|
3
|
+
|
|
4
|
+
accountNumber = "1234567890"
|
|
5
|
+
licenseKey = "A1B2C3D4E5F6G7H8"
|
|
6
|
+
serviceURL = "https://development.avalara.net"
|
|
7
|
+
|
|
8
|
+
# Header Level Parameters
|
|
9
|
+
addressSvc = AvaTax::AddressService.new(
|
|
10
|
+
|
|
11
|
+
# Required Header Parameters
|
|
12
|
+
:username => accountNumber,
|
|
13
|
+
:password => licenseKey,
|
|
14
|
+
:service_url => serviceURL,
|
|
15
|
+
:clientname => "AvaTaxSample",
|
|
16
|
+
|
|
17
|
+
# Optional Header Parameters
|
|
18
|
+
:name => "Development")
|
|
19
|
+
|
|
20
|
+
pingResult = addressSvc.ping
|
|
21
|
+
|
|
22
|
+
#Display the result
|
|
23
|
+
puts "PingTest ResultCode: " + pingResult[:result_code]
|
|
24
|
+
if pingResult[:result_code] != "Success"
|
|
25
|
+
puts pingResult.to_s
|
|
26
|
+
pingResult[:messages].each { |message| puts message[:details] }
|
|
26
27
|
end
|
|
@@ -1,51 +1,50 @@
|
|
|
1
|
-
require_relative '../
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
:
|
|
14
|
-
:
|
|
15
|
-
:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
:
|
|
24
|
-
:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
:
|
|
28
|
-
:
|
|
29
|
-
:
|
|
30
|
-
:
|
|
31
|
-
:
|
|
32
|
-
:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
validateResult[:valid_addresses][:valid_address][:postal_code]
|
|
1
|
+
require_relative '../lib/avatax_addressservice.rb'
|
|
2
|
+
#require 'Avatax_AddressService'
|
|
3
|
+
|
|
4
|
+
accountNumber = "1234567890"
|
|
5
|
+
licenseKey = "A1B2C3D4E5F6G7H8"
|
|
6
|
+
serviceURL = "https://development.avalara.net"
|
|
7
|
+
|
|
8
|
+
# Header Level Parameters
|
|
9
|
+
addressSvc = AvaTax::AddressService.new(
|
|
10
|
+
|
|
11
|
+
# Required Header Parameters
|
|
12
|
+
:username => accountNumber,
|
|
13
|
+
:password => licenseKey,
|
|
14
|
+
:service_url => serviceURL,
|
|
15
|
+
:clientname => "AvaTaxSample",
|
|
16
|
+
|
|
17
|
+
# Optional Header Parameters
|
|
18
|
+
:name => "Development")
|
|
19
|
+
|
|
20
|
+
validateRequest = {
|
|
21
|
+
# Required Request Parameters
|
|
22
|
+
:line1 => "118 N Clark St",
|
|
23
|
+
:city => "Chicago",
|
|
24
|
+
:region => "IL",
|
|
25
|
+
# Optional Request Parameters
|
|
26
|
+
:line2 => "Suite 100",
|
|
27
|
+
:line3 => "ATTN Accounts Payable",
|
|
28
|
+
:country => "US",
|
|
29
|
+
:postalcode => "60602",
|
|
30
|
+
:coordinates => true,
|
|
31
|
+
:taxability => true,
|
|
32
|
+
:textcase => "Upper"
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
# Call the service
|
|
36
|
+
validateResult = addressSvc.validate(validateRequest)
|
|
37
|
+
|
|
38
|
+
# Print Results
|
|
39
|
+
puts "ValidateAddressTest Result: "+validateResult[:result_code]
|
|
40
|
+
if validateResult[:result_code] != "Success"
|
|
41
|
+
validateResult[:messages].each { |message| puts message[:details] }
|
|
42
|
+
else
|
|
43
|
+
puts validateResult[:valid_addresses][:valid_address][:line1] +
|
|
44
|
+
" " +
|
|
45
|
+
validateResult[:valid_addresses][:valid_address][:city] +
|
|
46
|
+
", " +
|
|
47
|
+
validateResult[:valid_addresses][:valid_address][:region] +
|
|
48
|
+
" " +
|
|
49
|
+
validateResult[:valid_addresses][:valid_address][:postal_code]
|
|
51
50
|
end
|
data/spec/addressservice_spec.rb
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
require "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "AddressService" do
|
|
4
|
-
before :each do
|
|
5
|
-
credentials = YAML::load(File.open('credentials.yml'))
|
|
6
|
-
@creds = {:username => credentials['username'],
|
|
7
|
-
:password => credentials['password'],
|
|
8
|
-
:clientname => credentials['clientname'],
|
|
9
|
-
:use_production_url => credentials['production']}
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
describe "does not allow instantiation with" do
|
|
13
|
-
it "no values" do
|
|
14
|
-
lambda { AvaTax::AddressService.new }.should raise_exception
|
|
15
|
-
end
|
|
16
|
-
it "optional values only" do
|
|
17
|
-
lambda { AvaTax::AddressService.new(
|
|
18
|
-
:clientname => @creds[:clientname],
|
|
19
|
-
:adapter => "AvaTaxCalcRuby",
|
|
20
|
-
:machine => "MyComputer",
|
|
21
|
-
:use_production_account => @creds[:use_production_url] ) }.should raise_exception
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
describe "allows instantiation with" do
|
|
25
|
-
it "required values only" do
|
|
26
|
-
lambda { AvaTax::AddressService.new(
|
|
27
|
-
:username => @creds[:username],
|
|
28
|
-
:password => @creds[:password],
|
|
29
|
-
:clientname => @creds[:clientname]) }.should_not raise_exception
|
|
30
|
-
end
|
|
31
|
-
it "required and optional values" do
|
|
32
|
-
lambda { AvaTax::AddressService.new(
|
|
33
|
-
:username => @creds[:username],
|
|
34
|
-
:password => @creds[:password],
|
|
35
|
-
:clientname => @creds[:clientname],
|
|
36
|
-
:adapter => "AvaTaxCalcRuby",
|
|
37
|
-
:machine => "MyComputer",
|
|
38
|
-
:use_production_account => false ) }.should_not raise_exception
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe "AddressService" do
|
|
4
|
+
before :each do
|
|
5
|
+
credentials = YAML::load(File.open('credentials.yml'))
|
|
6
|
+
@creds = {:username => credentials['username'],
|
|
7
|
+
:password => credentials['password'],
|
|
8
|
+
:clientname => credentials['clientname'],
|
|
9
|
+
:use_production_url => credentials['production']}
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
describe "does not allow instantiation with" do
|
|
13
|
+
it "no values" do
|
|
14
|
+
lambda { AvaTax::AddressService.new }.should raise_exception
|
|
15
|
+
end
|
|
16
|
+
it "optional values only" do
|
|
17
|
+
lambda { AvaTax::AddressService.new(
|
|
18
|
+
:clientname => @creds[:clientname],
|
|
19
|
+
:adapter => "AvaTaxCalcRuby",
|
|
20
|
+
:machine => "MyComputer",
|
|
21
|
+
:use_production_account => @creds[:use_production_url] ) }.should raise_exception
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
describe "allows instantiation with" do
|
|
25
|
+
it "required values only" do
|
|
26
|
+
lambda { AvaTax::AddressService.new(
|
|
27
|
+
:username => @creds[:username],
|
|
28
|
+
:password => @creds[:password],
|
|
29
|
+
:clientname => @creds[:clientname]) }.should_not raise_exception
|
|
30
|
+
end
|
|
31
|
+
it "required and optional values" do
|
|
32
|
+
lambda { AvaTax::AddressService.new(
|
|
33
|
+
:username => @creds[:username],
|
|
34
|
+
:password => @creds[:password],
|
|
35
|
+
:clientname => @creds[:clientname],
|
|
36
|
+
:adapter => "AvaTaxCalcRuby",
|
|
37
|
+
:machine => "MyComputer",
|
|
38
|
+
:use_production_account => false ) }.should_not raise_exception
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
42
|
end
|
data/spec/isauthorized_spec.rb
CHANGED
|
@@ -1,77 +1,77 @@
|
|
|
1
|
-
require "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe "IsAuthorized" do
|
|
4
|
-
before :each do
|
|
5
|
-
credentials = YAML::load(File.open('credentials.yml'))
|
|
6
|
-
@creds = {:username => credentials['username'],
|
|
7
|
-
:password => credentials['password'],
|
|
8
|
-
:clientname => credentials['clientname'],
|
|
9
|
-
:use_production_url => credentials['production']}
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
describe "returns a meaningful" do
|
|
13
|
-
it "error when URL is missing" do
|
|
14
|
-
@creds[:use_production_url] = nil
|
|
15
|
-
@service = AvaTax::AddressService.new(@creds)
|
|
16
|
-
@service.isauthorized[:result_code].should eql "Success"
|
|
17
|
-
end
|
|
18
|
-
it "success when URL is specified" do
|
|
19
|
-
@creds[:use_production_url] = false
|
|
20
|
-
@service = AvaTax::AddressService.new(@creds)
|
|
21
|
-
@service.isauthorized[:result_code].should eql "Success"
|
|
22
|
-
end
|
|
23
|
-
it "error when username is missing" do
|
|
24
|
-
@creds[:username] = nil
|
|
25
|
-
@service = AvaTax::AddressService.new(@creds)
|
|
26
|
-
@service.isauthorized[:result_code].should eql "Error"
|
|
27
|
-
end
|
|
28
|
-
it "error when password is omitted" do
|
|
29
|
-
@creds[:password] = nil
|
|
30
|
-
@service = AvaTax::AddressService.new(@creds)
|
|
31
|
-
@service.isauthorized[:result_code].should eql "Error"
|
|
32
|
-
end
|
|
33
|
-
it "success when clientname is omitted" do
|
|
34
|
-
@creds[:clientname] = nil
|
|
35
|
-
@service = AvaTax::AddressService.new(@creds)
|
|
36
|
-
@service.isauthorized[:result_code].should eql "Success"
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
describe "has consistent formatting for" do
|
|
41
|
-
it "internal logic errors" do
|
|
42
|
-
@service = AvaTax::AddressService.new(@creds)
|
|
43
|
-
lambda { @service.isauthorized("param1","param2") }.should raise_exception
|
|
44
|
-
end
|
|
45
|
-
it "server-side errors" do
|
|
46
|
-
@creds[:password] = nil
|
|
47
|
-
@service = AvaTax::AddressService.new(@creds)
|
|
48
|
-
@result = @service.isauthorized
|
|
49
|
-
@result[:result_code].should eql "Error" and
|
|
50
|
-
@result[:messages].kind_of?(Array).should eql true and
|
|
51
|
-
@result[:messages][0].should include(:details => "The user or account could not be authenticated.")
|
|
52
|
-
end
|
|
53
|
-
it "successful results" do
|
|
54
|
-
@service = AvaTax::AddressService.new(@creds)
|
|
55
|
-
@result = @service.isauthorized
|
|
56
|
-
@result[:result_code].should eql "Success" and @result[:expires].should_not be_nil
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
describe "requests with" do
|
|
60
|
-
it "missing required parameters fail" do
|
|
61
|
-
true #there are no required parameters for isauthorized
|
|
62
|
-
end
|
|
63
|
-
it "invalid parameters fail" do
|
|
64
|
-
@service = AvaTax::AddressService.new(@creds)
|
|
65
|
-
lambda { @service.isauthorized("param1","param2") }.should raise_exception
|
|
66
|
-
end
|
|
67
|
-
it "missing optional parameters succeed" do
|
|
68
|
-
@service = AvaTax::AddressService.new(@creds)
|
|
69
|
-
@service.isauthorized[:result_code].should eql "Success"
|
|
70
|
-
end
|
|
71
|
-
it "all parameters succeed" do
|
|
72
|
-
@service = AvaTax::AddressService.new(@creds)
|
|
73
|
-
@service.isauthorized("Message")[:result_code].should eql "Success"
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe "IsAuthorized" do
|
|
4
|
+
before :each do
|
|
5
|
+
credentials = YAML::load(File.open('credentials.yml'))
|
|
6
|
+
@creds = {:username => credentials['username'],
|
|
7
|
+
:password => credentials['password'],
|
|
8
|
+
:clientname => credentials['clientname'],
|
|
9
|
+
:use_production_url => credentials['production']}
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
describe "returns a meaningful" do
|
|
13
|
+
it "error when URL is missing" do
|
|
14
|
+
@creds[:use_production_url] = nil
|
|
15
|
+
@service = AvaTax::AddressService.new(@creds)
|
|
16
|
+
@service.isauthorized[:result_code].should eql "Success"
|
|
17
|
+
end
|
|
18
|
+
it "success when URL is specified" do
|
|
19
|
+
@creds[:use_production_url] = false
|
|
20
|
+
@service = AvaTax::AddressService.new(@creds)
|
|
21
|
+
@service.isauthorized[:result_code].should eql "Success"
|
|
22
|
+
end
|
|
23
|
+
it "error when username is missing" do
|
|
24
|
+
@creds[:username] = nil
|
|
25
|
+
@service = AvaTax::AddressService.new(@creds)
|
|
26
|
+
@service.isauthorized[:result_code].should eql "Error"
|
|
27
|
+
end
|
|
28
|
+
it "error when password is omitted" do
|
|
29
|
+
@creds[:password] = nil
|
|
30
|
+
@service = AvaTax::AddressService.new(@creds)
|
|
31
|
+
@service.isauthorized[:result_code].should eql "Error"
|
|
32
|
+
end
|
|
33
|
+
it "success when clientname is omitted" do
|
|
34
|
+
@creds[:clientname] = nil
|
|
35
|
+
@service = AvaTax::AddressService.new(@creds)
|
|
36
|
+
@service.isauthorized[:result_code].should eql "Success"
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe "has consistent formatting for" do
|
|
41
|
+
it "internal logic errors" do
|
|
42
|
+
@service = AvaTax::AddressService.new(@creds)
|
|
43
|
+
lambda { @service.isauthorized("param1","param2") }.should raise_exception
|
|
44
|
+
end
|
|
45
|
+
it "server-side errors" do
|
|
46
|
+
@creds[:password] = nil
|
|
47
|
+
@service = AvaTax::AddressService.new(@creds)
|
|
48
|
+
@result = @service.isauthorized
|
|
49
|
+
@result[:result_code].should eql "Error" and
|
|
50
|
+
@result[:messages].kind_of?(Array).should eql true and
|
|
51
|
+
@result[:messages][0].should include(:details => "The user or account could not be authenticated.")
|
|
52
|
+
end
|
|
53
|
+
it "successful results" do
|
|
54
|
+
@service = AvaTax::AddressService.new(@creds)
|
|
55
|
+
@result = @service.isauthorized
|
|
56
|
+
@result[:result_code].should eql "Success" and @result[:expires].should_not be_nil
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
describe "requests with" do
|
|
60
|
+
it "missing required parameters fail" do
|
|
61
|
+
true #there are no required parameters for isauthorized
|
|
62
|
+
end
|
|
63
|
+
it "invalid parameters fail" do
|
|
64
|
+
@service = AvaTax::AddressService.new(@creds)
|
|
65
|
+
lambda { @service.isauthorized("param1","param2") }.should raise_exception
|
|
66
|
+
end
|
|
67
|
+
it "missing optional parameters succeed" do
|
|
68
|
+
@service = AvaTax::AddressService.new(@creds)
|
|
69
|
+
@service.isauthorized[:result_code].should eql "Success"
|
|
70
|
+
end
|
|
71
|
+
it "all parameters succeed" do
|
|
72
|
+
@service = AvaTax::AddressService.new(@creds)
|
|
73
|
+
@service.isauthorized("Message")[:result_code].should eql "Success"
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
77
|
end
|