exact4r 1.6 → 1.7
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +3 -0
- data/VERSION +1 -1
- data/lib/ews/certificate_helper.rb +6 -1
- data/lib/ews/transporter.rb +7 -1
- data/prod.log +49 -0
- data/test/general/client_certificate_test.rb +64 -0
- data/test/samples/dsa_cert.pem +22 -0
- data/test/samples/dsa_key.pem +12 -0
- data/test/samples/rsa_cert.pem +63 -0
- data/test/samples/rsa_key.pem +15 -0
- metadata +10 -4
data/CHANGELOG
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.7
|
@@ -4,12 +4,17 @@ module EWS # :nodoc:
|
|
4
4
|
EXACT_ISSUER_CERT_FILE = File.dirname(__FILE__)+"/../../certs/valicert_class2_root.crt" unless defined?(EXACT_ISSUER_CERT_FILE)
|
5
5
|
EXACT_SERVER_CERT_FILE = File.dirname(__FILE__)+"/../../certs/e-xact.com.crt" unless defined?(EXACT_SERVER_CERT_FILE)
|
6
6
|
|
7
|
-
attr_accessor :issuer_cert_file, :server_cert
|
7
|
+
attr_accessor :issuer_cert_file, :server_cert, :client_cert, :client_key
|
8
8
|
|
9
9
|
def configure_certificates(options)
|
10
10
|
self.issuer_cert_file = (options[:issuer_cert] || EXACT_ISSUER_CERT_FILE)
|
11
11
|
server_cert_file = (options[:server_cert] || EXACT_SERVER_CERT_FILE)
|
12
12
|
self.server_cert = File.new(server_cert_file).read
|
13
|
+
if options[:client_cert]
|
14
|
+
raise ArgumentError.new "Key file not supplied" if options[:client_key].blank?
|
15
|
+
self.client_cert = OpenSSL::X509::Certificate.new(File.new(options[:client_cert]).read)
|
16
|
+
self.client_key = client_cert.public_key.class.send(:new, File.new(options[:client_key]).read)
|
17
|
+
end
|
13
18
|
end
|
14
19
|
private :configure_certificates
|
15
20
|
|
data/lib/ews/transporter.rb
CHANGED
@@ -28,6 +28,8 @@ module EWS # :nodoc:
|
|
28
28
|
# :transport_type the transport_type for this transporter (defaults to :rest)
|
29
29
|
# :server_cert the path to the server's certificate file (defaults to E-xact's Server Cert)
|
30
30
|
# :issuer_cert the path to the issuer's certificate file (defaults to E-xact's Issuer's Cert)
|
31
|
+
# :client_cert the path to the client's X.509 certificate file (optional)
|
32
|
+
# :client_key the path to the client's key file (optional)
|
31
33
|
#
|
32
34
|
# The default certificates are those required to connect to https://api.e-xact.com and the
|
33
35
|
# default <tt>transport_type</tt> is <tt>:rest</tt>. The default <tt>transport_type</tt> can be overridden on a per-transaction
|
@@ -56,7 +58,7 @@ module EWS # :nodoc:
|
|
56
58
|
request = build_http_request(transaction, transport_type, transport_details[:suffix])
|
57
59
|
request.basic_auth(transaction.gateway_id, transaction.password)
|
58
60
|
request.add_field "Accept", transport_details[:content_type]
|
59
|
-
request.add_field "User-Agent", "exact4r v1.
|
61
|
+
request.add_field "User-Agent", "exact4r v1.7"
|
60
62
|
request.add_field "Content-type", "#{transport_details[:content_type]}; charset=UTF-8"
|
61
63
|
|
62
64
|
response = get_connection.request(request)
|
@@ -118,6 +120,10 @@ private
|
|
118
120
|
@connection.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
119
121
|
@connection.verify_callback = method(:validate_certificate)
|
120
122
|
@connection.ca_file = self.issuer_cert_file
|
123
|
+
unless self.client_cert.nil?
|
124
|
+
@connection.cert = self.client_cert
|
125
|
+
@connection.key = self.client_key
|
126
|
+
end
|
121
127
|
end
|
122
128
|
@connection
|
123
129
|
end
|
data/prod.log
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
(in /Users/donch/Development/Exact/WebService/exact4r)
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
#-----------------------
|
6
|
+
# Testing: chase
|
7
|
+
#-----------------------
|
8
|
+
Loaded suite /usr/local/rvm/gems/ruby-1.8.7-p302@global/gems/rake-0.8.7/lib/rake/rake_test_loader
|
9
|
+
Started
|
10
|
+
........................................................................................................................................................................
|
11
|
+
Finished in 752.738656 seconds.
|
12
|
+
|
13
|
+
168 tests, 2879 assertions, 0 failures, 0 errors
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
#-----------------------
|
18
|
+
# Testing: tsys
|
19
|
+
#-----------------------
|
20
|
+
Loaded suite /usr/local/rvm/gems/ruby-1.8.7-p302@global/gems/rake-0.8.7/lib/rake/rake_test_loader
|
21
|
+
Started
|
22
|
+
........................................................................................................................................................................
|
23
|
+
Finished in 557.41933 seconds.
|
24
|
+
|
25
|
+
168 tests, 2535 assertions, 0 failures, 0 errors
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
#-----------------------
|
30
|
+
# Testing: emergis
|
31
|
+
#-----------------------
|
32
|
+
Loaded suite /usr/local/rvm/gems/ruby-1.8.7-p302@global/gems/rake-0.8.7/lib/rake/rake_test_loader
|
33
|
+
Started
|
34
|
+
........................................................................................................................................................................
|
35
|
+
Finished in 713.15915 seconds.
|
36
|
+
|
37
|
+
168 tests, 2608 assertions, 0 failures, 0 errors
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
#-----------------------
|
42
|
+
# Testing: moneris
|
43
|
+
#-----------------------
|
44
|
+
Loaded suite /usr/local/rvm/gems/ruby-1.8.7-p302@global/gems/rake-0.8.7/lib/rake/rake_test_loader
|
45
|
+
Started
|
46
|
+
........................................................................................................................................................................
|
47
|
+
Finished in 623.618679 seconds.
|
48
|
+
|
49
|
+
168 tests, 2452 assertions, 0 failures, 0 errors
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
2
|
+
|
3
|
+
class ClientCertificateTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
# skip the tests if we're not sending to a HTTPS location (i.e PROD)
|
7
|
+
return true if @@credentials.config['location'].match(/https/i).nil?
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_cert_raises_without_key
|
11
|
+
assert_raises(ArgumentError) {
|
12
|
+
transporter = ::EWS::Transporter.new(@@credentials.config['location'], {
|
13
|
+
:client_cert => File.dirname(__FILE__)+"/../samples/rsa_cert.pem",
|
14
|
+
})
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_rsa_raises_with_non_matching_key
|
19
|
+
assert_raises(OpenSSL::PKey::RSAError) {
|
20
|
+
transporter = ::EWS::Transporter.new(@@credentials.config['location'], {
|
21
|
+
:client_cert => File.dirname(__FILE__)+"/../samples/rsa_cert.pem",
|
22
|
+
:client_key => File.dirname(__FILE__)+"/../samples/dsa_key.pem"
|
23
|
+
})
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_dsa_raises_with_non_matching_key
|
28
|
+
assert_raises(OpenSSL::PKey::DSAError) {
|
29
|
+
transporter = ::EWS::Transporter.new(@@credentials.config['location'], {
|
30
|
+
:client_cert => File.dirname(__FILE__)+"/../samples/dsa_cert.pem",
|
31
|
+
:client_key => File.dirname(__FILE__)+"/../samples/rsa_key.pem"
|
32
|
+
})
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_rsa_certificate
|
37
|
+
transporter = nil
|
38
|
+
assert_nothing_raised {
|
39
|
+
transporter = ::EWS::Transporter.new(@@credentials.config['location'], {
|
40
|
+
:client_cert => File.dirname(__FILE__)+"/../samples/rsa_cert.pem",
|
41
|
+
:client_key => File.dirname(__FILE__)+"/../samples/rsa_key.pem"
|
42
|
+
})
|
43
|
+
}
|
44
|
+
|
45
|
+
request = EWS::Transaction::Request.new(basic_params)
|
46
|
+
response = transporter.submit(request)
|
47
|
+
assert response.approved?
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_dsa_certificate
|
51
|
+
transporter = nil
|
52
|
+
assert_nothing_raised {
|
53
|
+
transporter = ::EWS::Transporter.new(@@credentials.config['location'], {
|
54
|
+
:client_cert => File.dirname(__FILE__)+"/../samples/dsa_cert.pem",
|
55
|
+
:client_key => File.dirname(__FILE__)+"/../samples/dsa_key.pem"
|
56
|
+
})
|
57
|
+
}
|
58
|
+
|
59
|
+
request = EWS::Transaction::Request.new(basic_params)
|
60
|
+
response = transporter.submit(request)
|
61
|
+
assert response.approved?
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDtTCCAx4CCQCN5PcdH8ZKnDANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMC
|
3
|
+
QVUxDDAKBgNVBAgMA05TVzEcMBoGA1UECgwTRS14YWN0IFRyYW5zYWN0aW9uczEU
|
4
|
+
MBIGA1UECwwLRGV2ZWxvcG1lbnQxFTATBgNVBAMMDERvbm5jaGEncyBDQTEiMCAG
|
5
|
+
CSqGSIb3DQEJARYTZHJlZG1vbmRAZS14YWN0LmNvbTAeFw0xMTAxMjYyMzE3MTFa
|
6
|
+
Fw0xMTAyMjUyMzE3MTFaMIGaMQswCQYDVQQGEwJBVTEMMAoGA1UECAwDTlNXMQ8w
|
7
|
+
DQYDVQQHDAZTeWRuZXkxHDAaBgNVBAoME0UteGFjdCBUcmFuc2FjdGlvbnMxFDAS
|
8
|
+
BgNVBAsMC0RldmVsb3BtZW50MRQwEgYDVQQDDAtEb25uY2hhIERTQTEiMCAGCSqG
|
9
|
+
SIb3DQEJARYTZHJlZG1vbmRAZS14YWN0LmNvbTCCAbYwggErBgcqhkjOOAQBMIIB
|
10
|
+
HgKBgQDVZ3X+TJSgurQFGmr+rZsO94z5b8sZlQ4PVjqpdndxlaUOHv5RgYY92TPD
|
11
|
+
Rm7j2LGbBwaMSIsfySqVsX7S3BTMhVo1MO2lEDwTgtTieEosYImrBdhYXLjWlllq
|
12
|
+
bmom6J/HBxZblJYYdVSeCNbVgjBrs2yR/BrRLHDJpT81JB3s2wIVALUnrTdHQ4XP
|
13
|
+
8BwCjWGQAnttud6BAoGAAxMDMYIxUc7R1RmEX7dLmQrXrcOtMW6VVqGqo1f+SVbv
|
14
|
+
XT0R3LANCX7WOyDYRePxWj3HEKnYRrwMmOTDLB7pdfcgzw2xkAWt4iuNYENDRrS4
|
15
|
+
DuDPBBZDIJc9oRpR+8X7yFaoXttvqx4GOrz/0FpWdp30SnSoO+ksuyq4dFimGUED
|
16
|
+
gYQAAoGAXjmul+axaJP6W7EYJl9tedoZW+GBarA4M18biqXxnsyVce2VjYIpSxux
|
17
|
+
FQZjgMgR0d27iQVwzamzoF2x4Khm00vgZRXiPJlgQ7FSfK6WeM1n0l0hrxfvPpvD
|
18
|
+
BgEhP9geXQ+1sbnn6Sa+FDlrtK7oFhFDge3Iaw2UZ2aUOeUYHB4wDQYJKoZIhvcN
|
19
|
+
AQEFBQADgYEA08u9dKckW8Q7+nTj49jWic1PfiuXW1OWlH71nEIXq13R05CuaZKH
|
20
|
+
Y0LN1Yqd1Nd74MZSFL3xfwwlycpDOzo/mJgVghJx3DZu9171BJ+knOrojgvZ3A13
|
21
|
+
wTYC6gWK/d0TPhORKnwSqwrB/c+Qgyfe783AS15EW7juEUYElpKbEPQ=
|
22
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,12 @@
|
|
1
|
+
-----BEGIN DSA PRIVATE KEY-----
|
2
|
+
MIIBugIBAAKBgQDVZ3X+TJSgurQFGmr+rZsO94z5b8sZlQ4PVjqpdndxlaUOHv5R
|
3
|
+
gYY92TPDRm7j2LGbBwaMSIsfySqVsX7S3BTMhVo1MO2lEDwTgtTieEosYImrBdhY
|
4
|
+
XLjWlllqbmom6J/HBxZblJYYdVSeCNbVgjBrs2yR/BrRLHDJpT81JB3s2wIVALUn
|
5
|
+
rTdHQ4XP8BwCjWGQAnttud6BAoGAAxMDMYIxUc7R1RmEX7dLmQrXrcOtMW6VVqGq
|
6
|
+
o1f+SVbvXT0R3LANCX7WOyDYRePxWj3HEKnYRrwMmOTDLB7pdfcgzw2xkAWt4iuN
|
7
|
+
YENDRrS4DuDPBBZDIJc9oRpR+8X7yFaoXttvqx4GOrz/0FpWdp30SnSoO+ksuyq4
|
8
|
+
dFimGUECgYBeOa6X5rFok/pbsRgmX2152hlb4YFqsDgzXxuKpfGezJVx7ZWNgilL
|
9
|
+
G7EVBmOAyBHR3buJBXDNqbOgXbHgqGbTS+BlFeI8mWBDsVJ8rpZ4zWfSXSGvF+8+
|
10
|
+
m8MGASE/2B5dD7WxuefpJr4UOWu0rugWEUOB7chrDZRnZpQ55RgcHgIUMvlYodvs
|
11
|
+
EGrvWVqYN3JiZsYxLaU=
|
12
|
+
-----END DSA PRIVATE KEY-----
|
@@ -0,0 +1,63 @@
|
|
1
|
+
Certificate:
|
2
|
+
Data:
|
3
|
+
Version: 3 (0x2)
|
4
|
+
Serial Number:
|
5
|
+
8d:e4:f7:1d:1f:c6:4a:99
|
6
|
+
Signature Algorithm: sha1WithRSAEncryption
|
7
|
+
Issuer: C=AU, ST=NSW, O=E-xact Transactions, OU=Development, CN=Donncha's CA/emailAddress=dredmond@e-xact.com
|
8
|
+
Validity
|
9
|
+
Not Before: Jan 26 20:37:07 2011 GMT
|
10
|
+
Not After : Jan 26 20:37:07 2012 GMT
|
11
|
+
Subject: C=AU, ST=NSW, L=Sydney, O=E-xact Transactions, OU=Development, CN=Donncha Redmond/emailAddress=dredmond@e-xact.com
|
12
|
+
Subject Public Key Info:
|
13
|
+
Public Key Algorithm: rsaEncryption
|
14
|
+
Public-Key: (1024 bit)
|
15
|
+
Modulus:
|
16
|
+
00:be:f3:80:e6:54:59:b8:a9:7f:22:e6:a1:80:b2:
|
17
|
+
27:88:aa:bf:54:8c:aa:02:cf:81:c3:ac:27:65:4e:
|
18
|
+
07:b2:5b:9c:c7:77:a8:95:55:d4:cb:3c:82:4b:63:
|
19
|
+
b4:96:79:d6:2b:e0:df:bf:e0:57:fa:e0:ce:68:06:
|
20
|
+
c4:86:b6:c4:09:4d:b0:81:fc:73:a9:a1:4d:29:6b:
|
21
|
+
7a:46:be:7f:6b:17:76:d7:45:58:42:48:63:32:5c:
|
22
|
+
63:58:e8:fa:81:2b:1b:11:60:c2:86:72:ce:19:19:
|
23
|
+
fe:8b:39:c5:7d:08:b8:e7:cf:32:0f:af:87:c1:a7:
|
24
|
+
6a:c6:c7:06:1c:1c:ea:e6:6f
|
25
|
+
Exponent: 65537 (0x10001)
|
26
|
+
X509v3 extensions:
|
27
|
+
X509v3 Basic Constraints:
|
28
|
+
CA:FALSE
|
29
|
+
Netscape Comment:
|
30
|
+
OpenSSL Generated Certificate
|
31
|
+
X509v3 Subject Key Identifier:
|
32
|
+
32:4D:C0:F7:5F:6A:48:62:F6:24:DB:90:B4:7C:02:40:C9:FE:AE:C2
|
33
|
+
X509v3 Authority Key Identifier:
|
34
|
+
keyid:DF:4D:FD:27:6A:8C:3B:4F:A8:8C:27:F7:C1:7B:44:0D:C7:50:BA:77
|
35
|
+
|
36
|
+
Signature Algorithm: sha1WithRSAEncryption
|
37
|
+
5c:bd:be:99:fa:b6:7a:2e:ce:59:b7:7a:d5:01:bf:98:dd:0e:
|
38
|
+
72:dd:10:58:cf:53:e1:2c:62:66:83:9e:83:1b:08:6d:10:86:
|
39
|
+
9d:a4:2a:4e:29:5d:ae:0b:94:25:84:43:bf:aa:de:52:b7:e4:
|
40
|
+
f4:c3:76:93:e4:ea:05:13:61:c6:fc:e0:f0:69:44:e6:cd:76:
|
41
|
+
7f:71:cc:a8:a4:84:ab:a6:17:3d:20:1e:d5:94:9b:8b:ae:8d:
|
42
|
+
1a:8d:30:59:59:8f:50:3a:c5:d6:0f:ab:bd:0c:3b:61:c7:d9:
|
43
|
+
a6:c9:e8:97:c9:65:23:a3:bf:13:8a:ff:53:b1:32:36:50:6d:
|
44
|
+
4a:f3
|
45
|
+
-----BEGIN CERTIFICATE-----
|
46
|
+
MIIDIzCCAoygAwIBAgIJAI3k9x0fxkqZMA0GCSqGSIb3DQEBBQUAMIGKMQswCQYD
|
47
|
+
VQQGEwJBVTEMMAoGA1UECAwDTlNXMRwwGgYDVQQKDBNFLXhhY3QgVHJhbnNhY3Rp
|
48
|
+
b25zMRQwEgYDVQQLDAtEZXZlbG9wbWVudDEVMBMGA1UEAwwMRG9ubmNoYSdzIENB
|
49
|
+
MSIwIAYJKoZIhvcNAQkBFhNkcmVkbW9uZEBlLXhhY3QuY29tMB4XDTExMDEyNjIw
|
50
|
+
MzcwN1oXDTEyMDEyNjIwMzcwN1owgZ4xCzAJBgNVBAYTAkFVMQwwCgYDVQQIDANO
|
51
|
+
U1cxDzANBgNVBAcMBlN5ZG5leTEcMBoGA1UECgwTRS14YWN0IFRyYW5zYWN0aW9u
|
52
|
+
czEUMBIGA1UECwwLRGV2ZWxvcG1lbnQxGDAWBgNVBAMMD0Rvbm5jaGEgUmVkbW9u
|
53
|
+
ZDEiMCAGCSqGSIb3DQEJARYTZHJlZG1vbmRAZS14YWN0LmNvbTCBnzANBgkqhkiG
|
54
|
+
9w0BAQEFAAOBjQAwgYkCgYEAvvOA5lRZuKl/IuahgLIniKq/VIyqAs+Bw6wnZU4H
|
55
|
+
slucx3eolVXUyzyCS2O0lnnWK+Dfv+BX+uDOaAbEhrbECU2wgfxzqaFNKWt6Rr5/
|
56
|
+
axd210VYQkhjMlxjWOj6gSsbEWDChnLOGRn+iznFfQi4588yD6+HwadqxscGHBzq
|
57
|
+
5m8CAwEAAaN7MHkwCQYDVR0TBAIwADAsBglghkgBhvhCAQ0EHxYdT3BlblNTTCBH
|
58
|
+
ZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFDJNwPdfakhi9iTbkLR8AkDJ
|
59
|
+
/q7CMB8GA1UdIwQYMBaAFN9N/SdqjDtPqIwn98F7RA3HULp3MA0GCSqGSIb3DQEB
|
60
|
+
BQUAA4GBAFy9vpn6tnouzlm3etUBv5jdDnLdEFjPU+EsYmaDnoMbCG0Qhp2kKk4p
|
61
|
+
Xa4LlCWEQ7+q3lK35PTDdpPk6gUTYcb84PBpRObNdn9xzKikhKumFz0gHtWUm4uu
|
62
|
+
jRqNMFlZj1A6xdYPq70MO2HH2abJ6JfJZSOjvxOK/1OxMjZQbUrz
|
63
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,15 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIICXAIBAAKBgQC+84DmVFm4qX8i5qGAsieIqr9UjKoCz4HDrCdlTgeyW5zHd6iV
|
3
|
+
VdTLPIJLY7SWedYr4N+/4Ff64M5oBsSGtsQJTbCB/HOpoU0pa3pGvn9rF3bXRVhC
|
4
|
+
SGMyXGNY6PqBKxsRYMKGcs4ZGf6LOcV9CLjnzzIPr4fBp2rGxwYcHOrmbwIDAQAB
|
5
|
+
AoGAc7EfCO5USfDP6bpoYYwPLdud/sEXBIrq6T31xIgpW6Pr8mKKTqhpPBXWL40i
|
6
|
+
TgVVgNJHXn6zb3ojNJ3dFm3HiXuLdhnB+qu7zLh7dXB/f8GYnaFHnWjYIVsoavfZ
|
7
|
+
8rIQ/r1BmtoncFV7ghWI5WgWOipOLsY5L5bKTJZka6m0UzkCQQDf9aoCMYnlXAZT
|
8
|
+
VjWN7To2Vd7dsM+ivF9acV0cZWv+9lNz29zoA8xvAYNVtnbs2vfsMTjAZoQ8iNPW
|
9
|
+
jsV3ZqV1AkEA2kTuwRPMQd+i6kl8wxC4+Slh675Hi16JYoaxyipJjlmDgWXTn+9t
|
10
|
+
CJPNT6MhQhuYwWeQDp/yzc2ZXrhaGFKL0wJAIuMg7aCL65evQJIgW5CFzesIgZ5G
|
11
|
+
agJQFEWujHrcHOaAT38DZX0Z/nzM2bBHzFO75SYxwf72QHvMDBNHfXcW9QJATEVs
|
12
|
+
PNHjPV2de0skqrFMQd0BF7TNIVlunpw8wk1WmMSU3IGtmqS6sBWd1+dENuqXzXWX
|
13
|
+
9FRWLy5aGqxG51ro+wJBALzmX/dPSxETIA2sN97iNkhDa1Pzg6NyaoajL381rwgg
|
14
|
+
4MzykW7e6TKbTtDlou4ZerzJ+UfcUeipn1cZuz1uxUk=
|
15
|
+
-----END RSA PRIVATE KEY-----
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exact4r
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 1
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: "1.
|
8
|
+
- 7
|
9
|
+
version: "1.7"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- E-xact Transactions Ltd.
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-
|
17
|
+
date: 2011-02-03 00:00:00 +11:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -76,6 +76,7 @@ files:
|
|
76
76
|
- ./lib/ews/transporter.rb
|
77
77
|
- ./lib/exact4r.rb
|
78
78
|
- ./LICENCE
|
79
|
+
- ./prod.log
|
79
80
|
- ./Rakefile
|
80
81
|
- ./README
|
81
82
|
- ./test/credentials.rb
|
@@ -105,15 +106,20 @@ files:
|
|
105
106
|
- ./test/exhaustive/transaction_details_test.rb
|
106
107
|
- ./test/exhaustive/void_test.rb
|
107
108
|
- ./test/general/avs_test.rb
|
109
|
+
- ./test/general/client_certificate_test.rb
|
108
110
|
- ./test/general/json_encoding_test.rb
|
109
111
|
- ./test/general/request_test.rb
|
110
112
|
- ./test/general/rest_encoding_test.rb
|
111
113
|
- ./test/general/soap_encoding_test.rb
|
112
114
|
- ./test/general/transporter_test.rb
|
113
115
|
- ./test/general/validator_test.rb
|
116
|
+
- ./test/samples/dsa_cert.pem
|
117
|
+
- ./test/samples/dsa_key.pem
|
114
118
|
- ./test/samples/rest.dodgy.response.xml
|
115
119
|
- ./test/samples/rest.everything.response.xml
|
116
120
|
- ./test/samples/rest.response.xml
|
121
|
+
- ./test/samples/rsa_cert.pem
|
122
|
+
- ./test/samples/rsa_key.pem
|
117
123
|
- ./test/samples/soap.deserialization.fault.xml
|
118
124
|
- ./test/samples/soap.dodgy.response.xml
|
119
125
|
- ./test/samples/soap.everything.response.xml
|