ruby-ecomm-client 1.0.0 → 1.1.0

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.
Files changed (37) hide show
  1. data/.gitignore +2 -2
  2. data/README.md +3 -7
  3. data/fixtures/vcr_cassettes/account_info/default.yml +22 -22
  4. data/fixtures/vcr_cassettes/account_info/unknown/resource_id.yml +21 -21
  5. data/fixtures/vcr_cassettes/account_info/unknown/resource_type.yml +21 -21
  6. data/fixtures/vcr_cassettes/account_info/unknown/source_tree_id.yml +21 -21
  7. data/fixtures/vcr_cassettes/express_checkout/configured.yml +17 -17
  8. data/fixtures/vcr_cassettes/express_checkout/unknown.yml +17 -17
  9. data/fixtures/vcr_cassettes/request_change/express/downgrade/default.yml +44 -0
  10. data/fixtures/vcr_cassettes/request_change/express/downgrade/noop.yml +42 -0
  11. data/fixtures/vcr_cassettes/request_change/express/downgrade/unknown/resource_id.yml +42 -0
  12. data/fixtures/vcr_cassettes/request_change/express/downgrade/unknown/resource_type.yml +42 -0
  13. data/fixtures/vcr_cassettes/request_change/express/downgrade/unknown/target_tree_id.yml +42 -0
  14. data/fixtures/vcr_cassettes/request_change/express/upgrade/default.yml +44 -0
  15. data/fixtures/vcr_cassettes/request_change/express/upgrade/noop.yml +42 -0
  16. data/fixtures/vcr_cassettes/request_change/express/upgrade/unknown/resource_id.yml +42 -0
  17. data/fixtures/vcr_cassettes/request_change/express/upgrade/unknown/resource_type.yml +42 -0
  18. data/fixtures/vcr_cassettes/request_change/express/upgrade/unknown/target_tree_id.yml +42 -0
  19. data/fixtures/vcr_cassettes/{downgrade → request_change/manager/downgrade}/default.yml +18 -18
  20. data/fixtures/vcr_cassettes/{downgrade → request_change/manager/downgrade}/noop.yml +17 -17
  21. data/fixtures/vcr_cassettes/{downgrade → request_change/manager/downgrade}/unknown/resource_id.yml +17 -17
  22. data/fixtures/vcr_cassettes/{upgrade → request_change/manager/downgrade}/unknown/resource_type.yml +17 -17
  23. data/fixtures/vcr_cassettes/{downgrade → request_change/manager/downgrade}/unknown/target_tree_id.yml +17 -17
  24. data/fixtures/vcr_cassettes/{upgrade → request_change/manager/upgrade}/default.yml +18 -18
  25. data/fixtures/vcr_cassettes/{upgrade → request_change/manager/upgrade}/noop.yml +17 -17
  26. data/fixtures/vcr_cassettes/{upgrade → request_change/manager/upgrade}/unknown/resource_id.yml +17 -17
  27. data/fixtures/vcr_cassettes/{downgrade → request_change/manager/upgrade}/unknown/resource_type.yml +17 -17
  28. data/fixtures/vcr_cassettes/{upgrade → request_change/manager/upgrade}/unknown/target_tree_id.yml +17 -17
  29. data/fixtures/vcr_cassettes/transitions/default/unknown/source_tree_id.yml +13 -13
  30. data/fixtures/vcr_cassettes/transitions/many.yml +14 -14
  31. data/fixtures/vcr_cassettes/transitions/one.yml +14 -14
  32. data/lib/ruby-ecomm-client/client.rb +61 -21
  33. data/lib/ruby-ecomm-client/version.rb +1 -1
  34. data/spec/ruby-ecomm-client/client_spec.rb +203 -82
  35. data/spec/spec_helper.rb +2 -0
  36. metadata +24 -15
  37. data/fixtures/vcr_cassettes/transitions/unknown/source_tree_id.yml +0 -42
@@ -1,42 +1,42 @@
1
1
  ---
2
- recorded_with: VCR 2.8.0
3
2
  http_interactions:
4
3
  - request:
5
4
  method: post
6
5
  uri: http://bonsai.dev.glbt1.gdg/bonsai/bonsaimanager/service.asmx
7
6
  body:
8
- string: <?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="#Bonsai"><env:Body><tns:ChangeAccountRequest><tns:RenewalPFID>0</tns:RenewalPFID><tns:IDType>ORION</tns:IDType><tns:ItemRequestXml>&lt;itemRequest/&gt;</tns:ItemRequestXml><tns:AccountChangeXml>&lt;ClientChange TreeID='73223' ShopperID='255528'/&gt;</tns:AccountChangeXml><tns:RenewalPeriods>0</tns:RenewalPeriods><tns:ResourceType>outright</tns:ResourceType><tns:ResourceID>e1dd6ab9-b072-11e3-9aad-005056953ce3</tns:ResourceID></tns:ChangeAccountRequest></env:Body></env:Envelope>
7
+ string: <?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:tns="#Bonsai" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Body><tns:ChangeAccountRequest><tns:ItemRequestXml>&lt;itemRequest/&gt;</tns:ItemRequestXml><tns:AccountChangeXml>&lt;ClientChange TreeID='73223' ShopperID='922411'/&gt;</tns:AccountChangeXml><tns:RenewalPFID>0</tns:RenewalPFID><tns:IDType>ORION</tns:IDType><tns:ResourceType>outright</tns:ResourceType><tns:RenewalPeriods>0</tns:RenewalPeriods><tns:ResourceID>10e16f14-b606-11e3-a45e-0050569575d8</tns:ResourceID></tns:ChangeAccountRequest></env:Body></env:Envelope>
9
8
  headers:
10
- soapaction:
11
- - "\"#Bonsai/ChangeAccountRequest\""
12
- accept:
13
- - "*/*"
14
- content-length:
15
- - "697"
16
9
  content-type:
17
10
  - text/xml;charset=UTF-8
11
+ content-length:
12
+ - "697"
13
+ accept:
14
+ - "*/*"
15
+ soapaction:
16
+ - "\"#Bonsai/ChangeAccountRequest\""
18
17
  response:
19
18
  status:
20
19
  code: 200
21
20
  message: OK
22
21
  headers:
22
+ content-type:
23
+ - text/xml; charset=utf-8
24
+ content-length:
25
+ - "411"
23
26
  x-aspnet-version:
24
27
  - 4.0.30319
28
+ cache-control:
29
+ - private, max-age=0
25
30
  server:
26
31
  - Microsoft-IIS/7.0
32
+ date:
33
+ - Fri, 28 Mar 2014 00:22:36 GMT
27
34
  connection:
28
35
  - close
29
- date:
30
- - Wed, 26 Mar 2014 03:26:23 GMT
31
- cache-control:
32
- - private, max-age=0
33
- content-length:
34
- - "411"
35
36
  x-powered-by:
36
37
  - ASP.NET
37
- content-type:
38
- - text/xml; charset=utf-8
39
38
  body:
40
39
  string: <?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"><soap:Body><ChangeAccountRequestResponse xmlns="#Bonsai"><ChangeAccountRequestResult>-1</ChangeAccountRequestResult><ResultCode>-999</ResultCode></ChangeAccountRequestResponse></soap:Body></soap:Envelope>
41
40
  http_version: "1.1"
42
- recorded_at: Wed, 26 Mar 2014 03:26:24 GMT
41
+ recorded_at: Fri, 28 Mar 2014 00:22:39 GMT
42
+ recorded_with: VCR 2.8.0
@@ -4,14 +4,14 @@ http_interactions:
4
4
  method: post
5
5
  uri: http://bonsai.dev.glbt1.gdg/bonsai/bonsaimanager/service.asmx
6
6
  body:
7
- string: <?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="#Bonsai"><env:Body><tns:GetAccountXml><tns:TreeID>87563</tns:TreeID><tns:IDType>ORION</tns:IDType><tns:ResourceType>outright</tns:ResourceType><tns:ResourceID>e1dd6ab9-b072-11e3-9aad-005056953ce3</tns:ResourceID><tns:PrivateLabelID>1</tns:PrivateLabelID></tns:GetAccountXml></env:Body></env:Envelope>
7
+ string: <?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:tns="#Bonsai" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Body><tns:GetAccountXml><tns:IDType>ORION</tns:IDType><tns:PrivateLabelID>1</tns:PrivateLabelID><tns:ResourceType>outright</tns:ResourceType><tns:TreeID>87563</tns:TreeID><tns:ResourceID>10e16f14-b606-11e3-a45e-0050569575d8</tns:ResourceID></tns:GetAccountXml></env:Body></env:Envelope>
8
8
  headers:
9
- accept:
10
- - "*/*"
11
- content-length:
12
- - "516"
13
9
  content-type:
14
10
  - text/xml;charset=UTF-8
11
+ content-length:
12
+ - "516"
13
+ accept:
14
+ - "*/*"
15
15
  soapaction:
16
16
  - "\"#Bonsai/GetAccountXml\""
17
17
  response:
@@ -19,24 +19,24 @@ http_interactions:
19
19
  code: 200
20
20
  message: OK
21
21
  headers:
22
- connection:
23
- - close
22
+ content-type:
23
+ - text/xml; charset=utf-8
24
+ content-length:
25
+ - "338"
24
26
  x-aspnet-version:
25
27
  - 4.0.30319
26
28
  cache-control:
27
29
  - private, max-age=0
28
- content-length:
29
- - "338"
30
30
  server:
31
31
  - Microsoft-IIS/7.0
32
32
  date:
33
- - Wed, 26 Mar 2014 03:23:44 GMT
34
- content-type:
35
- - text/xml; charset=utf-8
33
+ - Fri, 28 Mar 2014 00:22:32 GMT
34
+ connection:
35
+ - close
36
36
  x-powered-by:
37
37
  - ASP.NET
38
38
  body:
39
39
  string: <?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"><soap:Body><GetAccountXmlResponse xmlns="#Bonsai"><ResultCode>-999</ResultCode></GetAccountXmlResponse></soap:Body></soap:Envelope>
40
40
  http_version: "1.1"
41
- recorded_at: Wed, 26 Mar 2014 03:23:44 GMT
41
+ recorded_at: Fri, 28 Mar 2014 00:22:35 GMT
42
42
  recorded_with: VCR 2.8.0
@@ -4,14 +4,14 @@ http_interactions:
4
4
  method: post
5
5
  uri: http://bonsai.dev.glbt1.gdg/bonsai/bonsaimanager/service.asmx
6
6
  body:
7
- string: <?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="#Bonsai"><env:Body><tns:GetAccountXml><tns:TreeID>1735</tns:TreeID><tns:IDType>ORION</tns:IDType><tns:ResourceType>outright</tns:ResourceType><tns:ResourceID>e1dd6ab9-b072-11e3-9aad-005056953ce3</tns:ResourceID><tns:PrivateLabelID>1</tns:PrivateLabelID></tns:GetAccountXml></env:Body></env:Envelope>
7
+ string: <?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:tns="#Bonsai" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Body><tns:GetAccountXml><tns:IDType>ORION</tns:IDType><tns:PrivateLabelID>1</tns:PrivateLabelID><tns:ResourceType>outright</tns:ResourceType><tns:TreeID>1735</tns:TreeID><tns:ResourceID>10e16f14-b606-11e3-a45e-0050569575d8</tns:ResourceID></tns:GetAccountXml></env:Body></env:Envelope>
8
8
  headers:
9
- accept:
10
- - "*/*"
11
- content-length:
12
- - "515"
13
9
  content-type:
14
10
  - text/xml;charset=UTF-8
11
+ content-length:
12
+ - "515"
13
+ accept:
14
+ - "*/*"
15
15
  soapaction:
16
16
  - "\"#Bonsai/GetAccountXml\""
17
17
  response:
@@ -19,24 +19,24 @@ http_interactions:
19
19
  code: 200
20
20
  message: OK
21
21
  headers:
22
- connection:
23
- - close
22
+ content-type:
23
+ - text/xml; charset=utf-8
24
+ content-length:
25
+ - "1626"
24
26
  x-aspnet-version:
25
27
  - 4.0.30319
26
28
  cache-control:
27
29
  - private, max-age=0
28
- content-length:
29
- - "1626"
30
30
  server:
31
31
  - Microsoft-IIS/7.0
32
32
  date:
33
- - Wed, 26 Mar 2014 03:23:44 GMT
34
- content-type:
35
- - text/xml; charset=utf-8
33
+ - Fri, 28 Mar 2014 00:22:33 GMT
34
+ connection:
35
+ - close
36
36
  x-powered-by:
37
37
  - ASP.NET
38
38
  body:
39
- string: <?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"><soap:Body><GetAccountXmlResponse xmlns="#Bonsai"><ResultCode>0</ResultCode><AccountXml><Bonsai><Bonsai PrivateLabelID="1" ResourceID="e1dd6ab9-b072-11e3-9aad-005056953ce3" IsPastDue="False" IsFree="False" CurrentTreeID="1735" CurrentUnifiedProductID="2701" xmlns=""><Tree TreeID="1735" NodeID="1735" UnifiedProductID="2701" IsFree="False"><Transition NodeName="Outright - Monthly Plus" UnifiedProductID="2697" TreeID="1734" IsFree="False" NodeID="1734" /><Transition NodeName="Outright - Annual Plus 1 year" UnifiedProductID="2699" TreeID="1736" IsFree="False" NodeID="1736" /><Transition NodeName="Outright - Annual Plus 2 years" UnifiedProductID="2703" TreeID="1737" IsFree="False" NodeID="1737" /><Transition NodeName="Outright - Annual Plus 3 years" UnifiedProductID="2705" TreeID="1738" IsFree="False" NodeID="1738" /><Transition NodeName="Outright - Annual Plus 4 years" UnifiedProductID="2707" TreeID="1739" IsFree="False" NodeID="1739" /><Transition NodeName="Outright - Annual Plus 5 years" UnifiedProductID="2709" TreeID="1740" IsFree="False" NodeID="1740" /><FilteredTransitions /><Prepaid><Item Name="Prepaid Previous Tax - Outright" CategoryName="Prepaid Previous Tax" CategoryID="49" MinQty="1" MaxQty="-1" MinDuration="1" MaxDuration="-1" IsQuantityBased="False" Increment="1" UnifiedProductID="2711" /></Prepaid></Tree></Bonsai></Bonsai></AccountXml></GetAccountXmlResponse></soap:Body></soap:Envelope>
39
+ string: <?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"><soap:Body><GetAccountXmlResponse xmlns="#Bonsai"><ResultCode>0</ResultCode><AccountXml><Bonsai><Bonsai PrivateLabelID="1" ResourceID="10e16f14-b606-11e3-a45e-0050569575d8" IsPastDue="False" IsFree="False" CurrentTreeID="1735" CurrentUnifiedProductID="2701" xmlns=""><Tree TreeID="1735" NodeID="1735" UnifiedProductID="2701" IsFree="False"><Transition NodeName="Outright - Monthly Plus" UnifiedProductID="2697" TreeID="1734" IsFree="False" NodeID="1734" /><Transition NodeName="Outright - Annual Plus 1 year" UnifiedProductID="2699" TreeID="1736" IsFree="False" NodeID="1736" /><Transition NodeName="Outright - Annual Plus 2 years" UnifiedProductID="2703" TreeID="1737" IsFree="False" NodeID="1737" /><Transition NodeName="Outright - Annual Plus 3 years" UnifiedProductID="2705" TreeID="1738" IsFree="False" NodeID="1738" /><Transition NodeName="Outright - Annual Plus 4 years" UnifiedProductID="2707" TreeID="1739" IsFree="False" NodeID="1739" /><Transition NodeName="Outright - Annual Plus 5 years" UnifiedProductID="2709" TreeID="1740" IsFree="False" NodeID="1740" /><FilteredTransitions /><Prepaid><Item Name="Prepaid Previous Tax - Outright" CategoryName="Prepaid Previous Tax" CategoryID="49" MinQty="1" MaxQty="-1" MinDuration="1" MaxDuration="-1" IsQuantityBased="False" Increment="1" UnifiedProductID="2711" /></Prepaid></Tree></Bonsai></Bonsai></AccountXml></GetAccountXmlResponse></soap:Body></soap:Envelope>
40
40
  http_version: "1.1"
41
- recorded_at: Wed, 26 Mar 2014 03:23:45 GMT
41
+ recorded_at: Fri, 28 Mar 2014 00:22:36 GMT
42
42
  recorded_with: VCR 2.8.0
@@ -4,14 +4,14 @@ http_interactions:
4
4
  method: post
5
5
  uri: http://bonsai.dev.glbt1.gdg/bonsai/bonsaimanager/service.asmx
6
6
  body:
7
- string: <?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="#Bonsai"><env:Body><tns:GetAccountXml><tns:TreeID>1734</tns:TreeID><tns:IDType>ORION</tns:IDType><tns:ResourceType>outright</tns:ResourceType><tns:ResourceID>e1dd6ab9-b072-11e3-9aad-005056953ce3</tns:ResourceID><tns:PrivateLabelID>1</tns:PrivateLabelID></tns:GetAccountXml></env:Body></env:Envelope>
7
+ string: <?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:tns="#Bonsai" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Body><tns:GetAccountXml><tns:IDType>ORION</tns:IDType><tns:PrivateLabelID>1</tns:PrivateLabelID><tns:ResourceType>outright</tns:ResourceType><tns:TreeID>1734</tns:TreeID><tns:ResourceID>10e16f14-b606-11e3-a45e-0050569575d8</tns:ResourceID></tns:GetAccountXml></env:Body></env:Envelope>
8
8
  headers:
9
- accept:
10
- - "*/*"
11
- content-length:
12
- - "515"
13
9
  content-type:
14
10
  - text/xml;charset=UTF-8
11
+ content-length:
12
+ - "515"
13
+ accept:
14
+ - "*/*"
15
15
  soapaction:
16
16
  - "\"#Bonsai/GetAccountXml\""
17
17
  response:
@@ -19,24 +19,24 @@ http_interactions:
19
19
  code: 200
20
20
  message: OK
21
21
  headers:
22
- connection:
23
- - close
22
+ content-type:
23
+ - text/xml; charset=utf-8
24
+ content-length:
25
+ - "768"
24
26
  x-aspnet-version:
25
27
  - 4.0.30319
26
28
  cache-control:
27
29
  - private, max-age=0
28
- content-length:
29
- - "768"
30
30
  server:
31
31
  - Microsoft-IIS/7.0
32
32
  date:
33
- - Wed, 26 Mar 2014 03:23:44 GMT
34
- content-type:
35
- - text/xml; charset=utf-8
33
+ - Fri, 28 Mar 2014 00:22:33 GMT
34
+ connection:
35
+ - close
36
36
  x-powered-by:
37
37
  - ASP.NET
38
38
  body:
39
- string: <?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"><soap:Body><GetAccountXmlResponse xmlns="#Bonsai"><ResultCode>0</ResultCode><AccountXml><Bonsai><Bonsai PrivateLabelID="1" ResourceID="e1dd6ab9-b072-11e3-9aad-005056953ce3" IsPastDue="False" IsFree="False" CurrentTreeID="1735" CurrentUnifiedProductID="2701" xmlns=""><Tree TreeID="1734" NodeID="1734" UnifiedProductID="2697" IsFree="False"><Transition NodeName="Outright - Free" UnifiedProductID="2701" TreeID="1735" IsFree="False" NodeID="1735" /><FilteredTransitions /></Tree></Bonsai></Bonsai></AccountXml></GetAccountXmlResponse></soap:Body></soap:Envelope>
39
+ string: <?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"><soap:Body><GetAccountXmlResponse xmlns="#Bonsai"><ResultCode>0</ResultCode><AccountXml><Bonsai><Bonsai PrivateLabelID="1" ResourceID="10e16f14-b606-11e3-a45e-0050569575d8" IsPastDue="False" IsFree="False" CurrentTreeID="1735" CurrentUnifiedProductID="2701" xmlns=""><Tree TreeID="1734" NodeID="1734" UnifiedProductID="2697" IsFree="False"><Transition NodeName="Outright - Free" UnifiedProductID="2701" TreeID="1735" IsFree="False" NodeID="1735" /><FilteredTransitions /></Tree></Bonsai></Bonsai></AccountXml></GetAccountXmlResponse></soap:Body></soap:Envelope>
40
40
  http_version: "1.1"
41
- recorded_at: Wed, 26 Mar 2014 03:23:45 GMT
41
+ recorded_at: Fri, 28 Mar 2014 00:22:36 GMT
42
42
  recorded_with: VCR 2.8.0
@@ -21,6 +21,8 @@ module RubyEcommClient
21
21
  :qa => 'https://bonsaipurchase.test.glbt1.gdg/BonsaiPurchase/Service.asmx'
22
22
  }
23
23
 
24
+ HOST_NAME = `hostname`.chomp
25
+
24
26
  ID_TYPE = 'ORION'
25
27
 
26
28
  WSDL_MANAGER = 'manager.wsdl'
@@ -72,30 +74,16 @@ module RubyEcommClient
72
74
  transitions.is_a?(Array) ? transitions : [transitions]
73
75
  end
74
76
 
75
- def upgrade(target_tree_id)
77
+ def request_change(target_tree_id, client_ip = '127.0.0.1')
76
78
  raise ArgumentError.new('target_tree_id must be specified') if blank?(target_tree_id)
77
79
 
78
- result = client_manager.call(:change_account_request, :message => {
79
- 'ResourceID' => @resource_id,
80
- 'ResourceType' => @resource_type,
81
- 'IDType' => ID_TYPE,
82
- 'AccountChangeXml' => "<ClientChange TreeID='#{target_tree_id}' ShopperID='#{@shopper_id}'/>",
83
- 'RenewalPFID' => 0,
84
- 'RenewalPeriods' => 0,
85
- 'ItemRequestXml' => '<itemRequest/>'
86
- })
87
- response = convert_response(result.body[:change_account_request_response])
88
- if response[:result_code] == 0
89
- response[:change_account_request_result]
80
+ if express_checkout?
81
+ request_change_via_express(target_tree_id, client_ip)
90
82
  else
91
- raise RubyEcommError.new(response[:result_code], response[:change_account_request_result])
83
+ request_change_via_manager(target_tree_id)
92
84
  end
93
85
  end
94
86
 
95
- def downgrade(target_tree_id = 0)
96
- upgrade(target_tree_id)
97
- end
98
-
99
87
  private
100
88
 
101
89
  def blank?(value)
@@ -111,6 +99,8 @@ module RubyEcommClient
111
99
  globals.log false
112
100
  globals.logger Rails.logger if defined?(Rails)
113
101
  globals.namespace '#Bonsai'
102
+ globals.open_timeout 15
103
+ globals.read_timeout 15
114
104
  end
115
105
 
116
106
  def client_manager
@@ -139,9 +129,59 @@ module RubyEcommClient
139
129
  globals.wsdl "#{wsdl_path}#{WSDL_PURCHASE}"
140
130
  globals.endpoint ENDPOINTS_PURCHASE[Client.environment]
141
131
 
142
- globals.ssl_verify_mode = :none
143
- globals.ssl_cert_file = 'config/client.crt'
144
- globals.ssl_cert_key_file = 'config/client.key'
132
+ globals.ssl_verify_mode :none
133
+ ssl_cert_file = "config/environments/#{Client.environment}/client.crt"
134
+ globals.ssl_cert_file ssl_cert_file if File.exists?(ssl_cert_file)
135
+ ssl_cert_key_file = "config/environments/#{Client.environment}/client.key"
136
+ globals.ssl_cert_key_file ssl_cert_key_file if File.exists?(ssl_cert_key_file)
137
+ end
138
+ end
139
+
140
+ def request_change_via_express(target_tree_id, client_ip = '127.0.0.1')
141
+ raise ArgumentError.new('target_tree_id must be specified') if blank?(target_tree_id)
142
+
143
+ result = client_purchase.call(:purchase_change_account_request, :message => {
144
+ 'ResourceID' => @resource_id,
145
+ 'ResourceType' => @resource_type,
146
+ 'IDType' => ID_TYPE,
147
+ 'AccountPurchaseChangeXml' => "<ClientChange TreeID='#{target_tree_id}' ShopperID='#{@shopper_id}' TransactionCurrency='USD' RequestingApp='outright' RequestingAppHost='#{HOST_NAME}' ClientAddr='#{client_ip}' EnteredBy='customer' OrderSource='Online' RedirectToBasket='false' EstimateOnly='false' SendConfirmEmail='false'/>",
148
+ 'RenewalPFID' => 0,
149
+ 'RenewalPeriods' => 0,
150
+ 'ItemRequestXml' => '<itemRequest/>'
151
+ })
152
+ response = convert_response(result.body[:purchase_change_account_request_response])
153
+ if response[:result_code] == 0
154
+ {
155
+ :used_express_checkout => true,
156
+ :request_result => response[:purchase_change_account_request_result],
157
+ :error => response[:error],
158
+ :order_xml => response[:order_xml]
159
+ }
160
+ else
161
+ raise RubyEcommError.new(response[:result_code], response[:change_account_request_result])
162
+ end
163
+ end
164
+
165
+ def request_change_via_manager(target_tree_id)
166
+ raise ArgumentError.new('target_tree_id must be specified') if blank?(target_tree_id)
167
+
168
+ result = client_manager.call(:change_account_request, :message => {
169
+ 'ResourceID' => @resource_id,
170
+ 'ResourceType' => @resource_type,
171
+ 'IDType' => ID_TYPE,
172
+ 'AccountChangeXml' => "<ClientChange TreeID='#{target_tree_id}' ShopperID='#{@shopper_id}'/>",
173
+ 'RenewalPFID' => 0,
174
+ 'RenewalPeriods' => 0,
175
+ 'ItemRequestXml' => '<itemRequest/>'
176
+ })
177
+ response = convert_response(result.body[:change_account_request_response])
178
+ if response[:result_code] == 0
179
+ {
180
+ :used_express_checkout => false,
181
+ :request_result => response[:change_account_request_result]
182
+ }
183
+ else
184
+ raise RubyEcommError.new(response[:result_code], response[:change_account_request_result])
145
185
  end
146
186
  end
147
187
  end
@@ -1,3 +1,3 @@
1
1
  module RubyEcommClient
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -2,12 +2,15 @@ require 'spec_helper'
2
2
 
3
3
  describe RubyEcommClient::Client do
4
4
  before do
5
- @shopper_id = '255528'
6
- @downgrade_tree_id = '1734'
5
+ use_test = [:qa, :production].include?(RubyEcommClient::Client.environment)
6
+
7
+ @shopper_id = use_test ? '255528' : '922411'
8
+ @low_tree_id = '1734'
9
+ @downgrade_tree_id = '1736'
7
10
  @current_tree_id = '1735'
8
- @upgrade_tree_id = '1736'
11
+ @upgrade_tree_id = '1737'
9
12
  @resource_type = 'outright'
10
- @resource_id = 'e1dd6ab9-b072-11e3-9aad-005056953ce3'
13
+ @resource_id = use_test ? 'e1dd6ab9-b072-11e3-9aad-005056953ce3' : '10e16f14-b606-11e3-a45e-0050569575d8'
11
14
 
12
15
  @client = RubyEcommClient::Client.new(@shopper_id, @resource_type, @resource_id)
13
16
  end
@@ -142,7 +145,7 @@ describe RubyEcommClient::Client do
142
145
  context '#transitions for one' do
143
146
  before do
144
147
  VCR.use_cassette('transitions/one') do
145
- @transitions = @client.transitions(@downgrade_tree_id)
148
+ @transitions = @client.transitions(@low_tree_id)
146
149
  end
147
150
  end
148
151
 
@@ -203,95 +206,213 @@ describe RubyEcommClient::Client do
203
206
  end
204
207
  end
205
208
 
206
- context '#upgrade' do
207
- before do
208
- VCR.use_cassette('upgrade/default') do
209
- @result = @client.upgrade(@upgrade_tree_id)
210
- end
211
- end
212
-
213
- it 'require target_tree_id non-nil' do
214
- expect { @client.upgrade(nil) }.to raise_error(ArgumentError)
215
- end
216
-
217
- it 'require target_tree_id non-blank' do
218
- expect { @client.upgrade('') }.to raise_error(ArgumentError)
219
- end
220
-
221
- it 'raise RubyEcommError for unknown resource_type' do
222
- VCR.use_cassette('upgrade/unknown/resource_type') do
223
- @client.resource_type = 'flugel'
224
- expect { @client.upgrade(@upgrade_tree_id) }.to raise_error(RubyEcommError){|e| e.result_code.should eq(-100) }
225
- end
226
- end
227
-
228
- it 'raise RubyEcommError for unknown resource_id' do
229
- VCR.use_cassette('upgrade/unknown/resource_id') do
230
- @client.resource_id = 'unknown'
231
- expect { @client.upgrade(@upgrade_tree_id) }.to raise_error(RubyEcommError){|e| e.result_code.should eq(-304) }
232
- end
233
- end
234
-
235
- it 'raise RubyEcommError for unknown target_tree_id' do
236
- VCR.use_cassette('upgrade/unknown/target_tree_id') do
237
- expect { @client.upgrade(73223) }.to raise_error(RubyEcommError){|e| e.result_code.should eq(-999) }
238
- end
239
- end
240
-
241
- it "return no-op request_result for transition to same" do
242
- VCR.use_cassette('upgrade/noop') do
243
- @client.upgrade(@current_tree_id).should eq(1)
209
+ context '#request_change' do
210
+ context 'via express_checkout' do
211
+ before do
212
+ @client.stub(:express_checkout?).and_return(true)
244
213
  end
245
- end
246
-
247
- it "return success request_result for valid transition" do
248
- @result.should eq(2)
249
- end
250
- end
251
214
 
252
- context '#downgrade' do
253
- before do
254
- VCR.use_cassette('downgrade/default') do
255
- @result = @client.downgrade(@downgrade_tree_id)
215
+ context 'upgrade' do
216
+ before do
217
+ VCR.use_cassette('request_change/express/upgrade/default') do
218
+ @result = @client.request_change(@upgrade_tree_id)
219
+ end
220
+ end
221
+
222
+ it 'require target_tree_id non-nil' do
223
+ expect { @client.request_change(nil) }.to raise_error(ArgumentError)
224
+ end
225
+
226
+ it 'require target_tree_id non-blank' do
227
+ expect { @client.request_change('') }.to raise_error(ArgumentError)
228
+ end
229
+
230
+ it 'raise RubyEcommError for unknown resource_type' do
231
+ VCR.use_cassette('request_change/express/upgrade/unknown/resource_type') do
232
+ @client.resource_type = 'flugel'
233
+ expect { @client.request_change(@upgrade_tree_id) }.to raise_error(RubyEcommError) { |e| e.result_code.should eq(-100) }
234
+ end
235
+ end
236
+
237
+ it 'raise RubyEcommError for unknown resource_id' do
238
+ VCR.use_cassette('request_change/express/upgrade/unknown/resource_id') do
239
+ @client.resource_id = 'unknown'
240
+ expect { @client.request_change(@upgrade_tree_id) }.to raise_error(RubyEcommError) { |e| e.result_code.should eq(-304) }
241
+ end
242
+ end
243
+
244
+ it 'raise RubyEcommError for unknown target_tree_id' do
245
+ VCR.use_cassette('request_change/express/upgrade/unknown/target_tree_id') do
246
+ expect { @client.request_change(73223) }.to raise_error(RubyEcommError) { |e| e.result_code.should eq(-999) }
247
+ end
248
+ end
249
+
250
+ it "return no-op request_result for transition to same" do
251
+ VCR.use_cassette('request_change/express/upgrade/noop') do
252
+ result = @client.request_change(@current_tree_id)
253
+ result[:request_result].should eq(1)
254
+ result[:used_express_checkout].should eq(true)
255
+ end
256
+ end
257
+
258
+ it "return success request_result for valid transition" do
259
+ @result[:request_result].should eq(0)
260
+ @result[:used_express_checkout].should eq(true)
261
+ end
256
262
  end
257
- end
258
-
259
- it 'require target_tree_id non-nil' do
260
- expect { @client.downgrade(nil) }.to raise_error(ArgumentError)
261
- end
262
263
 
263
- it 'require target_tree_id non-blank' do
264
- expect { @client.downgrade('') }.to raise_error(ArgumentError)
265
- end
266
-
267
- it 'raise RubyEcommError for unknown resource_type' do
268
- VCR.use_cassette('downgrade/unknown/resource_type') do
269
- @client.resource_type = 'flugel'
270
- expect { @client.downgrade(@downgrade_tree_id) }.to raise_error(RubyEcommError){|e| e.result_code.should eq(-100) }
264
+ context 'downgrade' do
265
+ before do
266
+ VCR.use_cassette('request_change/express/downgrade/default') do
267
+ @result = @client.request_change(@downgrade_tree_id)
268
+ end
269
+ end
270
+
271
+ it 'require target_tree_id non-nil' do
272
+ expect { @client.request_change(nil) }.to raise_error(ArgumentError)
273
+ end
274
+
275
+ it 'require target_tree_id non-blank' do
276
+ expect { @client.request_change('') }.to raise_error(ArgumentError)
277
+ end
278
+
279
+ it 'raise RubyEcommError for unknown resource_type' do
280
+ VCR.use_cassette('request_change/express/downgrade/unknown/resource_type') do
281
+ @client.resource_type = 'flugel'
282
+ expect { @client.request_change(@downgrade_tree_id) }.to raise_error(RubyEcommError) { |e| e.result_code.should eq(-100) }
283
+ end
284
+ end
285
+
286
+ it 'raise RubyEcommError for unknown resource_id' do
287
+ VCR.use_cassette('request_change/express/downgrade/unknown/resource_id') do
288
+ @client.resource_id = 'unknown'
289
+ expect { @client.request_change(@downgrade_tree_id) }.to raise_error(RubyEcommError) { |e| e.result_code.should eq(-304) }
290
+ end
291
+ end
292
+
293
+ it 'raise RubyEcommError for unknown target_tree_id' do
294
+ VCR.use_cassette('request_change/express/downgrade/unknown/target_tree_id') do
295
+ expect { @client.request_change(73541) }.to raise_error(RubyEcommError) { |e| e.result_code.should eq(-999) }
296
+ end
297
+ end
298
+
299
+ it "return no-op request_result for transition to same" do
300
+ VCR.use_cassette('request_change/express/downgrade/noop') do
301
+ result = @client.request_change(@current_tree_id)
302
+ result[:request_result].should eq(1)
303
+ result[:used_express_checkout].should eq(true)
304
+ end
305
+ end
306
+
307
+ it "return success request_result for valid transition" do
308
+ @result[:request_result].should eq(0)
309
+ @result[:used_express_checkout].should eq(true)
310
+ end
271
311
  end
272
312
  end
273
313
 
274
- it 'raise RubyEcommError for unknown resource_id' do
275
- VCR.use_cassette('downgrade/unknown/resource_id') do
276
- @client.resource_id = 'unknown'
277
- expect { @client.downgrade(@downgrade_tree_id) }.to raise_error(RubyEcommError){|e| e.result_code.should eq(-304) }
314
+ context 'via manager' do
315
+ before do
316
+ @client.stub(:express_checkout?).and_return(false)
278
317
  end
279
- end
280
318
 
281
- it 'raise RubyEcommError for unknown target_tree_id' do
282
- VCR.use_cassette('downgrade/unknown/target_tree_id') do
283
- expect { @client.downgrade(73541) }.to raise_error(RubyEcommError){|e| e.result_code.should eq(-999) }
319
+ context 'upgrade' do
320
+ before do
321
+ VCR.use_cassette('request_change/manager/upgrade/default') do
322
+ @result = @client.request_change(@upgrade_tree_id)
323
+ end
324
+ end
325
+
326
+ it 'require target_tree_id non-nil' do
327
+ expect { @client.request_change(nil) }.to raise_error(ArgumentError)
328
+ end
329
+
330
+ it 'require target_tree_id non-blank' do
331
+ expect { @client.request_change('') }.to raise_error(ArgumentError)
332
+ end
333
+
334
+ it 'raise RubyEcommError for unknown resource_type' do
335
+ VCR.use_cassette('request_change/manager/upgrade/unknown/resource_type') do
336
+ @client.resource_type = 'flugel'
337
+ expect { @client.request_change(@upgrade_tree_id) }.to raise_error(RubyEcommError) { |e| e.result_code.should eq(-100) }
338
+ end
339
+ end
340
+
341
+ it 'raise RubyEcommError for unknown resource_id' do
342
+ VCR.use_cassette('request_change/manager/upgrade/unknown/resource_id') do
343
+ @client.resource_id = 'unknown'
344
+ expect { @client.request_change(@upgrade_tree_id) }.to raise_error(RubyEcommError) { |e| e.result_code.should eq(-304) }
345
+ end
346
+ end
347
+
348
+ it 'raise RubyEcommError for unknown target_tree_id' do
349
+ VCR.use_cassette('request_change/manager/upgrade/unknown/target_tree_id') do
350
+ expect { @client.request_change(73223) }.to raise_error(RubyEcommError) { |e| e.result_code.should eq(-999) }
351
+ end
352
+ end
353
+
354
+ it "return no-op request_result for transition to same" do
355
+ VCR.use_cassette('request_change/manager/upgrade/noop') do
356
+ result = @client.request_change(@current_tree_id)
357
+ result[:request_result].should eq(1)
358
+ result[:used_express_checkout].should eq(false)
359
+ end
360
+ end
361
+
362
+ it "return success request_result for valid transition" do
363
+ @result[:request_result].should eq(2)
364
+ @result[:used_express_checkout].should eq(false)
365
+ end
284
366
  end
285
- end
286
367
 
287
- it "return no-op request_result for transition to same" do
288
- VCR.use_cassette('downgrade/noop') do
289
- @client.downgrade(@current_tree_id).should eq(1)
368
+ context 'downgrade' do
369
+ before do
370
+ VCR.use_cassette('request_change/manager/downgrade/default') do
371
+ @result = @client.request_change(@downgrade_tree_id)
372
+ end
373
+ end
374
+
375
+ it 'require target_tree_id non-nil' do
376
+ expect { @client.request_change(nil) }.to raise_error(ArgumentError)
377
+ end
378
+
379
+ it 'require target_tree_id non-blank' do
380
+ expect { @client.request_change('') }.to raise_error(ArgumentError)
381
+ end
382
+
383
+ it 'raise RubyEcommError for unknown resource_type' do
384
+ VCR.use_cassette('request_change/manager/downgrade/unknown/resource_type') do
385
+ @client.resource_type = 'flugel'
386
+ expect { @client.request_change(@downgrade_tree_id) }.to raise_error(RubyEcommError) { |e| e.result_code.should eq(-100) }
387
+ end
388
+ end
389
+
390
+ it 'raise RubyEcommError for unknown resource_id' do
391
+ VCR.use_cassette('request_change/manager/downgrade/unknown/resource_id') do
392
+ @client.resource_id = 'unknown'
393
+ expect { @client.request_change(@downgrade_tree_id) }.to raise_error(RubyEcommError) { |e| e.result_code.should eq(-304) }
394
+ end
395
+ end
396
+
397
+ it 'raise RubyEcommError for unknown target_tree_id' do
398
+ VCR.use_cassette('request_change/manager/downgrade/unknown/target_tree_id') do
399
+ expect { @client.request_change(73541) }.to raise_error(RubyEcommError) { |e| e.result_code.should eq(-999) }
400
+ end
401
+ end
402
+
403
+ it "return no-op request_result for transition to same" do
404
+ VCR.use_cassette('request_change/manager/downgrade/noop') do
405
+ result = @client.request_change(@current_tree_id)
406
+ result[:request_result].should eq(1)
407
+ result[:used_express_checkout].should eq(false)
408
+ end
409
+ end
410
+
411
+ it "return success request_result for valid transition" do
412
+ @result[:request_result].should eq(2)
413
+ @result[:used_express_checkout].should eq(false)
414
+ end
290
415
  end
291
416
  end
292
-
293
- it "return success request_result for valid transition" do
294
- @result.should eq(2)
295
- end
296
417
  end
297
418
  end