recurly 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of recurly might be problematic. Click here for more details.

Files changed (71) hide show
  1. data/lib/recurly.rb +1 -0
  2. data/lib/recurly/base.rb +92 -12
  3. data/lib/recurly/formats/xml_with_errors.rb +132 -0
  4. data/lib/recurly/version.rb +1 -1
  5. data/spec/config/recurly.yml +4 -4
  6. data/spec/integration/transaction_spec.rb +4 -3
  7. data/spec/vcr/account/accept-language-account/1297746103.yml +6 -6
  8. data/spec/vcr/account/close/1297746103.yml +17 -17
  9. data/spec/vcr/account/create-blank/1297746103.yml +4 -4
  10. data/spec/vcr/account/create-duplicate/1297746103.yml +10 -10
  11. data/spec/vcr/account/create-min/1297746103.yml +6 -6
  12. data/spec/vcr/account/create/1297746103.yml +6 -6
  13. data/spec/vcr/account/find/1297746103.yml +16 -16
  14. data/spec/vcr/account/list/1297746103.yml +204 -156
  15. data/spec/vcr/account/update/1297746103.yml +29 -29
  16. data/spec/vcr/billing/create/1298594128.yml +21 -21
  17. data/spec/vcr/billing/destroy/1298594128.yml +28 -28
  18. data/spec/vcr/billing/find/1298594128.yml +28 -28
  19. data/spec/vcr/billing/update/1298594128.yml +29 -29
  20. data/spec/vcr/charge/create/1297746103.yml +29 -29
  21. data/spec/vcr/charge/delete-uninvoiced/1297746103.yml +32 -32
  22. data/spec/vcr/charge/list-all/1297746103.yml +41 -41
  23. data/spec/vcr/charge/list-invoiced/1297746103.yml +68 -68
  24. data/spec/vcr/charge/list-pending/1297746103.yml +41 -41
  25. data/spec/vcr/charge/lookup/1297746103.yml +21 -21
  26. data/spec/vcr/coupon/create/1299714521.yml +25 -25
  27. data/spec/vcr/coupon/destroy/1299714521.yml +22 -22
  28. data/spec/vcr/credit/create/1299714599.yml +21 -21
  29. data/spec/vcr/credit/delete/1299714599.yml +28 -28
  30. data/spec/vcr/credit/list/1299714599.yml +41 -41
  31. data/spec/vcr/credit/lookup/1299714599.yml +21 -21
  32. data/spec/vcr/invoice/create-no-charges/1297746103.yml +18 -18
  33. data/spec/vcr/invoice/create/1297746103.yml +42 -42
  34. data/spec/vcr/invoice/list/1297746103.yml +61 -61
  35. data/spec/vcr/invoice/lookup/1297746103.yml +43 -43
  36. data/spec/vcr/plan/all.yml +65 -52
  37. data/spec/vcr/plan/find.yml +58 -34
  38. data/spec/vcr/plan/update.yml +28 -29
  39. data/spec/vcr/subscription/addons/add/1297746103.yml +293 -335
  40. data/spec/vcr/subscription/addons/add/1301884213.yml +480 -0
  41. data/spec/vcr/subscription/addons/create/1297746103.yml +134 -335
  42. data/spec/vcr/subscription/addons/create/1301884213.yml +321 -0
  43. data/spec/vcr/subscription/addons/remove/1297746103.yml +262 -335
  44. data/spec/vcr/subscription/addons/remove/1301884213.yml +449 -0
  45. data/spec/vcr/subscription/cancel-with-code/{1297746103.yml → 1301881900.yml} +104 -92
  46. data/spec/vcr/subscription/cancel/{1297746103.yml → 1301881900.yml} +90 -78
  47. data/spec/vcr/subscription/change1/{1297746103.yml → 1301881900.yml} +86 -74
  48. data/spec/vcr/subscription/change2/{1297746103.yml → 1301881900.yml} +86 -74
  49. data/spec/vcr/subscription/create/{1297746103.yml → 1301881900.yml} +50 -38
  50. data/spec/vcr/subscription/find/{1297746103.yml → 1301881900.yml} +62 -50
  51. data/spec/vcr/subscription/reactivate/{1297746103.yml → 1301881900.yml} +95 -83
  52. data/spec/vcr/subscription/refund-full/{1297746103.yml → 1301881900.yml} +79 -67
  53. data/spec/vcr/subscription/refund-none/{1297746103.yml → 1301881900.yml} +79 -67
  54. data/spec/vcr/subscription/refund-partial/{1297746103.yml → 1301881900.yml} +79 -67
  55. data/spec/vcr/transaction/all/1301883347.yml +387 -0
  56. data/spec/vcr/transaction/create-no-account/{1300473500.yml → 1301883347.yml} +18 -18
  57. data/spec/vcr/transaction/create-with-account/{1300473500.yml → 1301883347.yml} +37 -37
  58. data/spec/vcr/transaction/list-filled/{1300473500.yml → 1301883347.yml} +169 -169
  59. data/spec/vcr/transaction/list-initial/{1300473500.yml → 1301883347.yml} +39 -39
  60. data/spec/vcr/transaction/lookup/{1300473500.yml → 1301883347.yml} +119 -119
  61. data/spec/vcr/transaction/refund/{1300473500.yml → 1301883347.yml} +53 -53
  62. data/spec/vcr/transaction/void/1301883347.yml +365 -0
  63. data/spec/vcr/transparent/post-url/{1300476053.yml → 1301879142.yml} +19 -19
  64. metadata +66 -58
  65. data/spec/vcr/transaction/all/1300473500.yml +0 -387
  66. data/spec/vcr/transaction/void/1300473500.yml +0 -620
  67. data/spec/vcr/transparent/post-url/1300475927.yml +0 -41
  68. data/spec/vcr/transparent/post-url/1300475952.yml +0 -41
  69. data/spec/vcr/transparent/post-url/1300476034.yml +0 -125
  70. data/spec/vcr/transparent/post-url/1300476102.yml +0 -125
  71. data/spec/vcr/transparent/post-url/1300476126.yml +0 -125
data/lib/recurly.rb CHANGED
@@ -14,6 +14,7 @@ end
14
14
  require 'recurly/version'
15
15
  require 'recurly/exceptions'
16
16
  require 'recurly/formats/xml_with_pagination'
17
+ require 'recurly/formats/xml_with_errors'
17
18
  require 'recurly/config_parser'
18
19
  require 'recurly/rails3/railtie' if defined?(::Rails::Railtie)
19
20
  require 'recurly/base'
data/lib/recurly/base.rb CHANGED
@@ -5,18 +5,7 @@ module Recurly
5
5
  class Base < ActiveResource::Base
6
6
  extend ActiveSupport::Memoizable
7
7
 
8
- self.format = Recurly::Formats::XmlWithPaginationFormat.new
9
-
10
- def initialize(attributes = {})
11
- super(attributes)
12
- end
13
-
14
- # Add User-Agent to headers
15
- def headers
16
- super
17
- @headers['User-Agent'] = "Recurly Ruby Client v#{VERSION}"
18
- @headers
19
- end
8
+ self.format = Recurly::Formats::XmlWithErrorsFormat.new
20
9
 
21
10
  def update_only
22
11
  false
@@ -56,6 +45,36 @@ module Recurly
56
45
  !persisted?
57
46
  end
58
47
 
48
+ # patched to read Errors array
49
+ def load(attributes)
50
+ raise ArgumentError, "expected an attributes Hash, got #{attributes.inspect}" unless attributes.is_a?(Hash)
51
+ @prefix_options, attributes = split_options(attributes)
52
+ attributes.each do |key, value|
53
+ if key.to_s == 'errors' && value.is_a?(Array)
54
+ load_errors_from_array(value)
55
+ next
56
+ end
57
+ @attributes[key.to_s] =
58
+ case value
59
+ when Array
60
+ resource = find_or_create_resource_for_collection(key)
61
+ value.map do |attrs|
62
+ if attrs.is_a?(Hash)
63
+ resource.new(attrs)
64
+ else
65
+ attrs.duplicable? ? attrs.dup : attrs
66
+ end
67
+ end
68
+ when Hash
69
+ resource = find_or_create_resource_for(key)
70
+ resource.new(value)
71
+ else
72
+ value.dup rescue value
73
+ end
74
+ end
75
+ self
76
+ end
77
+
59
78
  # builds the object from the transparent results
60
79
  def from_transparent_results(response)
61
80
  self.load_attributes_from_response(response)
@@ -68,6 +87,39 @@ module Recurly
68
87
  super
69
88
  @persisted = true
70
89
  end
90
+
91
+ # Patched to read errors with field information
92
+ def load_errors_from_array(new_errors, save_cache = false)
93
+ errors.clear unless save_cache
94
+ return if new_errors.nil? or new_errors.empty?
95
+ humanized_attributes = Hash[self.known_attributes.map { |attr_name| [attr_name.humanize, attr_name] }] unless self.known_attributes.nil?
96
+ humanized_attributes ||= Hash[@attributes.keys.map { |attr_name| [attr_name.humanize, attr_name] }]
97
+ new_errors.each do |error|
98
+ if error.is_a?(Hash)
99
+ field = error['field']
100
+ message = error['message']
101
+
102
+ if field.blank?
103
+ errors[:base] << message
104
+ end
105
+
106
+ humanized_name = field.humanize
107
+ message = message[(humanized_name.size + 1)..-1] if message[0, humanized_name.size + 1] == "#{humanized_name} "
108
+
109
+ errors.add field.to_sym, message
110
+ elsif error.is_a?(String)
111
+ message = error
112
+ attr_message = humanized_attributes.keys.detect do |attr_name|
113
+ if message[0, attr_name.size + 1] == "#{attr_name} "
114
+ errors.add humanized_attributes[attr_name], message[(attr_name.size + 1)..-1]
115
+ next
116
+ end
117
+ end
118
+
119
+ errors[:base] << message
120
+ end
121
+ end
122
+ end
71
123
 
72
124
  private
73
125
  # patch instantiate_record so it marks result records as persisted
@@ -77,6 +129,34 @@ module Recurly
77
129
  result
78
130
  end
79
131
 
132
+ def build_request_headers(headers, http_method, uri)
133
+ super(headers, http_method, uri).update({'User-Agent' => "Recurly Ruby Client v#{VERSION}"})
134
+ end
135
+
136
+ def handle_response(response)
137
+ case response.code.to_i
138
+ when 401
139
+ message = Hash.from_xml(response.body)['errors']['error'] rescue nil
140
+ raise(UnauthorizedAccess.new(response, message))
141
+ when 403
142
+ message = Hash.from_xml(response.body)['errors']['error'] rescue nil
143
+ raise(ForbiddenAccess.new(response, message))
144
+ when 404
145
+ message = Hash.from_xml(response.body)['errors']['error'] rescue nil
146
+ raise ResourceNotFound.new(response, message)
147
+ when 422
148
+ message = Hash.from_xml(response.body)['errors']['error'] rescue nil
149
+ raise ResourceInvalid.new(response, message)
150
+ when 412
151
+ message = Hash.from_xml(response.body)['errors']['error'] rescue nil
152
+ raise ClientError.new(response, message)
153
+ when 500
154
+ message = Hash.from_xml(response.body)['errors']['error'] rescue nil
155
+ raise(ServerError.new(response, message))
156
+ else
157
+ super
158
+ end
159
+ end
80
160
  end
81
161
 
82
162
  # backwards compatibility
@@ -0,0 +1,132 @@
1
+ require 'nokogiri'
2
+
3
+ module Recurly
4
+ module Formats
5
+ class XmlWithErrorsFormat
6
+ include ActiveResource::Formats::XmlFormat
7
+
8
+ def decode(xml)
9
+ doc = Nokogiri::XML(xml)
10
+ data = xml_node_to_hash(doc.root)
11
+
12
+ if data.is_a?(Hash) and data["type"] == 'collection' and data["current_page"]
13
+ data = paginate_data(data)
14
+ end
15
+
16
+ data
17
+ end
18
+
19
+ def xml_node_to_hash(node)
20
+ return node.content.to_s.strip unless node.element?
21
+
22
+ node_type = xml_node_type(node)
23
+ if node.children.size == 1 && node.children[0].text?
24
+ return [] if node_type == 'array'
25
+ return xml_node_value(node)
26
+ end
27
+
28
+ if node.name == 'errors'
29
+ return node.children.collect do |child|
30
+ error_xml_node_to_hash(child) if child.name == 'error'
31
+ end.reject { |n| n.nil? }
32
+ elsif node_type == 'array'
33
+ return node.children.collect do |child|
34
+ xml_node_to_hash(child)
35
+ end
36
+ end
37
+
38
+ return nil if node.children.empty?
39
+
40
+ result_hash = {}
41
+ result_hash['type'] = node_type unless node_type.nil?
42
+
43
+ node.children.each do |child|
44
+ child_name = child.name
45
+ result = xml_node_to_hash(child)
46
+
47
+ next if child_name == 'text' && result == ''
48
+
49
+ if result_hash[child_name]
50
+ next if result == ''
51
+ if result_hash[child_name].is_a?(Array)
52
+ result_hash[child_name] << result
53
+ else
54
+ result_hash[child_name] = [result_hash[child_name]] << result
55
+ end
56
+ else
57
+ result_hash[child_name] = result
58
+ end
59
+ end
60
+
61
+ result_hash
62
+ end
63
+
64
+ def error_xml_node_to_hash(node)
65
+ xml_attributes(node).merge('message' => node.children[0].content.to_s)
66
+ end
67
+
68
+ def xml_node_value(node)
69
+ return nil if xml_node_nil?(node)
70
+
71
+ case xml_node_type(node)
72
+ when 'integer'
73
+ node.content.to_i
74
+ when 'boolean'
75
+ ['true','1'].include?(node.content.downcase)
76
+ when 'datetime'
77
+ Time.parse(node.content)
78
+ else
79
+ node.content.to_s.strip
80
+ end
81
+ end
82
+
83
+ def xml_node_nil?(node)
84
+ return true if node.nil?
85
+ attr_node = node.attribute('nil')
86
+ attr_node.nil? ? false : true
87
+ end
88
+
89
+ def xml_node_type(node)
90
+ attr_node = node.attribute('type')
91
+ attr_node.nil? ? nil : attr_node.value
92
+ end
93
+
94
+ def xml_attributes(node)
95
+ return nil if node.attribute_nodes.empty?
96
+ values = {}
97
+ node.attribute_nodes.each do |attribute|
98
+ values[attribute.name] = attribute.value
99
+ end
100
+ values
101
+ end
102
+
103
+ # convert the data into a paginated resultset (array with singleton methods)
104
+ def paginate_data(data)
105
+ per_page = data["per_page"] || 0
106
+ current_page = data["current_page"] || 0
107
+ total_entries = data["total_entries"] || 0
108
+
109
+ # find the first array and use that as the resultset (lame workaround)
110
+ results = data.values.select{|v| v.is_a?(Array)}.first || []
111
+ if results.empty?
112
+ data.delete("per_page")
113
+ data.delete("current_page")
114
+ data.delete("total_entries")
115
+ data.delete("type")
116
+ results = [data.values.first].compact
117
+ end
118
+
119
+ # define total_entries accessor on result object
120
+ results.instance_eval "def total_entries; #{total_entries.to_i}; end"
121
+
122
+ # define current_page accessor on result object
123
+ results.instance_eval "def current_page; #{current_page.to_i}; end"
124
+
125
+ # define per_page accessor on result object
126
+ results.instance_eval "def per_page; #{per_page.to_i}; end"
127
+
128
+ results
129
+ end
130
+ end
131
+ end
132
+ end
@@ -1,3 +1,3 @@
1
1
  module Recurly #:nodoc
2
- VERSION = "0.4.2"
2
+ VERSION = "0.4.3"
3
3
  end
@@ -1,8 +1,8 @@
1
1
  ---
2
- username: api-test-123@litle.com
3
- password: 82a98ee0c1c2495789775177babfadb7
4
- private_key: 986bfa2bec61479ca560dbaaec345820
5
- subdomain: litle-test
2
+ username: api-test@hello-test.com
3
+ password: 50a5b8a69a2545db84ac4112ba8cac6f
4
+ private_key: 54922a65b9ba4d49a486de7f0b2057c3
5
+ subdomain: hello-test
6
6
  environment: :development
7
7
 
8
8
  #username: api-test@isaactest.com
@@ -65,8 +65,8 @@ module Recurly
65
65
  end
66
66
 
67
67
  it "should be in void state" do
68
- @transactions.first.amount_in_cents.should == 100
69
- @transactions.first.status.should == 'void'
68
+ @transactions.first.amount_in_cents.should == 0
69
+ @transactions.first.status.should == 'success'
70
70
  end
71
71
  end
72
72
 
@@ -84,7 +84,8 @@ module Recurly
84
84
  end
85
85
 
86
86
  it "should return a list of transactions made on the account" do
87
- @successful_transactions.length.should == 3
87
+ # one authorization and three transactions
88
+ @successful_transactions.length.should == 4
88
89
  @total_transactions.length.should == 4
89
90
  end
90
91
 
@@ -2,7 +2,7 @@
2
2
  - !ruby/struct:VCR::HTTPInteraction
3
3
  request: !ruby/struct:VCR::Request
4
4
  method: :post
5
- uri: http://api-test-123%40litle.com:82a98ee0c1c2495789775177babfadb7@app.recurly.local:3000/accounts.xml
5
+ uri: http://api-test%40hello-test.com:50a5b8a69a2545db84ac4112ba8cac6f@app.recurly.local:3000/accounts.xml
6
6
  body: |
7
7
  <?xml version="1.0" encoding="UTF-8"?>
8
8
  <account>
@@ -20,7 +20,7 @@
20
20
 
21
21
  headers:
22
22
  authorization:
23
- - Basic YXBpLXRlc3QtMTIzQGxpdGxlLmNvbTo4MmE5OGVlMGMxYzI0OTU3ODk3NzUxNzdiYWJmYWRiNw==
23
+ - Basic YXBpLXRlc3RAaGVsbG8tdGVzdC5jb206NTBhNWI4YTY5YTI1NDVkYjg0YWM0MTEyYmE4Y2FjNmY=
24
24
  content-type:
25
25
  - application/xml
26
26
  accept:
@@ -39,13 +39,13 @@
39
39
  location:
40
40
  - http://app.recurly.local:3000/accounts/account1-french-1297746103
41
41
  x-runtime:
42
- - "433"
42
+ - "340"
43
43
  content-type:
44
44
  - application/xml; charset=utf-8
45
45
  content-length:
46
46
  - "585"
47
47
  set-cookie:
48
- - _recurly_session=2646fb7dc231fbc50507e35872ded86d; domain=.recurly.local; path=/; HttpOnly
48
+ - _recurly_session=f0053268a5a52285db50fb2ac850bbb6; domain=.recurly.local; path=/; HttpOnly
49
49
  connection:
50
50
  - close
51
51
  server:
@@ -62,8 +62,8 @@
62
62
  <company_name>Recurly Ruby Gem</company_name>
63
63
  <balance_in_cents type="integer">0</balance_in_cents>
64
64
  <closed type="boolean">false</closed>
65
- <hosted_login_token>e38a18fa5fd94ef4a2df36503bc62111</hosted_login_token>
66
- <created_at type="datetime">2011-03-18T18:47:35Z</created_at>
65
+ <hosted_login_token>7528d672c9194529b738db26528b8f81</hosted_login_token>
66
+ <created_at type="datetime">2011-04-04T02:17:56Z</created_at>
67
67
  <state>active</state>
68
68
  </account>
69
69
 
@@ -2,7 +2,7 @@
2
2
  - !ruby/struct:VCR::HTTPInteraction
3
3
  request: !ruby/struct:VCR::Request
4
4
  method: :post
5
- uri: http://api-test-123%40litle.com:82a98ee0c1c2495789775177babfadb7@app.recurly.local:3000/accounts.xml
5
+ uri: http://api-test%40hello-test.com:50a5b8a69a2545db84ac4112ba8cac6f@app.recurly.local:3000/accounts.xml
6
6
  body: |
7
7
  <?xml version="1.0" encoding="UTF-8"?>
8
8
  <account>
@@ -20,7 +20,7 @@
20
20
 
21
21
  headers:
22
22
  authorization:
23
- - Basic YXBpLXRlc3QtMTIzQGxpdGxlLmNvbTo4MmE5OGVlMGMxYzI0OTU3ODk3NzUxNzdiYWJmYWRiNw==
23
+ - Basic YXBpLXRlc3RAaGVsbG8tdGVzdC5jb206NTBhNWI4YTY5YTI1NDVkYjg0YWM0MTEyYmE4Y2FjNmY=
24
24
  content-type:
25
25
  - application/xml
26
26
  accept:
@@ -39,13 +39,13 @@
39
39
  location:
40
40
  - http://app.recurly.local:3000/accounts/account-close-1297746103
41
41
  x-runtime:
42
- - "347"
42
+ - "330"
43
43
  content-type:
44
44
  - application/xml; charset=utf-8
45
45
  content-length:
46
46
  - "581"
47
47
  set-cookie:
48
- - _recurly_session=feaecccc5b88d662541ee1e1c65c0b66; domain=.recurly.local; path=/; HttpOnly
48
+ - _recurly_session=9225b6b1bc4bc9e4c294a37a04543860; domain=.recurly.local; path=/; HttpOnly
49
49
  connection:
50
50
  - close
51
51
  server:
@@ -62,8 +62,8 @@
62
62
  <company_name>Recurly Ruby Gem</company_name>
63
63
  <balance_in_cents type="integer">0</balance_in_cents>
64
64
  <closed type="boolean">false</closed>
65
- <hosted_login_token>1c795d69f9e5437883fd99cc5a915d19</hosted_login_token>
66
- <created_at type="datetime">2011-03-18T18:47:23Z</created_at>
65
+ <hosted_login_token>43d53db8bae74f36bfcef0fad8ff4499</hosted_login_token>
66
+ <created_at type="datetime">2011-04-04T02:17:42Z</created_at>
67
67
  <state>active</state>
68
68
  </account>
69
69
 
@@ -71,11 +71,11 @@
71
71
  - !ruby/struct:VCR::HTTPInteraction
72
72
  request: !ruby/struct:VCR::Request
73
73
  method: :delete
74
- uri: http://api-test-123%40litle.com:82a98ee0c1c2495789775177babfadb7@app.recurly.local:3000/accounts/account-close-1297746103.xml
74
+ uri: http://api-test%40hello-test.com:50a5b8a69a2545db84ac4112ba8cac6f@app.recurly.local:3000/accounts/account-close-1297746103.xml
75
75
  body:
76
76
  headers:
77
77
  authorization:
78
- - Basic YXBpLXRlc3QtMTIzQGxpdGxlLmNvbTo4MmE5OGVlMGMxYzI0OTU3ODk3NzUxNzdiYWJmYWRiNw==
78
+ - Basic YXBpLXRlc3RAaGVsbG8tdGVzdC5jb206NTBhNWI4YTY5YTI1NDVkYjg0YWM0MTEyYmE4Y2FjNmY=
79
79
  accept:
80
80
  - application/xml
81
81
  user-agent:
@@ -90,13 +90,13 @@
90
90
  cache-control:
91
91
  - no-cache
92
92
  x-runtime:
93
- - "481"
93
+ - "574"
94
94
  content-type:
95
95
  - application/xml; charset=utf-8
96
96
  content-length:
97
97
  - "1"
98
98
  set-cookie:
99
- - _recurly_session=217d1e05f1a8ea27ddfd1f6dc856d77b; domain=.recurly.local; path=/; HttpOnly
99
+ - _recurly_session=a9dd2fed298913d0bf1a222c6eb3f3e7; domain=.recurly.local; path=/; HttpOnly
100
100
  connection:
101
101
  - close
102
102
  server:
@@ -106,11 +106,11 @@
106
106
  - !ruby/struct:VCR::HTTPInteraction
107
107
  request: !ruby/struct:VCR::Request
108
108
  method: :get
109
- uri: http://api-test-123%40litle.com:82a98ee0c1c2495789775177babfadb7@app.recurly.local:3000/accounts/account-close-1297746103.xml
109
+ uri: http://api-test%40hello-test.com:50a5b8a69a2545db84ac4112ba8cac6f@app.recurly.local:3000/accounts/account-close-1297746103.xml
110
110
  body:
111
111
  headers:
112
112
  authorization:
113
- - Basic YXBpLXRlc3QtMTIzQGxpdGxlLmNvbTo4MmE5OGVlMGMxYzI0OTU3ODk3NzUxNzdiYWJmYWRiNw==
113
+ - Basic YXBpLXRlc3RAaGVsbG8tdGVzdC5jb206NTBhNWI4YTY5YTI1NDVkYjg0YWM0MTEyYmE4Y2FjNmY=
114
114
  accept:
115
115
  - application/xml
116
116
  accept-encoding:
@@ -125,17 +125,17 @@
125
125
  message: OK
126
126
  headers:
127
127
  x-runtime:
128
- - "293"
128
+ - "291"
129
129
  content-type:
130
130
  - application/xml; charset=utf-8
131
131
  etag:
132
- - "\"2a99494260c548f181eba47d258df6c2\""
132
+ - "\"507894927f1390fd5c54ee01dad7cb82\""
133
133
  cache-control:
134
134
  - private, max-age=0, must-revalidate
135
135
  content-length:
136
136
  - "580"
137
137
  set-cookie:
138
- - _recurly_session=d093e4e66b3ca4d1dde043580ada11c2; domain=.recurly.local; path=/; HttpOnly
138
+ - _recurly_session=5881daad994bb5da5746c645afc5d914; domain=.recurly.local; path=/; HttpOnly
139
139
  connection:
140
140
  - close
141
141
  server:
@@ -152,8 +152,8 @@
152
152
  <company_name>Recurly Ruby Gem</company_name>
153
153
  <balance_in_cents type="integer">0</balance_in_cents>
154
154
  <closed type="boolean">true</closed>
155
- <hosted_login_token>1c795d69f9e5437883fd99cc5a915d19</hosted_login_token>
156
- <created_at type="datetime">2011-03-18T18:47:23Z</created_at>
155
+ <hosted_login_token>43d53db8bae74f36bfcef0fad8ff4499</hosted_login_token>
156
+ <created_at type="datetime">2011-04-04T02:17:42Z</created_at>
157
157
  <state>closed</state>
158
158
  </account>
159
159