nordea-filetransfer 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +22 -0
- data/README.md +159 -0
- data/lib/nordea-filetransfer.rb +1 -0
- data/lib/nordea/file_transfer.rb +28 -0
- data/lib/nordea/file_transfer/application_request.rb +67 -0
- data/lib/nordea/file_transfer/application_response.rb +40 -0
- data/lib/nordea/file_transfer/attributes.rb +23 -0
- data/lib/nordea/file_transfer/client.rb +122 -0
- data/lib/nordea/file_transfer/config.rb +22 -0
- data/lib/nordea/file_transfer/error.rb +12 -0
- data/lib/nordea/file_transfer/file_descriptor.rb +14 -0
- data/lib/nordea/file_transfer/file_type_service.rb +12 -0
- data/lib/nordea/file_transfer/request.rb +18 -0
- data/lib/nordea/file_transfer/request_header.rb +27 -0
- data/lib/nordea/file_transfer/response.rb +11 -0
- data/lib/nordea/file_transfer/response_header.rb +15 -0
- data/lib/nordea/file_transfer/user_file_type.rb +22 -0
- data/lib/nordea/file_transfer/version.rb +5 -0
- data/spec/cassettes/download_file.yml +311 -0
- data/spec/cassettes/download_file_error.yml +310 -0
- data/spec/cassettes/download_file_list.yml +311 -0
- data/spec/cassettes/get_user_info.yml +311 -0
- data/spec/cassettes/upload_file_error.yml +312 -0
- data/spec/certs/WSNDEA1234.pem +92 -0
- data/spec/nordea/file_transfer/client_spec.rb +122 -0
- data/spec/spec_helper.rb +35 -0
- metadata +294 -0
@@ -0,0 +1,92 @@
|
|
1
|
+
Bag Attributes
|
2
|
+
localKeyID: 4B 45 59 34 64 64 32 36 62 64 31 30 30 30 30 34 65 31 38 00
|
3
|
+
subject=/C=SE/CN=Nordea Demo Certificate/SN=Certificate/GN=Nordea Demo/serialNumber=009557243772
|
4
|
+
issuer=/C=SE/O=Nordea Bank AB (publ)/CN=Nordea role-certificates CA 01/serialNumber=516406-0120
|
5
|
+
-----BEGIN CERTIFICATE-----
|
6
|
+
MIID+jCCAuKgAwIBAgIEASJt3DANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQGEwJT
|
7
|
+
RTEeMBwGA1UEChMVTm9yZGVhIEJhbmsgQUIgKHB1YmwpMScwJQYDVQQDEx5Ob3Jk
|
8
|
+
ZWEgcm9sZS1jZXJ0aWZpY2F0ZXMgQ0EgMDExFDASBgNVBAUTCzUxNjQwNi0wMTIw
|
9
|
+
MB4XDTExMDUxNzEyMzQzNVoXDTEzMDUxNzEyMzQzNVowcjELMAkGA1UEBhMCU0Ux
|
10
|
+
IDAeBgNVBAMMF05vcmRlYSBEZW1vIENlcnRpZmljYXRlMRQwEgYDVQQEDAtDZXJ0
|
11
|
+
aWZpY2F0ZTEUMBIGA1UEKgwLTm9yZGVhIERlbW8xFTATBgNVBAUTDDAwOTU1NzI0
|
12
|
+
Mzc3MjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAkR32vnJetMM5pG7VL1lO
|
13
|
+
hREmPr6QIVNTkmTe0gQWiL923Jjti2wY/QCbssAKJUQK0apgbHWpTI3ZBjuuVvcT
|
14
|
+
4tZaiYtP6sRy8TZqBv2OxDkDf08eErW9nkevOMvvgI0NNSO5qwif2C4+G+n8+AY3
|
15
|
+
4QNpbuA9hWD65wImutrkepsCAwEAAaOCASAwggEcMAkGA1UdEwQCMAAwEQYDVR0O
|
16
|
+
BAoECEHToLxoFFavMBMGA1UdIAQMMAowCAYGKoVwRwEDMBMGA1UdIwQMMAqACEIF
|
17
|
+
jfLBeTpRMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3Au
|
18
|
+
bm9yZGVhLnNlL1JDQTAxMA4GA1UdDwEB/wQEAwIFoDCBiAYDVR0fBIGAMH4wfKB6
|
19
|
+
oHiGdmxkYXA6Ly9sZGFwLm5iLnNlL2NuPU5vcmRlYSUyMHJvbGUtY2VydGlmaWNh
|
20
|
+
dGVzJTIwQ0ElMjAwMSxvPU5vcmRlYSUyMEJhbmslMjBBQiUyMChwdWJsKSxjPVNF
|
21
|
+
P2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwDQYJKoZIhvcNAQEFBQADggEBAAAp
|
22
|
+
0wveJnANl6aA/fOKFGwDXkkLYlnX+dlP69YAIWVbpl2zkSbc/KJD8qDzpNX1mT0r
|
23
|
+
0ECpyc+9Tn2bzvcZnw8Gj5jav/ePQhZPBavaELEBI7HTIDtFI6yDQSAjsHkgsvo2
|
24
|
+
7cFnAJMIXlbODeWQlUL2rR8A5AcMBEww0a/NbL7g4wU/ysfSeTWUyPpVqngVDCSd
|
25
|
+
FrVpNJijVOF+WdDNfOLl8o8JuoJ1tU0NrdoeIpWtzj1WcEOcbFE87pe2iBdnWeIT
|
26
|
+
NjufVlr78x7lheXr1zOOCPn4K+mXhm1/PkyMBc+7E0e2upolksK3q6CCW3VbK68p
|
27
|
+
LNnwuUPhdDiQO98rdW8=
|
28
|
+
-----END CERTIFICATE-----
|
29
|
+
Bag Attributes
|
30
|
+
localKeyID: 4B 45 59 34 64 64 32 36 62 64 32 30 30 30 30 32 63 38 38 00
|
31
|
+
subject=/C=SE/CN=Nordea Demo Certificate/SN=Certificate/GN=Nordea Demo/serialNumber=009557243772
|
32
|
+
issuer=/C=SE/O=Nordea Bank AB (publ)/CN=Nordea role-certificates CA 01/serialNumber=516406-0120
|
33
|
+
-----BEGIN CERTIFICATE-----
|
34
|
+
MIID+jCCAuKgAwIBAgIEASJt3TANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQGEwJT
|
35
|
+
RTEeMBwGA1UEChMVTm9yZGVhIEJhbmsgQUIgKHB1YmwpMScwJQYDVQQDEx5Ob3Jk
|
36
|
+
ZWEgcm9sZS1jZXJ0aWZpY2F0ZXMgQ0EgMDExFDASBgNVBAUTCzUxNjQwNi0wMTIw
|
37
|
+
MB4XDTExMDUxNzEyMzQzNVoXDTEzMDUxNzEyMzQzNVowcjELMAkGA1UEBhMCU0Ux
|
38
|
+
IDAeBgNVBAMMF05vcmRlYSBEZW1vIENlcnRpZmljYXRlMRQwEgYDVQQEDAtDZXJ0
|
39
|
+
aWZpY2F0ZTEUMBIGA1UEKgwLTm9yZGVhIERlbW8xFTATBgNVBAUTDDAwOTU1NzI0
|
40
|
+
Mzc3MjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAm7v1bIMiwb5YO/9uQV9q
|
41
|
+
ptloVeq2gslA5xCFesUgPq5DX6X17VwYU1MNyUVIZ/+UlYjd3HxqrKvgOILfZJO+
|
42
|
+
Rp5A5sdUZo86JN3Ttxh7l65cRgprA2IKInSkEYaFB+ur2TxFbTV4Abp4g0pm7fks
|
43
|
+
73J+szNeYPsi5usrhfoRfDMCAwEAAaOCASAwggEcMAkGA1UdEwQCMAAwEQYDVR0O
|
44
|
+
BAoECEALP/E+/hw4MBMGA1UdIAQMMAowCAYGKoVwRwEDMBMGA1UdIwQMMAqACEIF
|
45
|
+
jfLBeTpRMDcGCCsGAQUFBwEBBCswKTAnBggrBgEFBQcwAYYbaHR0cDovL29jc3Au
|
46
|
+
bm9yZGVhLnNlL1JDQTAxMA4GA1UdDwEB/wQEAwIGQDCBiAYDVR0fBIGAMH4wfKB6
|
47
|
+
oHiGdmxkYXA6Ly9sZGFwLm5iLnNlL2NuPU5vcmRlYSUyMHJvbGUtY2VydGlmaWNh
|
48
|
+
dGVzJTIwQ0ElMjAwMSxvPU5vcmRlYSUyMEJhbmslMjBBQiUyMChwdWJsKSxjPVNF
|
49
|
+
P2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwDQYJKoZIhvcNAQEFBQADggEBAFvg
|
50
|
+
pxTEaEnPZpcZ8sybkzCESa50sNV4KfFyozz2pkCa9cp1+VprmvpWMsAVBCTRGNc/
|
51
|
+
0fs5rTf+RVsfy04kGvI5s7+Jk/778mdSPTjOYIqmHidejlCKN6BcwBXmoS2Huypq
|
52
|
+
FetDDK/IrLqd9pKpUQLCmeNbz/qqT8YOpE313XkYFvEV/PmSa4JKtJjSmuLykn0t
|
53
|
+
BHWtqEEN6OuwP/stXdHFuXPbhacQbA3JrOHDoYr0oUG9aFj11pyF6r2UjNSxP2wL
|
54
|
+
SrfAkTELQJZIFZ59NGZBgd/52husYLbwmlHNrIcWG1OFTQnHFOQ+FPiAyX9Tk7Ep
|
55
|
+
8vllBrRoKeG3HLakr/c=
|
56
|
+
-----END CERTIFICATE-----
|
57
|
+
Bag Attributes
|
58
|
+
localKeyID: 4B 45 59 34 64 64 32 36 62 64 31 30 30 30 30 34 65 31 38 00
|
59
|
+
Key Attributes: <No Attributes>
|
60
|
+
-----BEGIN RSA PRIVATE KEY-----
|
61
|
+
MIICXAIBAAKBgQCRHfa+cl60wzmkbtUvWU6FESY+vpAhU1OSZN7SBBaIv3bcmO2L
|
62
|
+
bBj9AJuywAolRArRqmBsdalMjdkGO65W9xPi1lqJi0/qxHLxNmoG/Y7EOQN/Tx4S
|
63
|
+
tb2eR684y++AjQ01I7mrCJ/YLj4b6fz4BjfhA2lu4D2FYPrnAia62uR6mwIDAQAB
|
64
|
+
AoGAMTODkRad3ZPDW2johuE0qhEicmuR2nqx/xSMJ5CTQ1IHLsv63iaMYltubrCF
|
65
|
+
wBTNxkCJ6LwL5pTBXEen2Hx1FRJRrW2xnc/WcbGZ+wM40NL3El07mhpUT1wMIZYK
|
66
|
+
4PwYhYoj8wyGkCKJDari948ZR2b43G+2xgbf0qaf0Xg97mECQQCdhjlry0W96Xo1
|
67
|
+
PNqXRfM7Uemwpmg93nf+Wgx32FLCMQpMTGFTKO0rWbEK9AFxND6FBlKwFG/O77jo
|
68
|
+
i7g7DVltAkEA69Yc+fheaDu/oidcFVDVpedZkTfwQ6FI2IYBB61Jo6u2rXkGmqu5
|
69
|
+
LmHnTOS2aJQ4LHIYLBFsPJTdAk3o3MVnJwJAPL5dtiuUoT8/WPg2cs8OlHlp3CzP
|
70
|
+
VcxMCVFALZbFkwzGI9XwUdkeW/EiTE77n2O+GB3wFOZMl0fpzgLS8DKdoQJBAN1Q
|
71
|
+
D98wiX+tWjdUUmCae/P1eCMD6I++wfqXPk4y+yEB2itOoLjzH5N8Qq/xDZB0T4a+
|
72
|
+
BxsLupPbas9nx3euNA8CQD4a5BI25z05LrbyGc6RXCmRgBbuMh0sQ+zaY7ynDUKN
|
73
|
+
x6FRMfRYowZjojp/mZvd6G0hNpc+s+NsoxwT+CulAGc=
|
74
|
+
-----END RSA PRIVATE KEY-----
|
75
|
+
Bag Attributes
|
76
|
+
localKeyID: 4B 45 59 34 64 64 32 36 62 64 32 30 30 30 30 32 63 38 38 00
|
77
|
+
Key Attributes: <No Attributes>
|
78
|
+
-----BEGIN RSA PRIVATE KEY-----
|
79
|
+
MIICXQIBAAKBgQCbu/VsgyLBvlg7/25BX2qm2WhV6raCyUDnEIV6xSA+rkNfpfXt
|
80
|
+
XBhTUw3JRUhn/5SViN3cfGqsq+A4gt9kk75GnkDmx1Rmjzok3dO3GHuXrlxGCmsD
|
81
|
+
YgoidKQRhoUH66vZPEVtNXgBuniDSmbt+Szvcn6zM15g+yLm6yuF+hF8MwIDAQAB
|
82
|
+
AoGAVWaugJItJjfepRA/AyRzFQpWF/99lJ0OtWeu+xNMynK/yZz2DvMY9+Csx7nx
|
83
|
+
qe5TKemDWNz1lrkuXW8PWFVY2v4BLp+F7dAfvDxCAa+/v23jT9ago0xhu/l0j+Zo
|
84
|
+
2/iAH7phewPZD3zqEaS3p0iCX+6wWIKzjISWczfm6PtSnXECQQCubsR0CdVIDGf0
|
85
|
+
V/NNw91Zggfu2K9tx9stOsMdrYhpPo8TRdxLwS+vyB+nl+l4WBCyrKt9ysAaYYc0
|
86
|
+
EeKrxfnbAkEA5I7O9S7ZSwOfhZfm2plq3ir8XkiukWc1p6RGzVvUb8VH3OZeWasr
|
87
|
+
82KXzPCuhnm7pVPMfnMwGk+W7n8HtJYyiQJAGDUJEG146tnF53P5MPaYll5kSXJK
|
88
|
+
zjppIVrBTzIQ90IWSv9r9htmScfFFNYRMYFPN+yclAV6KW8Ve1VsFpiP9wJBALd8
|
89
|
+
Ym95dd6AAR/Z6+4QfjfvoHz8spBuoCd+fYy9rRUx9thDZPltrrIMs7tGeYXh0qAO
|
90
|
+
XzwgszxcKto6xu/WKKkCQQCY6bDuLp0+JlOk/8rrlmLVrItqTJKvPQlV1eCR0CUy
|
91
|
+
ptFV8AgAwhcV5EVBh6sW3juLokNGkK7OFOZK1xP0xifp
|
92
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,122 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Nordea::FileTransfer::Client do
|
4
|
+
subject :client do
|
5
|
+
Savon.configure do |config|
|
6
|
+
config.log = false
|
7
|
+
end
|
8
|
+
Nordea::FileTransfer::Client.new(
|
9
|
+
:cert_file => cert_file,
|
10
|
+
:private_key_file => cert_file,
|
11
|
+
:sender_id => 11111111
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
let :cert_file do
|
16
|
+
File.expand_path('../../../certs/WSNDEA1234.pem', __FILE__)
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "GetUserInfo" do
|
20
|
+
it "should send a request and return response" do
|
21
|
+
response = VCR.use_cassette('get_user_info') do
|
22
|
+
client.get_user_info do |header, request|
|
23
|
+
header.receiver_id = 123456789
|
24
|
+
request.customer_id = 162355330
|
25
|
+
end
|
26
|
+
end
|
27
|
+
response.application_response.user_file_types.size.should be > 0
|
28
|
+
response.application_response.user_file_types.each do |user_file_type|
|
29
|
+
user_file_type.file_type_services.size.should be > 0
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "DownloadFileList" do
|
35
|
+
it "should send a request and return response" do
|
36
|
+
response = VCR.use_cassette('download_file_list') do
|
37
|
+
client.download_file_list do |header, request|
|
38
|
+
header.receiver_id = 123456789
|
39
|
+
request.customer_id = 162355330
|
40
|
+
request.status = "ALL"
|
41
|
+
request.target_id = "11111111A1"
|
42
|
+
request.file_type = "NDCORPAYL"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
response.application_response.file_descriptors.size.should be > 0
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "DownloadFile" do
|
50
|
+
# http://www.nordea.fi/sitemod/upload/root/fi_org/liite/e/yritys/pdf/kurssi_aineisto.pdf
|
51
|
+
it "send a request and return response with exchange rates" do
|
52
|
+
response = VCR.use_cassette('download_file') do
|
53
|
+
client.download_file do |header, request|
|
54
|
+
header.receiver_id = 123456789
|
55
|
+
request.customer_id = 162355330
|
56
|
+
request.file_references = ["1320120312210394"]
|
57
|
+
request.target_id = "11111111A1"
|
58
|
+
request.software_id = "Ruby"
|
59
|
+
request.file_type = "VKEUR"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
response.application_response.content.should include("VK01")
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should raise error #29 when file references are not present" do
|
66
|
+
lambda {
|
67
|
+
response = VCR.use_cassette('download_file_error') do
|
68
|
+
client.download_file do |header, request|
|
69
|
+
header.receiver_id = 123456789
|
70
|
+
request.customer_id = 162355330
|
71
|
+
request.target_id = "11111111A1"
|
72
|
+
request.software_id = "Ruby"
|
73
|
+
request.file_type = "VKEUR"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
}.should raise_error(
|
77
|
+
Nordea::FileTransfer::Error,
|
78
|
+
"Invalid parameters: At least one FileReference required for downloading (#29)"
|
79
|
+
)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# http://www.nordea.fi/sitemod/upload/root/fi_org/liite/ApplicationRequest_UploadFile.xml
|
84
|
+
describe "UploadFile" do
|
85
|
+
it "should upload file and return status OK" do
|
86
|
+
pending "Couldn't find a good test case"
|
87
|
+
response = VCR.use_cassette('upload_file') do
|
88
|
+
response = client.upload_file do |header, request|
|
89
|
+
header.receiver_id = 11111111
|
90
|
+
request.customer_id = 679155330
|
91
|
+
request.target_id = "11111111A1"
|
92
|
+
# request.service_id = "111111111" #"NDEAFIHHXXX-FI1-EUR-111111111"
|
93
|
+
request.file_type = "CNFTC000S"
|
94
|
+
request.user_filename = "T.TXT"
|
95
|
+
request.content = Base64.decode64("PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhLS1TRVBBIENUIGFuZCBvdGhlciBwYXltZW50cyBzYW1wbGUgZmlsZSwgZWRpdGVkIGJ5IE5vcmRlYSBKdWx5IDIwMDkgSksgLS0+DQo8RG9jdW1lbnQgeG1sbnM9InVybjppc286c3RkOmlzbzoyMDAyMjp0ZWNoOnhzZDpwYWluLjAwMS4wMDEuMDIiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTpzY2hlbWFMb2NhdGlvbj0idXJuOmlzbzpzdGQ6aXNvOjIwMDIyOnRlY2g6eHNkOnBhaW4uMDAxLjAwMS4wMiYjeEQ7JiN4QTtwYWluLjAwMS4wMDEuMDIueHNkIj4NCiAgPHBhaW4uMDAxLjAwMS4wMj4NCiAgICA8R3JwSGRyPg0KICAgICAgPE1zZ0lkPjIwMTAxMDIxLTAwMDAwMDI8L01zZ0lkPg0KICAgICAgPENyZUR0VG0+MjAxMC0wOS0wNlQxMDozMDowMDwvQ3JlRHRUbT4NCiAgICAgIDxCdGNoQm9va2c+dHJ1ZTwvQnRjaEJvb2tnPg0KICAgICAgPE5iT2ZUeHM+MTwvTmJPZlR4cz4NCiAgICAgIDxDdHJsU3VtPjEwMC4wMTwvQ3RybFN1bT4NCiAgICAgIDxHcnBnPk1JWEQ8L0dycGc+DQogICAgICA8SW5pdGdQdHk+DQogICAgICAgIDxObT5Hcm91cCBGaW5hbmNlPC9ObT4NCiAgICAgICAgPFBzdGxBZHI+DQogICAgICAgICAgPEFkckxpbmU+QWxla3NhbnRlcmlua2F0dSAyMzwvQWRyTGluZT4NCiAgICAgICAgICA8QWRyTGluZT5GSS0wMDEwMCBIZWxzaW5raTwvQWRyTGluZT4NCiAgICAgICAgICA8Q3RyeT5GSTwvQ3RyeT4NCiAgICAgICAgPC9Qc3RsQWRyPg0KICAgICAgPC9Jbml0Z1B0eT4NCiAgICA8L0dycEhkcj4NCiAgICA8IS0tDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpFbnNpbW3DpGluZW4gUGF5bWVudCBJbmZvcm1hdGlvbiAtZXLDpA0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLS0+DQogICAgPFBtdEluZj4NCiAgICAgIDxQbXRJbmZJZD4yMDEwMTAyMS0xMjM0NTYtMDI8L1BtdEluZklkPg0KICAgICAgPFBtdE10ZD5UUkY8L1BtdE10ZD4NCiAgICAgIDxSZXFkRXhjdG5EdD4yMDEwLTA5LTI0PC9SZXFkRXhjdG5EdD4NCiAgICAgIDxEYnRyPg0KICAgICAgICA8Tm0+T3kgQ29tcGFueSBBYiA8L05tPg0KICAgICAgICA8UHN0bEFkcj4NCiAgICAgICAgICA8QWRyTGluZT5NYW5uZXJoZWltaW50aWUgNjY8L0FkckxpbmU+DQogICAgICAgICAgPEFkckxpbmU+RkktMDAyNjAgSGVsc2lua2k8L0FkckxpbmU+DQogICAgICAgICAgPEN0cnk+Rkk8L0N0cnk+DQogICAgICAgIDwvUHN0bEFkcj4NCiAgICAgICAgPElkPg0KICAgICAgICAgIDxPcmdJZD4NCiAgICAgICAgICAgIDxCa1B0eUlkPjA5ODc2NTQzMjE8L0JrUHR5SWQ+DQogICAgICAgICAgPC9PcmdJZD4NCiAgICAgICAgPC9JZD4NCiAgICAgIDwvRGJ0cj4NCiAgICAgIDxEYnRyQWNjdD4NCiAgICAgICAgPElkPg0KICAgICAgICAgIDxJQkFOPkZJODUyOTUwMTgwMDAzMDU3NDwvSUJBTj4NCiAgICAgICAgPC9JZD4NCiAgICAgIDwvRGJ0ckFjY3Q+DQogICAgICA8RGJ0ckFndD4NCiAgICAgICAgPEZpbkluc3RuSWQ+DQogICAgICAgICAgPEJJQz5OREVBRklISDwvQklDPg0KICAgICAgICA8L0Zpbkluc3RuSWQ+DQogICAgICA8L0RidHJBZ3Q+DQogICAgICA8Q2hyZ0JyPlNMRVY8L0NocmdCcj4NCiAgICAgIDwhLS0NCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCjEuIFNFUEEgVmlpdHRlZWxsaW5lbiBTRVBBLXRpbGlzaWlydG8NCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0tPg0KICAgICAgPENkdFRyZlR4SW5mPg0KICAgICAgICA8UG10SWQ+DQogICAgICAgICAgPEVuZFRvRW5kSWQ+MjAwOTA4MjEtRTAwMDAwMjwvRW5kVG9FbmRJZD4NCiAgICAgICAgPC9QbXRJZD4NCiAgICAgICAgPEFtdD4NCiAgICAgICAgICA8SW5zdGRBbXQgQ2N5PSJFVVIiPjEwMC4wMTwvSW5zdGRBbXQ+DQogICAgICAgIDwvQW10Pg0KICAgICAgICA8Q2R0ckFndD4NCiAgICAgICAgICA8RmluSW5zdG5JZD4NCiAgICAgICAgICAgIDxCSUM+QkFOS0ZJSEg8L0JJQz4NCiAgICAgICAgICA8L0Zpbkluc3RuSWQ+DQogICAgICAgIDwvQ2R0ckFndD4NCiAgICAgICAgPENkdHI+DQogICAgICAgICAgPE5tPkNyZWRpdG9yIENvbXBhbnk8L05tPg0KICAgICAgICAgIDxQc3RsQWRyPg0KICAgICAgICAgICAgPEFkckxpbmU+TGlubmFua2F0dSAyMjwvQWRyTGluZT4NCiAgICAgICAgICAgIDxBZHJMaW5lPjIwMTAwIFR1cmt1PC9BZHJMaW5lPg0KICAgICAgICAgICAgPEN0cnk+Rkk8L0N0cnk+DQogICAgICAgICAgPC9Qc3RsQWRyPg0KICAgICAgICA8L0NkdHI+DQogICAgICAgIDxDZHRyQWNjdD4NCiAgICAgICAgICA8SWQ+DQogICAgICAgICAgICA8SUJBTj5GSTYzMjk1MDE4MDAwMjA1ODI8L0lCQU4+DQogICAgICAgICAgPC9JZD4NCiAgICAgICAgPC9DZHRyQWNjdD4NCiAgICAgICAgPFJtdEluZj4NCiAgICAgICAgICA8U3RyZD4NCiAgICAgICAgICAgIDxDZHRyUmVmSW5mPg0KICAgICAgICAgICAgICA8Q2R0clJlZlRwPg0KICAgICAgICAgICAgICAgIDxDZD5TQ09SPC9DZD4NCiAgICAgICAgICAgICAgPC9DZHRyUmVmVHA+DQogICAgICAgICAgICAgIDxDZHRyUmVmPjAwMDAwMDAwMDAwMDAwMDAwMTIzPC9DZHRyUmVmPg0KICAgICAgICAgICAgPC9DZHRyUmVmSW5mPg0KICAgICAgICAgIDwvU3RyZD4NCiAgICAgICAgPC9SbXRJbmY+DQogICAgICA8L0NkdFRyZlR4SW5mPg0KICAgIDwvUG10SW5mPg0KICA8L3BhaW4uMDAxLjAwMS4wMj4NCjwvRG9jdW1lbnQ+")
|
96
|
+
end
|
97
|
+
end
|
98
|
+
response.application_response.transaction_count.should == 1
|
99
|
+
response.response_header.response_code.should == "00"
|
100
|
+
response.response_header.response_text.should == "OK."
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should raise error #23 when ServiceId is not present" do
|
104
|
+
lambda {
|
105
|
+
response = VCR.use_cassette('upload_file_error') do
|
106
|
+
response = client.upload_file do |header, request|
|
107
|
+
header.receiver_id = 123456789
|
108
|
+
request.customer_id = 162355330
|
109
|
+
request.target_id = "11111111A1"
|
110
|
+
# request.service_id = "111111111"
|
111
|
+
request.file_type = "CNFTC000S"
|
112
|
+
request.user_filename = "TEST.TXT"
|
113
|
+
request.content = "TEST"
|
114
|
+
end
|
115
|
+
end
|
116
|
+
}.should raise_error(
|
117
|
+
Nordea::FileTransfer::Error,
|
118
|
+
"Content processing error. Download feedback. (#23)"
|
119
|
+
)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
$:.unshift File.dirname(__FILE__) + '/../lib'
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "nordea/file_transfer"
|
5
|
+
require "vcr"
|
6
|
+
require "simplecov"
|
7
|
+
require "awesome_print"
|
8
|
+
|
9
|
+
SimpleCov.start
|
10
|
+
|
11
|
+
VCR.configure do |c|
|
12
|
+
c.cassette_library_dir = "spec/cassettes"
|
13
|
+
c.hook_into :fakeweb
|
14
|
+
c.ignore_localhost = true
|
15
|
+
c.default_cassette_options = { :record => :new_episodes }
|
16
|
+
end
|
17
|
+
|
18
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
19
|
+
RSpec.configure do |config|
|
20
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
21
|
+
config.run_all_when_everything_filtered = true
|
22
|
+
config.filter_run :focus
|
23
|
+
config.extend VCR::RSpec::Macros
|
24
|
+
end
|
25
|
+
|
26
|
+
Savon.configure do |config|
|
27
|
+
config.pretty_print_xml = true
|
28
|
+
end
|
29
|
+
|
30
|
+
Nordea::FileTransfer.configure do |config|
|
31
|
+
config.language = "EN"
|
32
|
+
config.environment = "PRODUCTION"
|
33
|
+
config.user_agent = "Ruby"
|
34
|
+
config.software_id = "Ruby"
|
35
|
+
end
|
metadata
ADDED
@@ -0,0 +1,294 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nordea-filetransfer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Edgars Beigarts
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-04-03 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
type: :development
|
16
|
+
name: rake
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 0.9.2.2
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ! '>='
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: 0.9.2.2
|
29
|
+
prerelease: false
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
type: :development
|
32
|
+
name: rspec
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ~>
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '2.11'
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ~>
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '2.11'
|
45
|
+
prerelease: false
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
type: :development
|
48
|
+
name: simplecov
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
version_requirements: !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ! '>='
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
prerelease: false
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
type: :development
|
64
|
+
name: vcr
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
version_requirements: !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
prerelease: false
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
type: :development
|
80
|
+
name: fakeweb
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
version_requirements: !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - ! '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
prerelease: false
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
type: :development
|
96
|
+
name: yard
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ! '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
version_requirements: !ruby/object:Gem::Requirement
|
104
|
+
none: false
|
105
|
+
requirements:
|
106
|
+
- - ! '>='
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: '0'
|
109
|
+
prerelease: false
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
type: :development
|
112
|
+
name: redcarpet
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
115
|
+
requirements:
|
116
|
+
- - ! '>='
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
version_requirements: !ruby/object:Gem::Requirement
|
120
|
+
none: false
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
prerelease: false
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
type: :development
|
128
|
+
name: awesome_print
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
131
|
+
requirements:
|
132
|
+
- - ! '>='
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: '0'
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
none: false
|
137
|
+
requirements:
|
138
|
+
- - ! '>='
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
141
|
+
prerelease: false
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
type: :development
|
144
|
+
name: debugger
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
146
|
+
none: false
|
147
|
+
requirements:
|
148
|
+
- - ! '>='
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
151
|
+
version_requirements: !ruby/object:Gem::Requirement
|
152
|
+
none: false
|
153
|
+
requirements:
|
154
|
+
- - ! '>='
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0'
|
157
|
+
prerelease: false
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
type: :runtime
|
160
|
+
name: activesupport
|
161
|
+
requirement: !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
163
|
+
requirements:
|
164
|
+
- - ! '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '3.0'
|
167
|
+
version_requirements: !ruby/object:Gem::Requirement
|
168
|
+
none: false
|
169
|
+
requirements:
|
170
|
+
- - ! '>='
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '3.0'
|
173
|
+
prerelease: false
|
174
|
+
- !ruby/object:Gem::Dependency
|
175
|
+
type: :runtime
|
176
|
+
name: savon
|
177
|
+
requirement: !ruby/object:Gem::Requirement
|
178
|
+
none: false
|
179
|
+
requirements:
|
180
|
+
- - ~>
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: 1.0.0
|
183
|
+
version_requirements: !ruby/object:Gem::Requirement
|
184
|
+
none: false
|
185
|
+
requirements:
|
186
|
+
- - ~>
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: 1.0.0
|
189
|
+
prerelease: false
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
type: :runtime
|
192
|
+
name: virtus
|
193
|
+
requirement: !ruby/object:Gem::Requirement
|
194
|
+
none: false
|
195
|
+
requirements:
|
196
|
+
- - ~>
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: 0.5.1
|
199
|
+
version_requirements: !ruby/object:Gem::Requirement
|
200
|
+
none: false
|
201
|
+
requirements:
|
202
|
+
- - ~>
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: 0.5.1
|
205
|
+
prerelease: false
|
206
|
+
- !ruby/object:Gem::Dependency
|
207
|
+
type: :runtime
|
208
|
+
name: signer
|
209
|
+
requirement: !ruby/object:Gem::Requirement
|
210
|
+
none: false
|
211
|
+
requirements:
|
212
|
+
- - ~>
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: 1.1.1
|
215
|
+
version_requirements: !ruby/object:Gem::Requirement
|
216
|
+
none: false
|
217
|
+
requirements:
|
218
|
+
- - ~>
|
219
|
+
- !ruby/object:Gem::Version
|
220
|
+
version: 1.1.1
|
221
|
+
prerelease: false
|
222
|
+
description: Ruby client for Nordea FileTransfer Web Services
|
223
|
+
email:
|
224
|
+
- edgars.beigarts@makit.lv
|
225
|
+
executables: []
|
226
|
+
extensions: []
|
227
|
+
extra_rdoc_files: []
|
228
|
+
files:
|
229
|
+
- lib/nordea/file_transfer/application_request.rb
|
230
|
+
- lib/nordea/file_transfer/application_response.rb
|
231
|
+
- lib/nordea/file_transfer/attributes.rb
|
232
|
+
- lib/nordea/file_transfer/client.rb
|
233
|
+
- lib/nordea/file_transfer/config.rb
|
234
|
+
- lib/nordea/file_transfer/error.rb
|
235
|
+
- lib/nordea/file_transfer/file_descriptor.rb
|
236
|
+
- lib/nordea/file_transfer/file_type_service.rb
|
237
|
+
- lib/nordea/file_transfer/request.rb
|
238
|
+
- lib/nordea/file_transfer/request_header.rb
|
239
|
+
- lib/nordea/file_transfer/response.rb
|
240
|
+
- lib/nordea/file_transfer/response_header.rb
|
241
|
+
- lib/nordea/file_transfer/user_file_type.rb
|
242
|
+
- lib/nordea/file_transfer/version.rb
|
243
|
+
- lib/nordea/file_transfer.rb
|
244
|
+
- lib/nordea-filetransfer.rb
|
245
|
+
- README.md
|
246
|
+
- LICENSE
|
247
|
+
- spec/cassettes/download_file.yml
|
248
|
+
- spec/cassettes/download_file_error.yml
|
249
|
+
- spec/cassettes/download_file_list.yml
|
250
|
+
- spec/cassettes/get_user_info.yml
|
251
|
+
- spec/cassettes/upload_file_error.yml
|
252
|
+
- spec/certs/WSNDEA1234.pem
|
253
|
+
- spec/nordea/file_transfer/client_spec.rb
|
254
|
+
- spec/spec_helper.rb
|
255
|
+
homepage:
|
256
|
+
licenses: []
|
257
|
+
post_install_message:
|
258
|
+
rdoc_options: []
|
259
|
+
require_paths:
|
260
|
+
- lib
|
261
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
262
|
+
none: false
|
263
|
+
requirements:
|
264
|
+
- - ! '>='
|
265
|
+
- !ruby/object:Gem::Version
|
266
|
+
segments:
|
267
|
+
- 0
|
268
|
+
version: '0'
|
269
|
+
hash: -1379709764222290832
|
270
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
271
|
+
none: false
|
272
|
+
requirements:
|
273
|
+
- - ! '>='
|
274
|
+
- !ruby/object:Gem::Version
|
275
|
+
segments:
|
276
|
+
- 0
|
277
|
+
version: '0'
|
278
|
+
hash: -1379709764222290832
|
279
|
+
requirements: []
|
280
|
+
rubyforge_project:
|
281
|
+
rubygems_version: 1.8.25
|
282
|
+
signing_key:
|
283
|
+
specification_version: 3
|
284
|
+
summary: Ruby client for Nordea FileTransfer Web Services
|
285
|
+
test_files:
|
286
|
+
- spec/cassettes/download_file.yml
|
287
|
+
- spec/cassettes/download_file_error.yml
|
288
|
+
- spec/cassettes/download_file_list.yml
|
289
|
+
- spec/cassettes/get_user_info.yml
|
290
|
+
- spec/cassettes/upload_file_error.yml
|
291
|
+
- spec/certs/WSNDEA1234.pem
|
292
|
+
- spec/nordea/file_transfer/client_spec.rb
|
293
|
+
- spec/spec_helper.rb
|
294
|
+
has_rdoc:
|