exact4r 1.6 → 1.7
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/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
|