sepafm 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +14 -30
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +15 -0
  5. data/Gemfile +1 -1
  6. data/LICENSE +16 -4
  7. data/README.md +180 -319
  8. data/Rakefile +7 -2
  9. data/lib/sepa/application_request.rb +100 -131
  10. data/lib/sepa/application_response.rb +28 -84
  11. data/lib/sepa/attribute_checks.rb +169 -0
  12. data/lib/sepa/banks/danske/danske_response.rb +19 -0
  13. data/lib/sepa/banks/danske/soap_danske.rb +132 -0
  14. data/lib/sepa/banks/nordea/nordea_response.rb +20 -0
  15. data/lib/sepa/banks/nordea/soap_nordea.rb +51 -0
  16. data/lib/sepa/client.rb +72 -60
  17. data/lib/sepa/error_messages.rb +15 -0
  18. data/lib/sepa/response.rb +88 -85
  19. data/lib/sepa/soap_builder.rb +51 -341
  20. data/lib/sepa/utilities.rb +132 -0
  21. data/lib/sepa/version.rb +1 -1
  22. data/lib/sepa/xml_schemas/PKIFactory.xsd +334 -0
  23. data/lib/sepa/xml_schemas/xml_id.xsd +9 -0
  24. data/lib/sepa/xml_templates/application_request/create_certificate.xml +15 -10
  25. data/lib/sepa/xml_templates/application_request/danske_get_bank_certificate.xml +13 -9
  26. data/lib/sepa/xml_templates/application_request/download_file.xml +32 -30
  27. data/lib/sepa/xml_templates/application_request/download_file_list.xml +29 -27
  28. data/lib/sepa/xml_templates/application_request/encrypted_request.xml +22 -0
  29. data/lib/sepa/xml_templates/application_request/get_certificate.xml +9 -8
  30. data/lib/sepa/xml_templates/application_request/get_user_info.xml +26 -24
  31. data/lib/sepa/xml_templates/application_request/upload_file.xml +29 -27
  32. data/lib/sepa/xml_templates/soap/create_certificate.xml +17 -15
  33. data/lib/sepa/xml_templates/soap/danske_get_bank_certificate.xml +15 -13
  34. data/lib/sepa/xml_templates/soap/download_file.xml +19 -15
  35. data/lib/sepa/xml_templates/soap/download_file_list.xml +19 -15
  36. data/lib/sepa/xml_templates/soap/get_certificate.xml +2 -1
  37. data/lib/sepa/xml_templates/soap/get_user_info.xml +19 -15
  38. data/lib/sepa/xml_templates/soap/header.xml +48 -37
  39. data/lib/sepa/xml_templates/soap/upload_file.xml +19 -15
  40. data/lib/sepafm.rb +20 -18
  41. data/{sepa.gemspec → sepafm.gemspec} +10 -9
  42. data/test/sepa/banks/danske/danske_cert_response_test.rb +52 -0
  43. data/test/sepa/banks/danske/danske_cert_soap_builder_test.rb +100 -0
  44. data/test/sepa/banks/danske/danske_generic_soap_builder_test.rb +278 -0
  45. data/test/sepa/banks/danske/danske_get_bank_cert_test.rb +111 -0
  46. data/{lib/sepa/danske_testing/keys/danske_encryption.crt → test/sepa/banks/danske/keys/bank_encryption_cert.pem} +0 -0
  47. data/test/sepa/{danske_test_keys/danskeroot.pem → banks/danske/keys/bank_root_cert.pem} +1 -1
  48. data/test/sepa/banks/danske/keys/bank_signing_cert.pem +24 -0
  49. data/test/sepa/banks/danske/keys/danske_encryption.crt +24 -0
  50. data/test/sepa/banks/danske/keys/enc_private_key.pem +27 -0
  51. data/test/sepa/{danske_test_keys → banks/danske/keys}/encryption_pkcs.csr +0 -0
  52. data/test/sepa/banks/danske/keys/own_enc_cert.pem +21 -0
  53. data/test/sepa/banks/danske/keys/own_signing_cert.pem +22 -0
  54. data/test/sepa/{danske_test_keys → banks/danske/keys}/signing_key.pem +0 -0
  55. data/test/sepa/{danske_test_keys → banks/danske/keys}/signing_pkcs.csr +0 -0
  56. data/test/sepa/banks/danske/keys/signing_private_key.pem +27 -0
  57. data/test/sepa/banks/danske/responses/create_cert.xml +38 -0
  58. data/test/sepa/banks/danske/responses/get_bank_cert.xml +37 -0
  59. data/{lib/sepa/nordea_testing → test/sepa/banks/nordea}/keys/nordea.crt +0 -4
  60. data/test/sepa/{nordea_test_keys → banks/nordea/keys}/nordea.key +0 -3
  61. data/test/sepa/{nordea_test_keys → banks/nordea/keys}/root_cert.cer +0 -0
  62. data/test/sepa/{nordea_test_keys → banks/nordea/keys}/testcert.csr +0 -0
  63. data/test/sepa/banks/nordea/nordea_application_request_test.rb +252 -0
  64. data/test/sepa/{application_response_test.rb → banks/nordea/nordea_application_response_test.rb} +40 -46
  65. data/test/sepa/banks/nordea/nordea_cert_application_request_test.rb +72 -0
  66. data/test/sepa/banks/nordea/nordea_cert_request_soap_builder_test.rb +65 -0
  67. data/test/sepa/banks/nordea/nordea_generic_soap_builder_test.rb +280 -0
  68. data/test/sepa/banks/nordea/nordea_response_test.rb +116 -0
  69. data/test/sepa/banks/nordea/responses/df_ktl.xml +45 -0
  70. data/test/sepa/{test_files/test_responses/df.xml → banks/nordea/responses/df_tito.xml} +1 -1
  71. data/test/sepa/{test_files/test_responses → banks/nordea/responses}/dfl.xml +0 -0
  72. data/test/sepa/banks/nordea/responses/gbc.xml +15 -0
  73. data/test/sepa/banks/nordea/responses/gc.xml +49 -0
  74. data/test/sepa/{test_files/test_responses → banks/nordea/responses}/gui.xml +0 -0
  75. data/test/sepa/{test_files/test_responses → banks/nordea/responses}/uf.xml +0 -0
  76. data/test/sepa/client_test.rb +156 -302
  77. data/test/sepa/fixtures.rb +214 -0
  78. data/test/sepa/sepa_test.rb +3 -13
  79. data/test/sepa/test_files/{invalid.wsdl → invalid_wsdl.wsdl} +0 -0
  80. data/test/test_helper.rb +29 -3
  81. metadata +140 -116
  82. data/lib/danske_get_bank_certificate_test.rb +0 -15
  83. data/lib/sepa/custom_exceptions.rb +0 -2
  84. data/lib/sepa/filedescriptor.rb +0 -7
  85. data/lib/sepa/filetypeservice.rb +0 -6
  86. data/lib/sepa/nordea_testing/keys/CSR.csr +0 -0
  87. data/lib/sepa/nordea_testing/keys/nordea.key +0 -19
  88. data/lib/sepa/nordea_testing/response/content_053.xml +0 -998
  89. data/lib/sepa/nordea_testing/response/content_054.xml +0 -1
  90. data/lib/sepa/nordea_testing/response/download_file_response.xml +0 -14
  91. data/lib/sepa/nordea_testing/response/download_filelist_response.xml +0 -14
  92. data/lib/sepa/nordea_testing/response/get_user_info_response.xml +0 -14
  93. data/lib/sepa/nordea_testing/response/upload_file_response.xml +0 -14
  94. data/lib/sepa/payload.rb +0 -109
  95. data/lib/sepa/payment.rb +0 -97
  96. data/lib/sepa/sender_verifier.rb +0 -15
  97. data/lib/sepa/signature.rb +0 -7
  98. data/lib/sepa/soap_danske.rb +0 -47
  99. data/lib/sepa/soap_nordea.rb +0 -68
  100. data/lib/sepa/transaction.rb +0 -178
  101. data/lib/sepa/userfiletype.rb +0 -16
  102. data/lib/sepa/xml_parser.rb +0 -291
  103. data/lib/sepa_client_testing_mika.rb +0 -32
  104. data/lib/sepa_client_testing_tiere.rb +0 -257
  105. data/test/sepa/application_request_test.rb +0 -423
  106. data/test/sepa/cert_application_request_test.rb +0 -99
  107. data/test/sepa/nordea_cert_request_soap_builder_test.rb +0 -112
  108. data/test/sepa/nordea_generic_soap_builder_test.rb +0 -427
  109. data/test/sepa/nordea_test_keys/nordea.crt +0 -27
  110. data/test/sepa/payload_test.rb +0 -297
  111. data/test/sepa/payment_test.rb +0 -198
  112. data/test/sepa/response_test.rb +0 -269
  113. data/test/sepa/transaction_test.rb +0 -362
  114. data/test/sepa/user_file_type_test.rb +0 -21
  115. data/test/sepa/xml_parser_test.rb +0 -73
@@ -1,29 +1,31 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
1
2
  <ApplicationRequest xmlns="http://bxd.fi/xmldata/">
2
- <CustomerId></CustomerId>
3
- <Command></Command>
4
- <Timestamp></Timestamp>
5
- <Environment></Environment>
6
- <TargetId></TargetId>
7
- <SoftwareId></SoftwareId>
8
- <FileType></FileType>
9
- <Content></Content>
10
- <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
11
- <dsig:SignedInfo>
12
- <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
13
- <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
14
- <dsig:Reference URI="">
15
- <dsig:Transforms>
16
- <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
17
- </dsig:Transforms>
18
- <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
19
- <dsig:DigestValue></dsig:DigestValue>
20
- </dsig:Reference>
21
- </dsig:SignedInfo>
22
- <dsig:SignatureValue></dsig:SignatureValue>
23
- <dsig:KeyInfo>
24
- <dsig:X509Data>
25
- <dsig:X509Certificate></dsig:X509Certificate>
26
- </dsig:X509Data>
27
- </dsig:KeyInfo>
28
- </dsig:Signature>
3
+ <CustomerId></CustomerId>
4
+ <Command></Command>
5
+ <Timestamp></Timestamp>
6
+ <Environment></Environment>
7
+ <TargetId></TargetId>
8
+ <SoftwareId></SoftwareId>
9
+ <FileType></FileType>
10
+ <Content></Content>
11
+ <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
12
+ <dsig:SignedInfo>
13
+ <dsig:CanonicalizationMethod
14
+ Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
15
+ <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
16
+ <dsig:Reference URI="">
17
+ <dsig:Transforms>
18
+ <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
19
+ </dsig:Transforms>
20
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
21
+ <dsig:DigestValue></dsig:DigestValue>
22
+ </dsig:Reference>
23
+ </dsig:SignedInfo>
24
+ <dsig:SignatureValue></dsig:SignatureValue>
25
+ <dsig:KeyInfo>
26
+ <dsig:X509Data>
27
+ <dsig:X509Certificate></dsig:X509Certificate>
28
+ </dsig:X509Data>
29
+ </dsig:KeyInfo>
30
+ </dsig:Signature>
29
31
  </ApplicationRequest>
@@ -1,15 +1,17 @@
1
- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pkif="http://danskebank.dk/PKI/PKIFactoryService">
2
- <soapenv:Header/>
3
- <soapenv:Body>
4
- <pkif:CreateCertificateIn>
5
- <pkif:RequestHeader>
6
- <pkif:SenderId></pkif:SenderId>
7
- <pkif:CustomerId></pkif:CustomerId>
8
- <pkif:RequestId></pkif:RequestId>
9
- <pkif:Timestamp></pkif:Timestamp>
10
- <pkif:InterfaceVersion></pkif:InterfaceVersion>
11
- <pkif:Environment></pkif:Environment>
12
- </pkif:RequestHeader>
13
- </pkif:CreateCertificateIn>
14
- </soapenv:Body>
15
- </soapenv:Envelope>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:pkif="http://danskebank.dk/PKI/PKIFactoryService">
4
+ <soapenv:Header/>
5
+ <soapenv:Body>
6
+ <pkif:CreateCertificateIn>
7
+ <pkif:RequestHeader>
8
+ <pkif:SenderId></pkif:SenderId>
9
+ <pkif:CustomerId></pkif:CustomerId>
10
+ <pkif:RequestId></pkif:RequestId>
11
+ <pkif:Timestamp></pkif:Timestamp>
12
+ <pkif:InterfaceVersion></pkif:InterfaceVersion>
13
+ <pkif:Environment></pkif:Environment>
14
+ </pkif:RequestHeader>
15
+ </pkif:CreateCertificateIn>
16
+ </soapenv:Body>
17
+ </soapenv:Envelope>
@@ -1,14 +1,16 @@
1
- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pkif="http://danskebank.dk/PKI/PKIFactoryService" xmlns:elem="http://danskebank.dk/PKI/PKIFactoryService/elements">
2
- <soapenv:Header/>
3
- <soapenv:Body>
4
- <pkif:GetBankCertificateIn>
5
- <pkif:RequestHeader>
6
- <pkif:SenderId></pkif:SenderId>
7
- <pkif:CustomerId></pkif:CustomerId>
8
- <pkif:RequestId></pkif:RequestId>
9
- <pkif:Timestamp></pkif:Timestamp>
10
- <pkif:InterfaceVersion></pkif:InterfaceVersion>
11
- </pkif:RequestHeader>
12
- </pkif:GetBankCertificateIn>
13
- </soapenv:Body>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:pkif="http://danskebank.dk/PKI/PKIFactoryService">
4
+ <soapenv:Header/>
5
+ <soapenv:Body>
6
+ <pkif:GetBankCertificateIn xmlns:pkif="http://danskebank.dk/PKI/PKIFactoryService">
7
+ <pkif:RequestHeader xmlns:pkif="http://danskebank.dk/PKI/PKIFactoryService">
8
+ <pkif:SenderId></pkif:SenderId>
9
+ <pkif:CustomerId></pkif:CustomerId>
10
+ <pkif:RequestId></pkif:RequestId>
11
+ <pkif:Timestamp></pkif:Timestamp>
12
+ <pkif:InterfaceVersion></pkif:InterfaceVersion>
13
+ </pkif:RequestHeader>
14
+ </pkif:GetBankCertificateIn>
15
+ </soapenv:Body>
14
16
  </soapenv:Envelope>
@@ -1,16 +1,20 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:cor="http://bxd.fi/CorporateFileService" xmlns:bxd="http://model.bxd.fi">
3
- <env:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="sdf6sa7d86f87s6df786sd87f6s8fsda">
4
- <cor:downloadFilein xmlns:cor="http://bxd.fi/CorporateFileService">
5
- <bxd:RequestHeader xmlns:bxd="http://model.bxd.fi">
6
- <bxd:SenderId></bxd:SenderId>
7
- <bxd:RequestId></bxd:RequestId>
8
- <bxd:Timestamp></bxd:Timestamp>
9
- <bxd:Language></bxd:Language>
10
- <bxd:UserAgent></bxd:UserAgent>
11
- <bxd:ReceiverId></bxd:ReceiverId>
12
- </bxd:RequestHeader>
13
- <bxd:ApplicationRequest xmlns:bxd="http://model.bxd.fi"></bxd:ApplicationRequest>
14
- </cor:downloadFilein>
15
- </env:Body>
16
- </env:Envelope>
2
+ <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
4
+ xmlns:cor="http://bxd.fi/CorporateFileService" xmlns:bxd="http://model.bxd.fi">
5
+ <env:Body
6
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
7
+ wsu:Id="sdf6sa7d86f87s6df786sd87f6s8fsda">
8
+ <cor:downloadFilein xmlns:cor="http://bxd.fi/CorporateFileService">
9
+ <bxd:RequestHeader xmlns:bxd="http://model.bxd.fi">
10
+ <bxd:SenderId></bxd:SenderId>
11
+ <bxd:RequestId></bxd:RequestId>
12
+ <bxd:Timestamp></bxd:Timestamp>
13
+ <bxd:Language></bxd:Language>
14
+ <bxd:UserAgent></bxd:UserAgent>
15
+ <bxd:ReceiverId></bxd:ReceiverId>
16
+ </bxd:RequestHeader>
17
+ <bxd:ApplicationRequest xmlns:bxd="http://model.bxd.fi"></bxd:ApplicationRequest>
18
+ </cor:downloadFilein>
19
+ </env:Body>
20
+ </env:Envelope>
@@ -1,16 +1,20 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:cor="http://bxd.fi/CorporateFileService" xmlns:bxd="http://model.bxd.fi">
3
- <env:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="sdf6sa7d86f87s6df786sd87f6s8fsda">
4
- <cor:downloadFileListin xmlns:cor="http://bxd.fi/CorporateFileService">
5
- <bxd:RequestHeader xmlns:bxd="http://model.bxd.fi">
6
- <bxd:SenderId></bxd:SenderId>
7
- <bxd:RequestId></bxd:RequestId>
8
- <bxd:Timestamp></bxd:Timestamp>
9
- <bxd:Language></bxd:Language>
10
- <bxd:UserAgent></bxd:UserAgent>
11
- <bxd:ReceiverId></bxd:ReceiverId>
12
- </bxd:RequestHeader>
13
- <bxd:ApplicationRequest xmlns:bxd="http://model.bxd.fi"></bxd:ApplicationRequest>
14
- </cor:downloadFileListin>
15
- </env:Body>
16
- </env:Envelope>
2
+ <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
4
+ xmlns:cor="http://bxd.fi/CorporateFileService" xmlns:bxd="http://model.bxd.fi">
5
+ <env:Body
6
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
7
+ wsu:Id="sdf6sa7d86f87s6df786sd87f6s8fsda">
8
+ <cor:downloadFileListin xmlns:cor="http://bxd.fi/CorporateFileService">
9
+ <bxd:RequestHeader xmlns:bxd="http://model.bxd.fi">
10
+ <bxd:SenderId></bxd:SenderId>
11
+ <bxd:RequestId></bxd:RequestId>
12
+ <bxd:Timestamp></bxd:Timestamp>
13
+ <bxd:Language></bxd:Language>
14
+ <bxd:UserAgent></bxd:UserAgent>
15
+ <bxd:ReceiverId></bxd:ReceiverId>
16
+ </bxd:RequestHeader>
17
+ <bxd:ApplicationRequest xmlns:bxd="http://model.bxd.fi"></bxd:ApplicationRequest>
18
+ </cor:downloadFileListin>
19
+ </env:Body>
20
+ </env:Envelope>
@@ -1,3 +1,4 @@
1
+ <?xml version="1.0"?>
1
2
  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cer="http://bxd.fi/CertificateService">
2
3
  <soapenv:Header/>
3
4
  <soapenv:Body>
@@ -10,4 +11,4 @@
10
11
  <cer:ApplicationRequest></cer:ApplicationRequest>
11
12
  </cer:getCertificatein>
12
13
  </soapenv:Body>
13
- </soapenv:Envelope>
14
+ </soapenv:Envelope>
@@ -1,16 +1,20 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:cor="http://bxd.fi/CorporateFileService" xmlns:bxd="http://model.bxd.fi">
3
- <env:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="sdf6sa7d86f87s6df786sd87f6s8fsda">
4
- <cor:getUserInfoin>
5
- <bxd:RequestHeader>
6
- <bxd:SenderId></bxd:SenderId>
7
- <bxd:RequestId></bxd:RequestId>
8
- <bxd:Timestamp></bxd:Timestamp>
9
- <bxd:Language></bxd:Language>
10
- <bxd:UserAgent></bxd:UserAgent>
11
- <bxd:ReceiverId></bxd:ReceiverId>
12
- </bxd:RequestHeader>
13
- <bxd:ApplicationRequest></bxd:ApplicationRequest>
14
- </cor:getUserInfoin>
15
- </env:Body>
16
- </env:Envelope>
2
+ <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
4
+ xmlns:cor="http://bxd.fi/CorporateFileService" xmlns:bxd="http://model.bxd.fi">
5
+ <env:Body
6
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
7
+ wsu:Id="sdf6sa7d86f87s6df786sd87f6s8fsda">
8
+ <cor:getUserInfoin>
9
+ <bxd:RequestHeader>
10
+ <bxd:SenderId></bxd:SenderId>
11
+ <bxd:RequestId></bxd:RequestId>
12
+ <bxd:Timestamp></bxd:Timestamp>
13
+ <bxd:Language></bxd:Language>
14
+ <bxd:UserAgent></bxd:UserAgent>
15
+ <bxd:ReceiverId></bxd:ReceiverId>
16
+ </bxd:RequestHeader>
17
+ <bxd:ApplicationRequest></bxd:ApplicationRequest>
18
+ </cor:getUserInfoin>
19
+ </env:Body>
20
+ </env:Envelope>
@@ -1,37 +1,48 @@
1
- <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
2
- <env:Header>
3
- <wsse:Security xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" env:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
4
- <wsse:BinarySecurityToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="sdgdsg76sdg78sdg78d6gs"></wsse:BinarySecurityToken>
5
- <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
6
- <dsig:SignedInfo>
7
- <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
8
- <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
9
- <dsig:Reference URI="#dsfg8sdg87dsf678g6dsg6ds7fg">
10
- <dsig:Transforms>
11
- <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
12
- </dsig:Transforms>
13
- <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
14
- <dsig:DigestValue></dsig:DigestValue>
15
- </dsig:Reference>
16
- <dsig:Reference URI="#sdf6sa7d86f87s6df786sd87f6s8fsda">
17
- <dsig:Transforms>
18
- <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
19
- </dsig:Transforms>
20
- <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
21
- <dsig:DigestValue></dsig:DigestValue>
22
- </dsig:Reference>
23
- </dsig:SignedInfo>
24
- <dsig:SignatureValue></dsig:SignatureValue>
25
- <dsig:KeyInfo>
26
- <wsse:SecurityTokenReference>
27
- <wsse:Reference URI="#sdgdsg76sdg78sdg78d6gs"/>
28
- </wsse:SecurityTokenReference>
29
- </dsig:KeyInfo>
30
- </dsig:Signature>
31
- <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="dsfg8sdg87dsf678g6dsg6ds7fg">
32
- <wsu:Created></wsu:Created>
33
- <wsu:Expires></wsu:Expires>
34
- </wsu:Timestamp>
35
- </wsse:Security>
36
- </env:Header>
37
- </env:Envelope>
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
4
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
5
+ xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
6
+ <env:Header>
7
+ <wsse:Security xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" env:mustUnderstand="1"
8
+ xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
9
+ <wsse:BinarySecurityToken
10
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
11
+ EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
12
+ ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"
13
+ wsu:Id="sdgdsg76sdg78sdg78d6gs"></wsse:BinarySecurityToken>
14
+ <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
15
+ <dsig:SignedInfo>
16
+ <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
17
+ <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
18
+ <dsig:Reference URI="#dsfg8sdg87dsf678g6dsg6ds7fg">
19
+ <dsig:Transforms>
20
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
21
+ </dsig:Transforms>
22
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
23
+ <dsig:DigestValue></dsig:DigestValue>
24
+ </dsig:Reference>
25
+ <dsig:Reference URI="#sdf6sa7d86f87s6df786sd87f6s8fsda">
26
+ <dsig:Transforms>
27
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
28
+ </dsig:Transforms>
29
+ <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
30
+ <dsig:DigestValue></dsig:DigestValue>
31
+ </dsig:Reference>
32
+ </dsig:SignedInfo>
33
+ <dsig:SignatureValue></dsig:SignatureValue>
34
+ <dsig:KeyInfo>
35
+ <wsse:SecurityTokenReference>
36
+ <wsse:Reference URI="#sdgdsg76sdg78sdg78d6gs"/>
37
+ </wsse:SecurityTokenReference>
38
+ </dsig:KeyInfo>
39
+ </dsig:Signature>
40
+ <wsu:Timestamp
41
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
42
+ wsu:Id="dsfg8sdg87dsf678g6dsg6ds7fg">
43
+ <wsu:Created></wsu:Created>
44
+ <wsu:Expires></wsu:Expires>
45
+ </wsu:Timestamp>
46
+ </wsse:Security>
47
+ </env:Header>
48
+ </env:Envelope>
@@ -1,16 +1,20 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:cor="http://bxd.fi/CorporateFileService" xmlns:bxd="http://model.bxd.fi">
3
- <env:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="sdf6sa7d86f87s6df786sd87f6s8fsda">
4
- <cor:uploadFilein xmlns:cor="http://bxd.fi/CorporateFileService">
5
- <bxd:RequestHeader xmlns:bxd="http://model.bxd.fi">
6
- <bxd:SenderId></bxd:SenderId>
7
- <bxd:RequestId></bxd:RequestId>
8
- <bxd:Timestamp></bxd:Timestamp>
9
- <bxd:Language></bxd:Language>
10
- <bxd:UserAgent></bxd:UserAgent>
11
- <bxd:ReceiverId></bxd:ReceiverId>
12
- </bxd:RequestHeader>
13
- <bxd:ApplicationRequest xmlns:bxd="http://model.bxd.fi"></bxd:ApplicationRequest>
14
- </cor:uploadFilein>
15
- </env:Body>
16
- </env:Envelope>
2
+ <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
3
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
4
+ xmlns:cor="http://bxd.fi/CorporateFileService" xmlns:bxd="http://model.bxd.fi">
5
+ <env:Body
6
+ xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
7
+ wsu:Id="sdf6sa7d86f87s6df786sd87f6s8fsda">
8
+ <cor:uploadFilein xmlns:cor="http://bxd.fi/CorporateFileService">
9
+ <bxd:RequestHeader xmlns:bxd="http://model.bxd.fi">
10
+ <bxd:SenderId></bxd:SenderId>
11
+ <bxd:RequestId></bxd:RequestId>
12
+ <bxd:Timestamp></bxd:Timestamp>
13
+ <bxd:Language></bxd:Language>
14
+ <bxd:UserAgent></bxd:UserAgent>
15
+ <bxd:ReceiverId></bxd:ReceiverId>
16
+ </bxd:RequestHeader>
17
+ <bxd:ApplicationRequest xmlns:bxd="http://model.bxd.fi"></bxd:ApplicationRequest>
18
+ </cor:uploadFilein>
19
+ </env:Body>
20
+ </env:Envelope>
data/lib/sepafm.rb CHANGED
@@ -1,25 +1,27 @@
1
- require "base64"
2
- require "nokogiri"
3
- require "savon"
4
- require "sepa/xml_parser"
5
- require "sepa/client"
6
- require "sepa/version"
1
+ require 'active_model'
7
2
  require 'base64'
8
3
  require 'nokogiri'
9
4
  require 'openssl'
5
+ require 'savon'
10
6
  require 'securerandom'
11
- require 'sepa/application_request'
12
- require 'sepa/filedescriptor'
13
- require 'sepa/filetypeservice'
14
- require 'sepa/signature'
15
- require 'sepa/userfiletype'
16
7
  require 'time'
17
- require 'sepa/response'
8
+ require 'sepa/utilities'
9
+ require 'sepa/error_messages'
10
+ require 'sepa/attribute_checks'
11
+ require 'sepa/application_request'
18
12
  require 'sepa/application_response'
19
- require 'sepa/payload'
13
+ require 'sepa/client'
14
+ require 'sepa/response'
15
+ require 'sepa/banks/nordea/nordea_response'
16
+ require 'sepa/banks/danske/danske_response'
20
17
  require 'sepa/soap_builder'
21
- require 'sepa/soap_danske'
22
- require 'sepa/soap_nordea'
23
- require 'sepa/transaction'
24
- require 'sepa/payment'
25
- require 'sepa/custom_exceptions'
18
+ require 'sepa/banks/danske/soap_danske'
19
+ require 'sepa/banks/nordea/soap_nordea'
20
+ require 'sepa/version'
21
+
22
+ ROOT_PATH = File.expand_path('../../', __FILE__)
23
+ WSDL_PATH = "#{ROOT_PATH}/lib/sepa/wsdl"
24
+ SCHEMA_PATH = "#{ROOT_PATH}/lib/sepa/xml_schemas"
25
+ SCHEMA_FILE = "#{ROOT_PATH}/lib/sepa/xml_schemas/wsdl.xml"
26
+ AR_TEMPLATE_PATH = "#{ROOT_PATH}/lib/sepa/xml_templates/application_request"
27
+ SOAP_TEMPLATE_PATH = "#{ROOT_PATH}/lib/sepa/xml_templates/soap"
@@ -9,21 +9,22 @@ Gem::Specification.new do |spec|
9
9
  spec.description = 'SEPA Financial Messages using Web Services'
10
10
  spec.homepage = 'https://github.com/devlab-oy/sepa'
11
11
  spec.license = 'MIT'
12
- spec.authors = ['Joni Kanerva', 'Mika Myllynen', 'Tommi Järvinen']
12
+ spec.authors = ['Joni Kanerva', 'Mika Myllynen', 'Tommi Jarvinen']
13
13
  spec.email = ['joni@devlab.fi']
14
14
  spec.files = `git ls-files`.split($/)
15
15
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
16
16
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
17
  spec.require_paths = ['lib']
18
18
 
19
- spec.required_ruby_version = '~> 2.0.0'
19
+ spec.required_ruby_version = '>= 2.0.0'
20
20
 
21
- spec.add_dependency 'savon', '~> 2.2.0'
22
- spec.add_dependency 'nokogiri', '~> 1.6.0'
21
+ spec.add_dependency 'savon', '~> 2.5'
22
+ spec.add_dependency 'nokogiri', '~> 1.6'
23
+ spec.add_dependency 'activemodel', '~> 4.1'
24
+ spec.add_dependency 'minitest', '~> 5.3'
23
25
 
24
- spec.add_development_dependency 'bundler', '~> 1.3.5'
25
- spec.add_development_dependency 'rake', '~> 10.1.0'
26
- spec.add_development_dependency 'simplecov', '~> 0.7.1'
27
- spec.add_development_dependency 'minitest', '~> 5.0.3'
28
- spec.add_development_dependency 'json', '~> 1.8.0'
26
+ spec.add_development_dependency 'bundler', '~> 1.6'
27
+ spec.add_development_dependency 'rake', '~> 10.3'
28
+ spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.3'
29
+ spec.add_development_dependency 'dotenv', '~> 0.11'
29
30
  end
@@ -0,0 +1,52 @@
1
+ require 'test_helper'
2
+
3
+ class DanskeCertResponseTest < ActiveSupport::TestCase
4
+
5
+ get_bank_cert_soap = Nokogiri::XML(File.open "#{DANSKE_TEST_RESPONSE_PATH}get_bank_cert.xml")
6
+ get_bank_cert_response = Sepa::DanskeResponse.new(get_bank_cert_soap, command: :get_bank_certificate)
7
+
8
+ create_certificate_soap = Nokogiri::XML(File.open "#{DANSKE_TEST_RESPONSE_PATH}create_cert.xml")
9
+ create_certificate_response = Sepa::DanskeResponse.new(create_certificate_soap, command: :create_certificate)
10
+
11
+ ##
12
+ # Tests for get bank certificate
13
+
14
+ test 'should have correct bank signing cert with get_bank_certificate command' do
15
+ bank_signing_cert = get_bank_cert_response.bank_signing_cert
16
+ refute_nil bank_signing_cert
17
+ assert_equal bank_signing_cert.to_s, DANSKE_BANK_SIGNING_CERT
18
+ end
19
+
20
+ test 'should have corrent bank encryption cert with get bank certificate command' do
21
+ bank_encryption_cert = get_bank_cert_response.bank_encryption_cert
22
+ refute_nil bank_encryption_cert
23
+ assert_equal bank_encryption_cert.to_s, DANSKE_BANK_ENCRYPTION_CERT
24
+ end
25
+
26
+ test 'should have correct bank root cert with get bank certificate command' do
27
+ bank_root_cert = get_bank_cert_response.bank_root_cert
28
+ refute_nil bank_root_cert
29
+ assert_equal bank_root_cert.to_s, DANSKE_BANK_ROOT_CERT
30
+ end
31
+
32
+ ##
33
+ # Tests for create certificate
34
+
35
+ test 'should have own encryption certificate with create certificate command' do
36
+ own_encryption_cert = create_certificate_response.own_encryption_cert
37
+ refute_nil own_encryption_cert
38
+ assert own_encryption_cert.respond_to? :sign
39
+ end
40
+
41
+ test 'should have on signing certificate with create certificate command' do
42
+ own_signing_cert = create_certificate_response.own_signing_cert
43
+ refute_nil own_signing_cert
44
+ assert own_signing_cert.respond_to? :sign
45
+ end
46
+
47
+ test 'should have correct CA certificate with create certificate command' do
48
+ ca_certificate = create_certificate_response.ca_certificate
49
+ refute_nil ca_certificate
50
+ assert ca_certificate.respond_to? :sign
51
+ end
52
+ end
@@ -0,0 +1,100 @@
1
+ require 'test_helper'
2
+
3
+ class DanskeCertSoapBuilderTest < ActiveSupport::TestCase
4
+ def setup
5
+ @create_cert_params = danske_create_cert_params
6
+
7
+ @cert_request = Sepa::SoapBuilder.new(@create_cert_params)
8
+ @enc_private_key = OpenSSL::PKey::RSA.new File.read("#{DANSKE_TEST_KEYS_PATH}/enc_private_key.pem")
9
+ @doc = Nokogiri::XML(@cert_request.to_xml)
10
+
11
+ # Namespaces
12
+ @pkif = 'http://danskebank.dk/PKI/PKIFactoryService'
13
+ @dsig = 'http://www.w3.org/2000/09/xmldsig#'
14
+ @xenc = 'http://www.w3.org/2001/04/xmlenc#'
15
+ end
16
+
17
+ def test_should_raise_error_if_command_missing
18
+ @create_cert_params.delete(:command)
19
+
20
+ assert_raises(ArgumentError) do
21
+ Sepa::SoapBuilder.new(@create_cert_params)
22
+ end
23
+ end
24
+
25
+ def test_sender_id_is_properly_set
26
+ sender_id = @doc.at("SenderId", "xmlns" => @pkif).content
27
+ assert_equal sender_id, @create_cert_params[:customer_id]
28
+ end
29
+
30
+ def test_customer_id_is_properly_set
31
+ customer_id = @doc.at("CustomerId", "xmlns" => @pkif).content
32
+ assert_equal customer_id, @create_cert_params[:customer_id]
33
+ end
34
+
35
+ def test_request_id_is_properly_set
36
+ request_id = @doc.at("RequestId", 'xmlns' => @pkif).content
37
+
38
+ assert request_id =~ /^[0-9A-F]+$/i
39
+ assert_equal request_id.length, 10
40
+ end
41
+
42
+ def test_timestamp_is_set_correctly
43
+ timestamp_node = @doc.at(
44
+ "Timestamp", 'xmlns' => @pkif
45
+ )
46
+ timestamp = Time.strptime(timestamp_node.content, '%Y-%m-%dT%H:%M:%S%z')
47
+
48
+ assert timestamp <= Time.now && timestamp > (Time.now - 60)
49
+ end
50
+
51
+ def test_interface_version_is_properly_set
52
+ interface_version = @doc.at("InterfaceVersion", 'xmlns' => @pkif).content
53
+ assert_equal interface_version, '1'
54
+ end
55
+
56
+ def test_certificate_is_added_properly
57
+ embedded_cert = @doc.at("X509Certificate", 'xmlns' => @dsig).content.gsub(/\s+/, "")
58
+
59
+ actual_cert = @create_cert_params[:enc_cert]
60
+ actual_cert = actual_cert.split('-----BEGIN CERTIFICATE-----')[1]
61
+ actual_cert = actual_cert.split('-----END CERTIFICATE-----')[0]
62
+ actual_cert.gsub!(/\s+/, "")
63
+
64
+ assert_equal embedded_cert, actual_cert
65
+ end
66
+
67
+ def test_encrypted_key_is_added_properly_and_can_be_decrypted
68
+ enc_key = @doc.css("CipherValue", 'xmlns' => @xenc)[0].content
69
+ enc_key = Base64.decode64(enc_key)
70
+ assert @enc_private_key.private_decrypt(enc_key)
71
+ end
72
+
73
+ def test_encypted_data_is_added_properly_and_can_be_decrypted
74
+ enc_key = @doc.css("CipherValue", 'xmlns' => @xenc)[0].content
75
+ enc_key = Base64.decode64(enc_key)
76
+ key = @enc_private_key.private_decrypt(enc_key)
77
+
78
+ encypted_data = @doc.css("CipherValue", 'xmlns' => @xenc)[1].content
79
+ encypted_data = Base64.decode64(encypted_data)
80
+ iv = encypted_data[0, 8]
81
+ encypted_data = encypted_data[8, encypted_data.length]
82
+
83
+ decipher = OpenSSL::Cipher.new('DES-EDE3-CBC')
84
+ decipher.decrypt
85
+ decipher.key = key
86
+ decipher.iv = iv
87
+
88
+ decrypted_data = decipher.update(encypted_data) + decipher.final
89
+
90
+ assert_respond_to(Nokogiri::XML(decrypted_data), :css)
91
+ end
92
+
93
+ def test_should_validate_against_schema
94
+ Dir.chdir(SCHEMA_PATH) do
95
+ xsd = Nokogiri::XML::Schema(IO.read('soap.xsd'))
96
+ assert xsd.valid?(@doc)
97
+ end
98
+ end
99
+
100
+ end