breadmachine 0.0.0 → 0.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.
Files changed (32) hide show
  1. data/README.rdoc +48 -4
  2. data/lib/breadmachine/dto/card.rb +23 -9
  3. data/lib/breadmachine/dto/customer_info.rb +19 -5
  4. data/lib/breadmachine/dto/order_info.rb +18 -5
  5. data/lib/breadmachine/extensions/string.rb +11 -0
  6. data/lib/breadmachine/extensions.rb +2 -1
  7. data/lib/breadmachine/secure_trading/auth_request.rb +4 -2
  8. data/lib/breadmachine/secure_trading/auth_reversal_request.rb +3 -5
  9. data/lib/breadmachine/secure_trading/auth_reversal_response.rb +6 -1
  10. data/lib/breadmachine/secure_trading/card_xml.rb +13 -9
  11. data/lib/breadmachine/secure_trading/payment_methods.rb +18 -6
  12. data/lib/breadmachine/secure_trading/st_3d_auth_request.rb +32 -10
  13. data/lib/breadmachine/secure_trading/st_3d_auth_response.rb +20 -11
  14. data/lib/breadmachine/secure_trading/st_3d_card_query_request.rb +28 -9
  15. data/lib/breadmachine/secure_trading/st_3d_card_query_response.rb +122 -23
  16. data/lib/breadmachine/secure_trading/xpay.rb +121 -10
  17. data/lib/breadmachine/secure_trading/xpay_response.rb +29 -0
  18. data/lib/breadmachine/secure_trading/xpay_socket.rb +5 -1
  19. data/lib/breadmachine/secure_trading.rb +4 -2
  20. data/lib/breadmachine.rb +7 -2
  21. data/spec/secure_trading/auth_request_spec.rb +12 -7
  22. data/spec/secure_trading/card_xml_spec.rb +43 -17
  23. data/spec/secure_trading/order_info_xml_spec.rb +2 -2
  24. data/spec/secure_trading/st_3d_auth_request_spec.rb +12 -7
  25. data/spec/secure_trading/st_3d_card_query_request_spec.rb +19 -8
  26. data/spec/secure_trading/st_3d_card_query_response_spec.rb +87 -30
  27. data/spec/secure_trading/st_auth_reversal_request_spec.rb +42 -0
  28. data/spec/secure_trading/xpay_response_spec.rb +26 -0
  29. data/spec/secure_trading/xpay_socket_spec.rb +15 -2
  30. data/spec/secure_trading/xpay_spec.rb +19 -2
  31. metadata +35 -3
  32. data/spec/secure_trading/st_auth_request_spec.rb +0 -0
@@ -0,0 +1,26 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe BreadMachine::SecureTrading::XpayResponse do
4
+
5
+ def response
6
+ described_class.new(sample_response)
7
+ end
8
+
9
+ def sample_response
10
+ <<-XML
11
+ <ResponseBlock Live="FALSE" Version="3.51">
12
+ <Response Type="ST3DCARDQUERY">
13
+ <OperationResponse>
14
+ <Result>1</Result>
15
+ </OperationResponse>
16
+ </Response>
17
+ </ResponseBlock>
18
+ XML
19
+ end
20
+
21
+ it "should select result from xml" do
22
+ response.result.should == '1'
23
+ end
24
+
25
+
26
+ end
@@ -7,8 +7,21 @@ describe BreadMachine::SecureTrading::XPaySocket do
7
7
  BreadMachine::SecureTrading::XPaySocket.open("localhost", 5000)
8
8
  end
9
9
 
10
- it "should pass block to the socket" do
11
- pending "Not sure how to test this??"
10
+ it "should forward block to the socket" do
11
+ mock_socket = mock('socket')
12
+ mock_socket.should_receive(:method)
13
+ TCPSocket.stub(:open).and_yield(mock_socket)
14
+
15
+ BreadMachine::SecureTrading::XPaySocket.open("localhost", 5000) do |socket|
16
+ socket.method
17
+ end
18
+ end
19
+
20
+ it "should raise a BreadMachine error when failing to connect to the gateway" do
21
+ TCPSocket.stub(:open).and_raise(Errno::ECONNREFUSED)
22
+ lambda {
23
+ BreadMachine::SecureTrading::XPaySocket.open("localhost", 5000)
24
+ }.should raise_error(BreadMachine::GatewayConnectionError)
12
25
  end
13
26
 
14
27
  end
@@ -2,8 +2,25 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe BreadMachine::SecureTrading::XPay do
4
4
 
5
- it "should pass request block to socket" do
6
- pending "test this!"
5
+ it "should retry socket exchange 3 times when a connection error occurs" do
6
+ request = stub('request')
7
+ request.stub(:to_xml => '<nothingtoseehere>')
8
+ BreadMachine::SecureTrading::XPaySocket.should_receive(:open).exactly(3).times.and_raise(BreadMachine::GatewayConnectionError)
9
+ lambda {
10
+ BreadMachine::SecureTrading::XPay.exchange(request)
11
+ }.should raise_error(BreadMachine::GatewayConnectionError)
12
+ end
13
+
14
+ it "should not retry for other errors" do
15
+ request = stub('request')
16
+ request.stub(:to_xml => '<nothingtoseehere>')
17
+ request.stub(:response)
18
+ BreadMachine::SecureTrading::XPaySocket.stub(:open)
19
+ xpay = BreadMachine::SecureTrading::XPay.new
20
+ xpay.should_receive(:handle_errors).once.and_raise(BreadMachine::MerchantConfigurationError)
21
+ lambda {
22
+ xpay.exchange(request)
23
+ }.should raise_error(BreadMachine::MerchantConfigurationError)
7
24
  end
8
25
 
9
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: breadmachine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 0.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Southerden
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-05 00:00:00 +01:00
12
+ date: 2009-10-22 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -42,6 +42,26 @@ dependencies:
42
42
  - !ruby/object:Gem::Version
43
43
  version: "0"
44
44
  version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: activesupport
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ type: :development
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
45
65
  - !ruby/object:Gem::Dependency
46
66
  name: rspec
47
67
  type: :development
@@ -72,6 +92,16 @@ dependencies:
72
92
  - !ruby/object:Gem::Version
73
93
  version: "0"
74
94
  version:
95
+ - !ruby/object:Gem::Dependency
96
+ name: rest-client
97
+ type: :development
98
+ version_requirement:
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: "0"
104
+ version:
75
105
  description: BreadMachine facilitates payment processing, including 3-D Secure, with the SecureTrading XPay gateway
76
106
  email: matt@localbubble.com
77
107
  executables: []
@@ -89,6 +119,7 @@ files:
89
119
  - lib/breadmachine/dto/three_d_secure_credentials.rb
90
120
  - lib/breadmachine/extensions.rb
91
121
  - lib/breadmachine/extensions/money.rb
122
+ - lib/breadmachine/extensions/string.rb
92
123
  - lib/breadmachine/secure_trading.rb
93
124
  - lib/breadmachine/secure_trading/auth_request.rb
94
125
  - lib/breadmachine/secure_trading/auth_reversal_request.rb
@@ -105,6 +136,7 @@ files:
105
136
  - lib/breadmachine/secure_trading/st_3d_card_query_response.rb
106
137
  - lib/breadmachine/secure_trading/three_d_secure_credentials_xml.rb
107
138
  - lib/breadmachine/secure_trading/xpay.rb
139
+ - lib/breadmachine/secure_trading/xpay_response.rb
108
140
  - lib/breadmachine/secure_trading/xpay_socket.rb
109
141
  - LICENSE
110
142
  - README.rdoc
@@ -151,12 +183,12 @@ test_files:
151
183
  - spec/secure_trading/st_3d_auth_response_spec.rb
152
184
  - spec/secure_trading/st_3d_card_query_request_spec.rb
153
185
  - spec/secure_trading/st_3d_card_query_response_spec.rb
154
- - spec/secure_trading/st_auth_request_spec.rb
155
186
  - spec/secure_trading/st_auth_reversal_request_spec.rb
156
187
  - spec/secure_trading/st_refund_request_spec.rb
157
188
  - spec/secure_trading/st_refund_reversal_request_spec.rb
158
189
  - spec/secure_trading/st_settlement_request_spec.rb
159
190
  - spec/secure_trading/three_d_secure_credentials_xml_spec.rb
191
+ - spec/secure_trading/xpay_response_spec.rb
160
192
  - spec/secure_trading/xpay_socket_spec.rb
161
193
  - spec/secure_trading/xpay_spec.rb
162
194
  - spec/spec_helper.rb
File without changes