stamps 0.3.0 → 0.3.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.
- data/.gitignore +4 -0
- data/lib/stamps/configuration.rb +7 -7
- data/lib/stamps/errors.rb +4 -0
- data/lib/stamps/mapping.rb +12 -7
- data/lib/stamps/request.rb +19 -13
- data/lib/stamps/response.rb +5 -4
- data/lib/stamps/types.rb +12 -6
- data/lib/stamps/version.rb +1 -1
- data/stamps.gemspec +5 -3
- data/test/client/rate_test.rb +1 -1
- data/test/fixtures/GetRate.xml +79 -79
- data/test/fixtures/failed_auth.xml +10 -0
- data/test/helper.rb +2 -5
- data/test/request_test.rb +18 -0
- metadata +49 -15
- data/.rvmrc +0 -1
- data/Gemfile.lock +0 -53
data/.gitignore
CHANGED
data/lib/stamps/configuration.rb
CHANGED
@@ -16,10 +16,10 @@ module Stamps
|
|
16
16
|
:endpoint].freeze
|
17
17
|
|
18
18
|
# The endpoint that will be used to connect if none is set
|
19
|
-
DEFAULT_ENDPOINT = 'https://swsim.stamps.com/swsim/
|
20
|
-
|
19
|
+
DEFAULT_ENDPOINT = 'https://swsim.stamps.com/swsim/swsimv29.asmx'.freeze
|
20
|
+
|
21
21
|
# The default namespace used on Stamps.com wsdl
|
22
|
-
DEFAULT_NAMESPACE = 'http://stamps.com/xml/namespace/2010/11/swsim/
|
22
|
+
DEFAULT_NAMESPACE = 'http://stamps.com/xml/namespace/2010/11/swsim/swsimv29'
|
23
23
|
|
24
24
|
# @note JSON is preferred over XML because it is more concise and faster to parse.
|
25
25
|
DEFAULT_FORMAT = :hash
|
@@ -46,10 +46,10 @@ module Stamps
|
|
46
46
|
yield self
|
47
47
|
|
48
48
|
HTTPI.log = false
|
49
|
-
Savon.configure do |config|
|
50
|
-
|
51
|
-
|
52
|
-
end
|
49
|
+
# Savon.configure do |config|
|
50
|
+
# config.log = self.log_messages
|
51
|
+
# config.raise_errors = self.raise_errors
|
52
|
+
# end
|
53
53
|
end
|
54
54
|
|
55
55
|
# Create a hash of options and their values
|
data/lib/stamps/errors.rb
CHANGED
@@ -31,4 +31,8 @@ module Stamps
|
|
31
31
|
# Raised when Stamps.com returns the HTTP status code 503
|
32
32
|
class ServiceUnavailable < Error; end
|
33
33
|
|
34
|
+
# Raised when the get_authenticator_token returns errors
|
35
|
+
# See https://github.com/mattsears/stamps/issues/7
|
36
|
+
class InvalidIntegrationID < Error; end
|
37
|
+
|
34
38
|
end
|
data/lib/stamps/mapping.rb
CHANGED
@@ -73,21 +73,26 @@ module Stamps
|
|
73
73
|
|
74
74
|
# Maps :rate to AddOns map
|
75
75
|
def add_ons=(addons)
|
76
|
-
self[:AddOns] = AddOnsArray.new(:
|
76
|
+
self[:AddOns] = AddOnsArray.new(:add_on_v4 => addons[:add_on_v4])
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
80
|
class AddOnsArray < Hashie::Trash
|
81
|
-
property :
|
82
|
-
def
|
81
|
+
property :AddOnV4, :from => :add_on_v4
|
82
|
+
def add_on_v4=(vals)
|
83
83
|
return unless vals
|
84
|
-
self[:
|
84
|
+
self[:AddOnV4] = vals.map{ |value| AddOnV4.new(value).to_hash }
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
88
|
-
class
|
88
|
+
class AddOnV4 < Hashie::Trash
|
89
89
|
property :Amount, :from => :amount
|
90
|
-
property :AddOnType, :from => :
|
90
|
+
property :AddOnType, :from => :add_on_type
|
91
|
+
property :ProhibitedWithAnyOf, :from => :prohibited_with
|
92
|
+
property :MissingData, :from => :missing_data
|
93
|
+
def prohibited_with_any_of; end
|
94
|
+
def prohibited_with_any_of=(vals); end
|
95
|
+
property :RequiresAllOf, :from => :requires_all_of
|
91
96
|
end
|
92
97
|
|
93
98
|
class Stamp < Hashie::Trash
|
@@ -103,7 +108,7 @@ module Stamps
|
|
103
108
|
property :ImageType, :from => :image_type
|
104
109
|
property :EltronPrinterDPIType, :from => :label_resolution
|
105
110
|
property :memo
|
106
|
-
property :recipient_email
|
111
|
+
property :recipient_email
|
107
112
|
property :deliveryNotification, :from => :notify
|
108
113
|
property :shipmentNotificationCC, :from => :notify_crates
|
109
114
|
property :shipmentNotificationFromCompany, :from => :notify_from_company
|
data/lib/stamps/request.rb
CHANGED
@@ -9,19 +9,20 @@ module Stamps
|
|
9
9
|
|
10
10
|
# Perform an HTTP request
|
11
11
|
def request(web_method, params, raw=false)
|
12
|
-
client = Savon
|
13
|
-
|
14
|
-
|
12
|
+
client = Savon.client do |globals|
|
13
|
+
globals.endpoint self.endpoint
|
14
|
+
globals.namespace self.namespace
|
15
|
+
globals.namespaces("xmlns:tns" => self.namespace)
|
16
|
+
globals.log false
|
17
|
+
globals.logger Logger.new(STDOUT)
|
18
|
+
globals.raise_errors false
|
19
|
+
globals.headers({ "SoapAction" => formatted_soap_action(web_method) })
|
20
|
+
globals.element_form_default :qualified
|
21
|
+
globals.namespace_identifier :tns
|
15
22
|
end
|
16
23
|
|
17
|
-
response = client.
|
18
|
-
|
19
|
-
soap.namespace = 'tns'
|
20
|
-
soap.element_form_default = :qualified
|
21
|
-
soap.env_namespace = 'soap'
|
22
|
-
soap.namespaces["xmlns:tns"] = self.namespace
|
23
|
-
soap.body = params.to_hash
|
24
|
-
end
|
24
|
+
response = client.call(web_method, :message => params.to_hash)
|
25
|
+
|
25
26
|
Stamps::Response.new(response).to_hash
|
26
27
|
end
|
27
28
|
|
@@ -36,14 +37,19 @@ module Stamps
|
|
36
37
|
# Make Authentication request for the user
|
37
38
|
#
|
38
39
|
def get_authenticator_token
|
39
|
-
self.request('AuthenticateUser',
|
40
|
+
response_hash = self.request('AuthenticateUser',
|
40
41
|
Stamps::Mapping::AuthenticateUser.new(
|
41
42
|
:credentials => {
|
42
43
|
:integration_id => self.integration_id,
|
43
44
|
:username => self.username,
|
44
45
|
:password => self.password
|
45
46
|
})
|
46
|
-
)
|
47
|
+
)
|
48
|
+
if response_hash[:authenticate_user_response] != nil
|
49
|
+
response_hash[:authenticate_user_response][:authenticator]
|
50
|
+
else
|
51
|
+
raise Stamps::InvalidIntegrationID.new(response_hash[:errors][0])
|
52
|
+
end
|
47
53
|
end
|
48
54
|
|
49
55
|
# Concatenates namespace and web method in a way the API can understand
|
data/lib/stamps/response.rb
CHANGED
@@ -23,7 +23,8 @@ module Stamps
|
|
23
23
|
self.hash.merge!(:errors => self.errors)
|
24
24
|
self.hash.merge!(:valid? => self.valid)
|
25
25
|
self.hash
|
26
|
-
|
26
|
+
# binding.pry
|
27
|
+
Stamps.format.to_s.downcase == 'hashie' ? Hashie::Trash.new(@hash) : self.hash
|
27
28
|
end
|
28
29
|
|
29
30
|
# Um, there's gotta be a better way
|
@@ -37,7 +38,7 @@ module Stamps
|
|
37
38
|
#
|
38
39
|
def raise_errors
|
39
40
|
message = 'FIXME: Need to parse http for response message'
|
40
|
-
return
|
41
|
+
return self.format_soap_faults if savon.soap_fault?
|
41
42
|
|
42
43
|
case http.code.to_i
|
43
44
|
when 200
|
@@ -62,8 +63,8 @@ module Stamps
|
|
62
63
|
# Include any errors in the response
|
63
64
|
#
|
64
65
|
def format_soap_faults
|
65
|
-
fault = self.hash.delete(:fault)
|
66
|
-
self.errors << fault[:faultstring]
|
66
|
+
fault = self.hash.delete("soap:Fault") || self.hash.delete(:fault)
|
67
|
+
self.errors << (fault[:faultstring] || fault["faultstring"])
|
67
68
|
self.valid = false
|
68
69
|
end
|
69
70
|
|
data/lib/stamps/types.rb
CHANGED
@@ -16,17 +16,24 @@ module Stamps
|
|
16
16
|
'Flat Rate Envelope',
|
17
17
|
'Flat Rate Padded Envelope',
|
18
18
|
'Large Package',
|
19
|
-
'Oversized Package'
|
19
|
+
'Oversized Package',
|
20
|
+
'Regional Rate Box A',
|
21
|
+
'Regional Rate Box B',
|
22
|
+
'Legal Flat Rate Envelope',
|
23
|
+
'Regional Rate Box C'].freeze
|
20
24
|
|
21
25
|
SERVICE = {
|
22
26
|
'US-FC' => 'USPS First-Class Mail',
|
23
27
|
'US-MM' => 'USPS Media Mail',
|
24
|
-
'US-PP' => 'USPS Parcel Post',
|
25
28
|
'US-PM' => 'USPS Priority Mail',
|
29
|
+
'US-BP' => 'USPS BP',
|
30
|
+
'US-LM' => 'USPS LM',
|
26
31
|
'US-XM' => 'USPS Express Mail',
|
27
32
|
'US-EMI' => 'USPS Express Mail International',
|
28
33
|
'US-PMI' => 'USPS Priority Mail International',
|
29
|
-
'US-FCI' => 'USPS First Class Mail International'
|
34
|
+
'US-FCI' => 'USPS First Class Mail International',
|
35
|
+
'US-CM' => 'USPS Critical Mail',
|
36
|
+
'US-PS' => 'USPS Parcel Select'
|
30
37
|
}
|
31
38
|
|
32
39
|
ADD_ONS = {
|
@@ -46,10 +53,9 @@ module Stamps
|
|
46
53
|
'US-A-RRM' => 'Return Receipt for Merchandise',
|
47
54
|
'US-A-SC' => 'USPS Signature Confirmation',
|
48
55
|
'US-A-SH' => 'Special Handling',
|
49
|
-
'US-A-WDS' => 'USPS Express - Waive Delivery Signature',
|
50
|
-
'US-A-NDW' => 'Do not Deliver on Saturday',
|
51
|
-
'US-A-ESH' => 'Sunday/Holiday Delivery Guaranteed',
|
52
56
|
'US-A-NND' => 'Notice of non-delivery',
|
57
|
+
'US-A-SR' => 'Unknow Service Name SR',
|
58
|
+
'US-A-RRE' => 'Unknow Service Name RRE'
|
53
59
|
}
|
54
60
|
|
55
61
|
CARRIER_PICKUP_LOCATION = {
|
data/lib/stamps/version.rb
CHANGED
data/stamps.gemspec
CHANGED
@@ -26,13 +26,15 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.add_development_dependency('awesome_print')
|
27
27
|
s.add_development_dependency('yard')
|
28
28
|
s.add_development_dependency('bluecloth')
|
29
|
+
s.add_development_dependency('rake')
|
30
|
+
s.add_development_dependency('pry')
|
29
31
|
|
30
32
|
# We have to use savon 0.8.6 for now since newer versions of savon don't
|
31
33
|
# convert booleans, dates, or decimals consistently.
|
32
34
|
# See: https://github.com/rubiii/savon/issues/301
|
33
|
-
s.add_runtime_dependency('savon', '
|
34
|
-
s.add_runtime_dependency('httpi', '
|
35
|
-
s.add_runtime_dependency('json', '~> 1.
|
35
|
+
s.add_runtime_dependency('savon', '~> 2.3.0')
|
36
|
+
s.add_runtime_dependency('httpi', '~> 2.1.0')
|
37
|
+
s.add_runtime_dependency('json', '~> 1.0')
|
36
38
|
s.add_runtime_dependency('multi_json', '~> 1.0')
|
37
39
|
s.add_runtime_dependency('hashie', '~> 1.0.0')
|
38
40
|
end
|
data/test/client/rate_test.rb
CHANGED
data/test/fixtures/GetRate.xml
CHANGED
@@ -16,141 +16,141 @@
|
|
16
16
|
<ShipDate>2011-04-21</ShipDate>
|
17
17
|
<DimWeighting>N</DimWeighting>
|
18
18
|
<AddOns>
|
19
|
-
<
|
19
|
+
<AddOnV4>
|
20
20
|
<AddOnType>US-A-INS</AddOnType>
|
21
21
|
<ProhibitedWithAnyOf>
|
22
|
-
<
|
23
|
-
<
|
24
|
-
<
|
25
|
-
<
|
26
|
-
<
|
22
|
+
<AddOnTypeV4>SC-A-HP</AddOnTypeV4>
|
23
|
+
<AddOnTypeV4>US-A-REG</AddOnTypeV4>
|
24
|
+
<AddOnTypeV4>US-A-CM</AddOnTypeV4>
|
25
|
+
<AddOnTypeV4>US-A-COD</AddOnTypeV4>
|
26
|
+
<AddOnTypeV4>SC-A-INS</AddOnTypeV4>
|
27
27
|
</ProhibitedWithAnyOf>
|
28
28
|
<MissingData>InsuredValue</MissingData>
|
29
|
-
</
|
30
|
-
<
|
29
|
+
</AddOnV4>
|
30
|
+
<AddOnV4>
|
31
31
|
<AddOnType>US-A-COD</AddOnType>
|
32
32
|
<ProhibitedWithAnyOf>
|
33
|
-
<
|
34
|
-
<
|
35
|
-
<
|
36
|
-
<
|
33
|
+
<AddOnTypeV4>SC-A-HP</AddOnTypeV4>
|
34
|
+
<AddOnTypeV4>US-A-RRM</AddOnTypeV4>
|
35
|
+
<AddOnTypeV4>US-A-INS</AddOnTypeV4>
|
36
|
+
<AddOnTypeV4>US-A-CM</AddOnTypeV4>
|
37
37
|
</ProhibitedWithAnyOf>
|
38
38
|
<MissingData>CODValue</MissingData>
|
39
|
-
</
|
40
|
-
<
|
39
|
+
</AddOnV4>
|
40
|
+
<AddOnV4>
|
41
41
|
<AddOnType>US-A-DC</AddOnType>
|
42
42
|
<ProhibitedWithAnyOf>
|
43
|
-
<
|
44
|
-
<
|
43
|
+
<AddOnTypeV4>US-A-SC</AddOnTypeV4>
|
44
|
+
<AddOnTypeV4>US-A-CM</AddOnTypeV4>
|
45
45
|
</ProhibitedWithAnyOf>
|
46
|
-
</
|
47
|
-
<
|
46
|
+
</AddOnV4>
|
47
|
+
<AddOnV4>
|
48
48
|
<Amount>2.05</Amount>
|
49
49
|
<AddOnType>US-A-SC</AddOnType>
|
50
50
|
<ProhibitedWithAnyOf>
|
51
|
-
<
|
52
|
-
<
|
53
|
-
<
|
51
|
+
<AddOnTypeV4>US-A-DC</AddOnTypeV4>
|
52
|
+
<AddOnTypeV4>US-A-CM</AddOnTypeV4>
|
53
|
+
<AddOnTypeV4>US-A-RRM</AddOnTypeV4>
|
54
54
|
</ProhibitedWithAnyOf>
|
55
|
-
</
|
56
|
-
<
|
55
|
+
</AddOnV4>
|
56
|
+
<AddOnV4>
|
57
57
|
<Amount>2.85</Amount>
|
58
58
|
<AddOnType>US-A-CM</AddOnType>
|
59
59
|
<ProhibitedWithAnyOf>
|
60
|
-
<
|
61
|
-
<
|
62
|
-
<
|
63
|
-
<
|
64
|
-
<
|
65
|
-
<
|
66
|
-
<
|
60
|
+
<AddOnTypeV4>SC-A-HP</AddOnTypeV4>
|
61
|
+
<AddOnTypeV4>US-A-RRM</AddOnTypeV4>
|
62
|
+
<AddOnTypeV4>US-A-REG</AddOnTypeV4>
|
63
|
+
<AddOnTypeV4>US-A-DC</AddOnTypeV4>
|
64
|
+
<AddOnTypeV4>US-A-COD</AddOnTypeV4>
|
65
|
+
<AddOnTypeV4>US-A-SC</AddOnTypeV4>
|
66
|
+
<AddOnTypeV4>US-A-INS</AddOnTypeV4>
|
67
67
|
</ProhibitedWithAnyOf>
|
68
|
-
</
|
69
|
-
<
|
68
|
+
</AddOnV4>
|
69
|
+
<AddOnV4>
|
70
70
|
<Amount>2.3</Amount>
|
71
71
|
<AddOnType>US-A-RR</AddOnType>
|
72
72
|
<RequiresAllOf>
|
73
73
|
<RequiresOneOf>
|
74
|
-
<
|
75
|
-
<
|
76
|
-
<
|
77
|
-
<
|
74
|
+
<AddOnTypeV4>US-A-COD</AddOnTypeV4>
|
75
|
+
<AddOnTypeV4>US-A-REG</AddOnTypeV4>
|
76
|
+
<AddOnTypeV4>US-A-CM</AddOnTypeV4>
|
77
|
+
<AddOnTypeV4>US-A-INS</AddOnTypeV4>
|
78
78
|
</RequiresOneOf>
|
79
79
|
</RequiresAllOf>
|
80
80
|
<ProhibitedWithAnyOf>
|
81
|
-
<
|
82
|
-
<
|
81
|
+
<AddOnTypeV4>SC-A-HP</AddOnTypeV4>
|
82
|
+
<AddOnTypeV4>US-A-RRM</AddOnTypeV4>
|
83
83
|
</ProhibitedWithAnyOf>
|
84
|
-
</
|
85
|
-
<
|
84
|
+
</AddOnV4>
|
85
|
+
<AddOnV4>
|
86
86
|
<Amount>10.75</Amount>
|
87
87
|
<AddOnType>US-A-REG</AddOnType>
|
88
88
|
<ProhibitedWithAnyOf>
|
89
|
-
<
|
90
|
-
<
|
91
|
-
<
|
92
|
-
<
|
93
|
-
<
|
89
|
+
<AddOnTypeV4>SC-A-HP</AddOnTypeV4>
|
90
|
+
<AddOnTypeV4>US-A-CM</AddOnTypeV4>
|
91
|
+
<AddOnTypeV4>US-A-INS</AddOnTypeV4>
|
92
|
+
<AddOnTypeV4>US-A-RRM</AddOnTypeV4>
|
93
|
+
<AddOnTypeV4>SC-A-INS</AddOnTypeV4>
|
94
94
|
</ProhibitedWithAnyOf>
|
95
|
-
</
|
96
|
-
<
|
95
|
+
</AddOnV4>
|
96
|
+
<AddOnV4>
|
97
97
|
<Amount>4.5</Amount>
|
98
98
|
<AddOnType>US-A-RD</AddOnType>
|
99
99
|
<RequiresAllOf>
|
100
100
|
<RequiresOneOf>
|
101
|
-
<
|
102
|
-
<
|
103
|
-
<
|
104
|
-
<
|
101
|
+
<AddOnTypeV4>US-A-COD</AddOnTypeV4>
|
102
|
+
<AddOnTypeV4>US-A-REG</AddOnTypeV4>
|
103
|
+
<AddOnTypeV4>US-A-CM</AddOnTypeV4>
|
104
|
+
<AddOnTypeV4>US-A-INS</AddOnTypeV4>
|
105
105
|
</RequiresOneOf>
|
106
106
|
</RequiresAllOf>
|
107
107
|
<ProhibitedWithAnyOf>
|
108
|
-
<
|
109
|
-
<
|
108
|
+
<AddOnTypeV4>SC-A-HP</AddOnTypeV4>
|
109
|
+
<AddOnTypeV4>US-A-RRM</AddOnTypeV4>
|
110
110
|
</ProhibitedWithAnyOf>
|
111
|
-
</
|
112
|
-
<
|
111
|
+
</AddOnV4>
|
112
|
+
<AddOnV4>
|
113
113
|
<AddOnType>SC-A-INS</AddOnType>
|
114
114
|
<ProhibitedWithAnyOf>
|
115
|
-
<
|
116
|
-
<
|
115
|
+
<AddOnTypeV4>US-A-REG</AddOnTypeV4>
|
116
|
+
<AddOnTypeV4>US-A-INS</AddOnTypeV4>
|
117
117
|
</ProhibitedWithAnyOf>
|
118
118
|
<MissingData>InsuredValue</MissingData>
|
119
|
-
</
|
120
|
-
<
|
119
|
+
</AddOnV4>
|
120
|
+
<AddOnV4>
|
121
121
|
<AddOnType>SC-A-HP</AddOnType>
|
122
122
|
<ProhibitedWithAnyOf>
|
123
|
-
<
|
124
|
-
<
|
125
|
-
<
|
126
|
-
<
|
127
|
-
<
|
128
|
-
<
|
129
|
-
<
|
123
|
+
<AddOnTypeV4>US-A-RRM</AddOnTypeV4>
|
124
|
+
<AddOnTypeV4>US-A-INS</AddOnTypeV4>
|
125
|
+
<AddOnTypeV4>US-A-REG</AddOnTypeV4>
|
126
|
+
<AddOnTypeV4>US-A-RD</AddOnTypeV4>
|
127
|
+
<AddOnTypeV4>US-A-COD</AddOnTypeV4>
|
128
|
+
<AddOnTypeV4>US-A-CM</AddOnTypeV4>
|
129
|
+
<AddOnTypeV4>US-A-RR</AddOnTypeV4>
|
130
130
|
</ProhibitedWithAnyOf>
|
131
|
-
</
|
132
|
-
<
|
131
|
+
</AddOnV4>
|
132
|
+
<AddOnV4>
|
133
133
|
<Amount>3.9</Amount>
|
134
134
|
<AddOnType>US-A-NND</AddOnType>
|
135
135
|
<RequiresAllOf>
|
136
136
|
<RequiresOneOf>
|
137
|
-
<
|
137
|
+
<AddOnTypeV4>US-A-COD</AddOnTypeV4>
|
138
138
|
</RequiresOneOf>
|
139
139
|
</RequiresAllOf>
|
140
|
-
</
|
141
|
-
<
|
140
|
+
</AddOnV4>
|
141
|
+
<AddOnV4>
|
142
142
|
<Amount>3.85</Amount>
|
143
143
|
<AddOnType>US-A-RRM</AddOnType>
|
144
144
|
<ProhibitedWithAnyOf>
|
145
|
-
<
|
146
|
-
<
|
147
|
-
<
|
148
|
-
<
|
149
|
-
<
|
150
|
-
<
|
151
|
-
<
|
145
|
+
<AddOnTypeV4>SC-A-HP</AddOnTypeV4>
|
146
|
+
<AddOnTypeV4>US-A-REG</AddOnTypeV4>
|
147
|
+
<AddOnTypeV4>US-A-RD</AddOnTypeV4>
|
148
|
+
<AddOnTypeV4>US-A-COD</AddOnTypeV4>
|
149
|
+
<AddOnTypeV4>US-A-SC</AddOnTypeV4>
|
150
|
+
<AddOnTypeV4>US-A-CM</AddOnTypeV4>
|
151
|
+
<AddOnTypeV4>US-A-RR</AddOnTypeV4>
|
152
152
|
</ProhibitedWithAnyOf>
|
153
|
-
</
|
153
|
+
</AddOnV4>
|
154
154
|
</AddOns>
|
155
155
|
<EffectiveWeightInOunces>8</EffectiveWeightInOunces>
|
156
156
|
<IsIntraBMC>true</IsIntraBMC>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
2
|
+
<soap:Body>
|
3
|
+
<soap:Fault>
|
4
|
+
<faultcode>soap:Client</faultcode>
|
5
|
+
<faultstring>Server did not recognize the value of HTTP Header SOAPAction: http://stamps.com/xml/namespace/2013/05/swsim/swsimv26/AuthenticateUser.</faultstring>
|
6
|
+
<detail />
|
7
|
+
</soap:Fault>
|
8
|
+
</soap:Body>
|
9
|
+
</soap:Envelope>
|
10
|
+
|
data/test/helper.rb
CHANGED
@@ -35,6 +35,7 @@ end
|
|
35
35
|
# Stub requests
|
36
36
|
def stub_post(web_method, soap_action = nil)
|
37
37
|
soap_action = web_method if soap_action.nil?
|
38
|
+
|
38
39
|
stub_request(:post, Stamps.endpoint).
|
39
40
|
with(:headers => {"SoapAction" => "#{Stamps.namespace}/#{soap_action}"}).
|
40
41
|
to_return(:body => fixture("#{web_method}.xml"))
|
@@ -42,7 +43,7 @@ end
|
|
42
43
|
|
43
44
|
def stub_response(web_method, code = 200)
|
44
45
|
http_response = HTTPI::Response.new(code, {}, fixture("#{web_method}.xml").read)
|
45
|
-
Stamps::Response.new(Savon::
|
46
|
+
Stamps::Response.new(Savon::Response.new(http_response, {}, {}))
|
46
47
|
end
|
47
48
|
|
48
49
|
def fixture_path
|
@@ -52,7 +53,3 @@ end
|
|
52
53
|
def fixture(file)
|
53
54
|
File.new(fixture_path + '/' + file)
|
54
55
|
end
|
55
|
-
|
56
|
-
Savon.configure do |config|
|
57
|
-
config.log = false # disable logging
|
58
|
-
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
$:.unshift File.dirname(__FILE__) # allows command line to execute tests
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
class RequestTest < Test::Unit::TestCase
|
5
|
+
context "get_authenticator_token" do
|
6
|
+
context "with invalid authentication token" do
|
7
|
+
setup do
|
8
|
+
stub_post("failed_auth", "AuthenticateUser")
|
9
|
+
end
|
10
|
+
|
11
|
+
should "raise an exception" do
|
12
|
+
assert_raises Stamps::InvalidIntegrationID do
|
13
|
+
Stamps::API.new.get_authenticator_token
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stamps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-08-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: simplecov
|
@@ -123,38 +123,70 @@ dependencies:
|
|
123
123
|
- - ! '>='
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: rake
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: pry
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ! '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
150
|
+
type: :development
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
126
158
|
- !ruby/object:Gem::Dependency
|
127
159
|
name: savon
|
128
160
|
requirement: !ruby/object:Gem::Requirement
|
129
161
|
none: false
|
130
162
|
requirements:
|
131
|
-
- -
|
163
|
+
- - ~>
|
132
164
|
- !ruby/object:Gem::Version
|
133
|
-
version:
|
165
|
+
version: 2.3.0
|
134
166
|
type: :runtime
|
135
167
|
prerelease: false
|
136
168
|
version_requirements: !ruby/object:Gem::Requirement
|
137
169
|
none: false
|
138
170
|
requirements:
|
139
|
-
- -
|
171
|
+
- - ~>
|
140
172
|
- !ruby/object:Gem::Version
|
141
|
-
version:
|
173
|
+
version: 2.3.0
|
142
174
|
- !ruby/object:Gem::Dependency
|
143
175
|
name: httpi
|
144
176
|
requirement: !ruby/object:Gem::Requirement
|
145
177
|
none: false
|
146
178
|
requirements:
|
147
|
-
- -
|
179
|
+
- - ~>
|
148
180
|
- !ruby/object:Gem::Version
|
149
|
-
version:
|
181
|
+
version: 2.1.0
|
150
182
|
type: :runtime
|
151
183
|
prerelease: false
|
152
184
|
version_requirements: !ruby/object:Gem::Requirement
|
153
185
|
none: false
|
154
186
|
requirements:
|
155
|
-
- -
|
187
|
+
- - ~>
|
156
188
|
- !ruby/object:Gem::Version
|
157
|
-
version:
|
189
|
+
version: 2.1.0
|
158
190
|
- !ruby/object:Gem::Dependency
|
159
191
|
name: json
|
160
192
|
requirement: !ruby/object:Gem::Requirement
|
@@ -162,7 +194,7 @@ dependencies:
|
|
162
194
|
requirements:
|
163
195
|
- - ~>
|
164
196
|
- !ruby/object:Gem::Version
|
165
|
-
version: 1.
|
197
|
+
version: '1.0'
|
166
198
|
type: :runtime
|
167
199
|
prerelease: false
|
168
200
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -170,7 +202,7 @@ dependencies:
|
|
170
202
|
requirements:
|
171
203
|
- - ~>
|
172
204
|
- !ruby/object:Gem::Version
|
173
|
-
version: 1.
|
205
|
+
version: '1.0'
|
174
206
|
- !ruby/object:Gem::Dependency
|
175
207
|
name: multi_json
|
176
208
|
requirement: !ruby/object:Gem::Requirement
|
@@ -213,9 +245,7 @@ extensions: []
|
|
213
245
|
extra_rdoc_files: []
|
214
246
|
files:
|
215
247
|
- .gitignore
|
216
|
-
- .rvmrc
|
217
248
|
- Gemfile
|
218
|
-
- Gemfile.lock
|
219
249
|
- LICENSE.md
|
220
250
|
- README.md
|
221
251
|
- Rakefile
|
@@ -251,8 +281,10 @@ files:
|
|
251
281
|
- test/fixtures/InvalidSoap.xml
|
252
282
|
- test/fixtures/PurchasePostage.xml
|
253
283
|
- test/fixtures/TrackShipment.xml
|
284
|
+
- test/fixtures/failed_auth.xml
|
254
285
|
- test/helper.rb
|
255
286
|
- test/mapping_test.rb
|
287
|
+
- test/request_test.rb
|
256
288
|
- test/response_test.rb
|
257
289
|
- test/stamps_test.rb
|
258
290
|
- test/types_test.rb
|
@@ -276,7 +308,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
276
308
|
version: '0'
|
277
309
|
requirements: []
|
278
310
|
rubyforge_project: stamps
|
279
|
-
rubygems_version: 1.8.
|
311
|
+
rubygems_version: 1.8.23
|
280
312
|
signing_key:
|
281
313
|
specification_version: 3
|
282
314
|
summary: Ruby wrapper for the Stamps.com Web Services API
|
@@ -297,8 +329,10 @@ test_files:
|
|
297
329
|
- test/fixtures/InvalidSoap.xml
|
298
330
|
- test/fixtures/PurchasePostage.xml
|
299
331
|
- test/fixtures/TrackShipment.xml
|
332
|
+
- test/fixtures/failed_auth.xml
|
300
333
|
- test/helper.rb
|
301
334
|
- test/mapping_test.rb
|
335
|
+
- test/request_test.rb
|
302
336
|
- test/response_test.rb
|
303
337
|
- test/stamps_test.rb
|
304
338
|
- test/types_test.rb
|
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm 1.9.2@stamps --create
|
data/Gemfile.lock
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
stamps (0.2.0)
|
5
|
-
hashie (~> 1.0.0)
|
6
|
-
httpi (= 0.7.9)
|
7
|
-
json (~> 1.5.1)
|
8
|
-
multi_json (~> 1.0)
|
9
|
-
savon (= 0.8.6)
|
10
|
-
|
11
|
-
GEM
|
12
|
-
remote: http://rubygems.org/
|
13
|
-
specs:
|
14
|
-
addressable (2.2.4)
|
15
|
-
awesome_print (0.3.2)
|
16
|
-
bluecloth (2.1.0)
|
17
|
-
builder (3.0.0)
|
18
|
-
crack (0.1.8)
|
19
|
-
gyoku (0.4.5)
|
20
|
-
builder (>= 2.1.2)
|
21
|
-
hashie (1.0.0)
|
22
|
-
httpi (0.7.9)
|
23
|
-
rack
|
24
|
-
json (1.5.4)
|
25
|
-
mocha (0.9.12)
|
26
|
-
multi_json (1.3.6)
|
27
|
-
rack (1.4.1)
|
28
|
-
savon (0.8.6)
|
29
|
-
builder (>= 2.1.2)
|
30
|
-
crack (~> 0.1.8)
|
31
|
-
gyoku (>= 0.3.0)
|
32
|
-
httpi (>= 0.7.8)
|
33
|
-
shoulda (2.11.3)
|
34
|
-
simplecov (0.4.1)
|
35
|
-
simplecov-html (~> 0.4.3)
|
36
|
-
simplecov-html (0.4.3)
|
37
|
-
webmock (1.6.2)
|
38
|
-
addressable (>= 2.2.2)
|
39
|
-
crack (>= 0.1.7)
|
40
|
-
yard (0.6.8)
|
41
|
-
|
42
|
-
PLATFORMS
|
43
|
-
ruby
|
44
|
-
|
45
|
-
DEPENDENCIES
|
46
|
-
awesome_print
|
47
|
-
bluecloth
|
48
|
-
mocha (~> 0.9.11)
|
49
|
-
shoulda (~> 2.11.3)
|
50
|
-
simplecov (~> 0.4.0)
|
51
|
-
stamps!
|
52
|
-
webmock (~> 1.6.2)
|
53
|
-
yard
|