ipizza 0.7.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -1
  3. data/CHANGELOG.md +9 -0
  4. data/Gemfile +1 -1
  5. data/Gemfile.lock +28 -24
  6. data/Guardfile +2 -2
  7. data/README.markdown +15 -7
  8. data/Rakefile +1 -1
  9. data/ipizza.gemspec +12 -11
  10. data/lib/ipizza/authentication.rb +15 -0
  11. data/lib/ipizza/authentication_request.rb +1 -1
  12. data/lib/ipizza/authentication_response.rb +22 -9
  13. data/lib/ipizza/config.rb +13 -13
  14. data/lib/ipizza/payment.rb +4 -4
  15. data/lib/ipizza/payment_request.rb +1 -1
  16. data/lib/ipizza/payment_response.rb +15 -7
  17. data/lib/ipizza/provider/base.rb +90 -0
  18. data/lib/ipizza/provider/krediidipank.rb +1 -47
  19. data/lib/ipizza/provider/lhv.rb +4 -0
  20. data/lib/ipizza/provider/luminor.rb +4 -0
  21. data/lib/ipizza/provider/nordea/authentication_request.rb +2 -2
  22. data/lib/ipizza/provider/nordea/authentication_response.rb +7 -3
  23. data/lib/ipizza/provider/nordea/payment_request.rb +2 -2
  24. data/lib/ipizza/provider/nordea/payment_response.rb +4 -4
  25. data/lib/ipizza/provider/nordea.rb +1 -74
  26. data/lib/ipizza/provider/sampo.rb +1 -46
  27. data/lib/ipizza/provider/seb.rb +1 -78
  28. data/lib/ipizza/provider/swedbank.rb +1 -66
  29. data/lib/ipizza/provider.rb +9 -15
  30. data/lib/ipizza/request.rb +9 -2
  31. data/lib/ipizza/response.rb +7 -9
  32. data/lib/ipizza/util.rb +18 -11
  33. data/lib/ipizza/version.rb +2 -2
  34. data/lib/ipizza.rb +4 -0
  35. data/spec/certificates/pangalink_danske_bank_cert.pem +22 -0
  36. data/spec/certificates/pangalink_danske_bank_key.pem +27 -0
  37. data/spec/certificates/pangalink_danske_user_key.pem +27 -0
  38. data/spec/certificates/pangalink_krediidipank_bank_cert.pem +22 -0
  39. data/spec/certificates/pangalink_krediidipank_bank_key.pem +27 -0
  40. data/spec/certificates/pangalink_krediidipank_user_key.pem +27 -0
  41. data/spec/certificates/pangalink_lhv_bank_cert.pem +22 -0
  42. data/spec/certificates/pangalink_lhv_bank_key.pem +27 -0
  43. data/spec/certificates/pangalink_lhv_user_key.pem +27 -0
  44. data/spec/certificates/pangalink_luminor_bank.cert.pem +18 -0
  45. data/spec/certificates/pangalink_luminor_bank_cert.pem +17 -0
  46. data/spec/certificates/pangalink_seb_bank_cert.pem +16 -0
  47. data/spec/certificates/pangalink_seb_bank_key.pem +15 -0
  48. data/spec/certificates/pangalink_seb_user_key.pem +15 -0
  49. data/spec/certificates/pangalink_swedbank_bank_cert.pem +22 -0
  50. data/spec/certificates/pangalink_swedbank_bank_key.pem +27 -0
  51. data/spec/certificates/pangalink_swedbank_user_key.pem +27 -0
  52. data/spec/config/config.yml +50 -6
  53. data/spec/config/plain_config.yml +3 -3
  54. data/spec/ipizza/authentication_response_spec.rb +11 -9
  55. data/spec/ipizza/config_spec.rb +9 -10
  56. data/spec/ipizza/provider/krediidipank_spec.rb +89 -0
  57. data/spec/ipizza/provider/lhv_spec.rb +89 -0
  58. data/spec/ipizza/provider/luminor_spec.rb +89 -0
  59. data/spec/ipizza/provider/nordea/authentication_response_spec.rb +3 -3
  60. data/spec/ipizza/provider/sampo_spec.rb +85 -0
  61. data/spec/ipizza/provider/seb_spec.rb +60 -30
  62. data/spec/ipizza/provider/swedbank_spec.rb +63 -34
  63. data/spec/ipizza/provider_spec.rb +25 -5
  64. data/spec/ipizza/util_spec.rb +5 -1
  65. data/spec/spec_helper.rb +1 -1
  66. data/spec/support/pizza.rb +1 -1
  67. metadata +121 -104
  68. data/spec/certificates/bank.crt +0 -21
  69. data/spec/certificates/bank.csr +0 -17
  70. data/spec/certificates/bank.key +0 -27
  71. data/spec/certificates/bank.pub +0 -1
  72. data/spec/certificates/dealer.key +0 -30
  73. data/spec/certificates/dealer.pub +0 -1
  74. data/spec/certificates/seb_test_priv.pem +0 -16
  75. data/spec/certificates/seb_test_pub.crt +0 -20
  76. data/spec/certificates/seb_test_pub.pem +0 -20
  77. data/spec/certificates/swedbank_production.pem +0 -48
@@ -0,0 +1,15 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIICWwIBAAKBgQDk3bIdDgZzsQQ697A5F2ZTOJppp6jGHig3pCsXf7qNBZr4Icjd
3
+ PNpnfjYTXXg4/50yXQZu1Gz4bfNNJf6pKyS19U5SM+vAs4CA6rr1E4mxv9nfSIBA
4
+ I0Vc+I2pXw2HAhvUiDryPv9meAHcVbKjQ0Q3944yFUhTMfbPxEYvx89uswIDAQAB
5
+ AoGAajmDu/yQfg4BGqVvw2/a7HFvKe7JZPsGS50E6yk7msypOtXjdtwRustXqfFO
6
+ JZZujbujirlJwpy1um8SHc6KgJEJ7Dg/j6Q2rFQvErmCwqf+hEjF0s1ZCcKL5WvY
7
+ MZ76qTFQ3gYfWGh/7pFJn7cdbDxFo1KzfoXhvieH4SJhEtECQQD5UuR5uI2SmvGT
8
+ n5XkQY+p0Ba8vUSdCTyOYCOkmUXc9ytuxH+Hf2Ad01iFQbjeo8NMjlbRADSlyobI
9
+ XqP5FVqtAkEA6v6QzdhOngYxYETFb1215krapX9A6dT8ncVuxX/OSh78lkoRO8oI
10
+ AMzYiXVVga+xvM8Uk8o0YlN4UnR+K9t63wJABVddRa5KeiWPn1X/5A/zf/PRSOHV
11
+ IngcMACnQtN1x7IT4B+di82SxZDNiK1LxJlFidJS0c9rUVHxaUF9ycxHUQJAElVk
12
+ BLtAfvGqvoD/Ck48V8g1QL4p2VRllQWHO99Zv8ylFjCXIZwEfdN9fVPrJOAJNNrP
13
+ FyyqY5VxiLVP9qn77wJAEzTyrw3WO09wphaA2daTAAwiui6h+J5gac0rgsocp1OI
14
+ vs4c+iqi7UdxCSic7HvlwdLxjnIPIrmC6t3xwRBFxQ==
15
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,22 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDnjCCAoYCCQClKgV52zz8XTANBgkqhkiG9w0BAQUFADCBkDELMAkGA1UEBhMC
3
+ RUUxETAPBgNVBAgMCEhhcmp1bWFhMRAwDgYDVQQHDAdUYWxsaW5uMREwDwYDVQQK
4
+ DAhFZGljeSBPVTERMA8GA1UECwwIYmFua2xpbmsxFjAUBgNVBAMMDXBhbmdhbGlu
5
+ ay5uZXQxHjAcBgkqhkiG9w0BCQEWD3RhbmVsQGVkaWN5LmNvbTAeFw0xNTAyMDIx
6
+ MDA3NDFaFw0zNTAxMjgxMDA3NDFaMIGQMQswCQYDVQQGEwJFRTERMA8GA1UECAwI
7
+ SGFyanVtYWExEDAOBgNVBAcMB1RhbGxpbm4xETAPBgNVBAoMCEVkaWN5IE9VMREw
8
+ DwYDVQQLDAhiYW5rbGluazEWMBQGA1UEAwwNcGFuZ2FsaW5rLm5ldDEeMBwGCSqG
9
+ SIb3DQEJARYPdGFuZWxAZWRpY3kuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
10
+ MIIBCgKCAQEA2ZPWFxp3xh8aD+EpRhTB5Rxg4fdTrZ7JPBiUBW5yiBRrcs1gtQq+
11
+ GPyDV7NmZLafmh3Fuor2j4EYE0I073bQ7+NYBWJVD2OFxOnVi/wD5Ud3imiR6euF
12
+ ijyU29yZOkjJ1iXU/0nxXuhNqsD0qdeCQUVPAcPD/lC6Pp7318vBHdZhgUBGiUf+
13
+ RYFU1BWVjeSebUIbcQqUctOwVrYwrvEmeds3vrrY1xExNT3kCuSJwUUv8P372jUa
14
+ +jBZiJUECMXo9B1wB5C4BMgQPPdk2zW0RGSuVU25x0IAsCqq6EMp6gft9mNkwXH/
15
+ 7iKkrL75RwOBnCNy/ROEdrtg70auX6dNfwIDAQABMA0GCSqGSIb3DQEBBQUAA4IB
16
+ AQBWL548eYE8zMaVqfv8m0nOjD2hYY1nuJDnJ14EJqa4uLH0d1ZT2XgfnR+RFxZf
17
+ BaA/aNmMslIq/NsOqUcPiKhVvc5b2fY34uN4hF1UUW+a1Ppu0V9RNAG7nAeSjRVe
18
+ ace6EW7BJkzdieFmrU9jJbUFMMoF2gBcCbUw4fiCq8jSaQnLSV8L2LWZDB7Xd/Y+
19
+ DgspAjr+gv7AvOtffP1hQeWm6Ehz66hJCsLYw+SrtFRiOgyKLAOGMCBLypiVCqyi
20
+ JagszYOBOXO9wileitI2n+O1wVUGRY6iZF50PAzU8sByveDGwkFtou3WDMZ06+6+
21
+ QiYB4xLzkB7E8Oqxpyy4EAzx
22
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpQIBAAKCAQEA2ZPWFxp3xh8aD+EpRhTB5Rxg4fdTrZ7JPBiUBW5yiBRrcs1g
3
+ tQq+GPyDV7NmZLafmh3Fuor2j4EYE0I073bQ7+NYBWJVD2OFxOnVi/wD5Ud3imiR
4
+ 6euFijyU29yZOkjJ1iXU/0nxXuhNqsD0qdeCQUVPAcPD/lC6Pp7318vBHdZhgUBG
5
+ iUf+RYFU1BWVjeSebUIbcQqUctOwVrYwrvEmeds3vrrY1xExNT3kCuSJwUUv8P37
6
+ 2jUa+jBZiJUECMXo9B1wB5C4BMgQPPdk2zW0RGSuVU25x0IAsCqq6EMp6gft9mNk
7
+ wXH/7iKkrL75RwOBnCNy/ROEdrtg70auX6dNfwIDAQABAoIBAQCL5eXDhy46QqdE
8
+ TJd4S0J86WlWAexY938W2ArdDy4vV0nbUDj9T4H5mOtuyZht64rl0nzfvBhbHzt2
9
+ rpxQ2MnxZPGkzJw6v9g0S9IWJx3uH6y6XxBrIxgDUX65e7c+Zaz5t+ujlkzPpHjD
10
+ 8TuftUU4aLMrRE/SRt/qAdcEdyud3ZndSyshEiVchRc9aTbQE2aLWO+arwq0BTJ1
11
+ Nn3r6XgPEW3xUzWj0Jq8Hq5RSIm3vt1KfSxDCxMr8qNCYDt/rQPPjcCHPK+zQrlq
12
+ eB9XMaDnmvEfeGOhYiQfw8AACFqGllaUY1MJgyYXg/GR6eOWFPguL18MDonBd+Aa
13
+ w/3SMnZhAoGBAO+Fqs8wpkwHDD+PRx6F4mQFU3I6cwFgiX1Qa/deXvLPLE10E+cl
14
+ +HRnfl2GrbX3IhSamK3FDSWAuogks6WUX6hnIoWV9B8FoDPkDK7H8prNZVk95cpJ
15
+ OrrLmSpCQYoY+9sxcU6RmTuE/vsm/GTC/0hl8mb5vwG9UBMEqaNxfK/xAoGBAOiL
16
+ sR4c+/t1GbVeqNWQjVUvy42XiP3oiTtjNZqkWEUAfEdmjFdgkC1m4aiyA/XQj6OI
17
+ ol4gMUuI3i/8Z9xqwto5SrGlv0fspGclC0mI9j+aZF0NrTWq43mqav/xKN9QcYoG
18
+ nMJEGaCz/zLgQ72QxufUCdSeCr3PnSW4MHPEi0RvAoGBALUxL9LGobZ3yms2jv1n
19
+ GKjDYqnRz3gmODwFH3ek+zzBPmllOz0r+zTLqctEe5pg1nYxsPgbTeOl6vXclc3X
20
+ XTm+s13M3zyse9FlXbbGaR9z64xEB9Yr6XKvXDGcp4m5dqUNVQKzn/BnnqANkPcE
21
+ kCuLe4EswrKlLLMGXvHWgxVxAoGBALYJ/InNOLic75YaVuJv+SNxedAKivPw39S8
22
+ kg7PjkXd3mvqa/xOnC7eddIgIJeCP59N64TxgIVXzE8WMJvMe2JnLQCp9nYwWnZf
23
+ +lkDPXmGvABYH3p+nvn0HTTkLRG7oFXjXT16H/G8Vg8WnhC8T+jVBSkK2u/BoYwQ
24
+ huVpO3hDAoGAXz0Tto2M9/emm0qfqPLhH6o/U9w0Fn8iypEmOzuGk8WOXViP1YWP
25
+ zBoELtKwV7B0zB46XUOwSmbfKNEbehNwI5+cOUTq+BfBoOLDVZdouxMWPb5iwccO
26
+ lEyh+6lRRWIA46C959vIl4kTDdywF1sDeRa5PgZ+IZFuch6mnRhkBq8=
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEogIBAAKCAQEAsZzRpH8gwra1IvNIGlC1hg9XzcKy08vXE4NM3akYkKnnDjnU
3
+ H7pR4MIrOAW759V4houSyh9plevQ+lmjaAhQRjRdkYtdUbHpmDDaVMIFEKGyoXkO
4
+ iNZ5fvzJZwqE1T7fXy/w3gBom8CUpT1FWO7Yw/d1J6FWse90YdBIJTLNWX7YsT/F
5
+ 15ddmss5JADdfsGBlljje3W5wfPYyqhMWWZNkFlD2FEAxHwbWms5g0SZ7rz7UO09
6
+ kCbXrnbqivFy54mnSedIO/yMIiNI1CRgbvhC9yixfauwRVR0aqLewkZaCWM1lQUz
7
+ 4Hq+gX/7EOukUKgUz9HbQiMmfsRO2WVVBNQmlwIDAQABAoIBAQCLc5UmkqomN04B
8
+ IwJ5puTfXSyTYUsHAATeTTkM0Ld43e2MPdtPDfs7fThxxA7E99apzOxzxjYggAaU
9
+ iczC4cQlWvgcTk/21LmTxMenxK41YL/gCCxhRAQgsFlxjdC9nZ/EHOABblCz+YC8
10
+ PF82dFG9i41wkDyBeIDoS6BZlImmuaIrPzfTTyIT8/GQO62VMLrGxbAxserJAyOz
11
+ yct+8dtgo++/tqqV0bSPzYKNipk13vGBr8TRKr8wgC6MqEYXOPvPel/T+vBdsrVu
12
+ tbeDktLNuSW71tVNLtinLZb/dUxJoOJr2qXNUJLvWEFlLm10YHrJpmdf6n8pHGdF
13
+ 54Pte8gBAoGBAN/mq88gqg5Ku+ux+Tk9VDo2PZarGu7CJw+qjTtECe81y6Ah629i
14
+ P56tAPiU7Qrbw+cTJSes/ROsomUmB/DCSoJv4Z+cdPOu4A7zPbFmB68JwlvcVcNU
15
+ 1PjiDN6tfPI0+NdZVM+5Dad3mOh+0NCzK5vgp6NelC6RHE8o2REu0yN7AoGBAMsT
16
+ U8oLlsFyVpk0q6HxWwzUpEKq7mR/QMg3H4crWBkqy6XDlCnWysOEAv+F1rqxlEQo
17
+ meJM9NQcQtqp5KOUsa0WkYXYZDsIvWZKFFgklv5unSm+pXE3zPxhEoHEfJxfVcVV
18
+ fqG58RGgS3JsnPZ3hr7GPlo+2kbLxJLxHHRyqYCVAoGBAI2d7RW5Z1Za1rmhfC1E
19
+ KT4YiKP/3a0eiG5URbgytMXklMLYMX3l+q92ZaLVL4kqr6I8bcfGltwW2TB4+ZTC
20
+ jzYpZd/6qc5n0bgjCeZmzn1cAt7vYh+GTJ6O++zsdpcMAkjTa91nAsfl0YVckN8w
21
+ NGkHk4C1laxOhEVdZM6Fe255An8xLn0ccbIRJ5/RevAWSF3EvbsKaltR+3+0/aSl
22
+ F9o+Ph8UBknb2ClDMLWJLODUVi2SVELwi7K/rBiE3KCC/YAKa2zS/ZVIttUn8Mj8
23
+ j+ABvshRU9q9kMYUWW4h/3Quauha4lnI0T+RBUFAdQ2Oo2P+0ARJ1u8GNlNlQv+h
24
+ NCPZAoGAOchpOggy28pCHIcLECRkssLKSU/i88dnKjKAak6rGWsMoJkN/O40i6+X
25
+ lHPJuoy35Ww25NsQi8CLV09taLgH42lo96Dzat7WZw/u/3LH+m08qpeEXN7NHUCd
26
+ KpSJAOKAj0ELRJAIY/3+2zYF4VgMrmVa5ScYe/atCRI2xV+9vnw=
27
+ -----END RSA PRIVATE KEY-----
@@ -1,21 +1,54 @@
1
+ krediidipank:
2
+ service_url: https://i-pank.krediidipank.ee/pay
3
+ return_url: http://test.local/krediidipank
4
+ cancel_url: http://test.local/krediidipank
5
+ login: dealer
6
+ file_cert: ../certificates/pangalink_krediidipank_bank_cert.pem
7
+ file_key: ../certificates/pangalink_krediidipank_user_key.pem
8
+ key_secret: foobar
9
+ encoding: UTF-8
10
+ snd_id: sender
11
+
12
+ lhv:
13
+ service_url: https://lhv.ee/banklink
14
+ return_url: http://test.local/lhv
15
+ cancel_url: http://test.local/lhv
16
+ login: dealer
17
+ file_cert: ../certificates/pangalink_lhv_bank_cert.pem
18
+ file_key: ../certificates/pangalink_lhv_user_key.pem
19
+ key_secret: foobar
20
+ encoding: UTF-8
21
+ snd_id: sender
22
+
1
23
  swedbank:
2
24
  service_url: https://www.swedbank.ee/banklink
3
25
  return_url: http://test.local/swedbank
4
26
  cancel_url: http://test.local/swedbank
5
27
  login: dealer
6
- file_cert: ../certificates/bank.crt
7
- file_key: ../certificates/dealer.key
28
+ file_cert: ../certificates/pangalink_swedbank_bank_cert.pem
29
+ file_key: ../certificates/pangalink_swedbank_user_key.pem
8
30
  key_secret: foobar
9
- encoding: ISO-8859-4
31
+ encoding: UTF-8
10
32
  snd_id: sender
11
33
 
12
34
  seb:
13
- service_url: https://www.seb.ee/banklink
35
+ service_url: https://www.seb.ee/cgi-bin/unet3.sh/un3min.r
14
36
  return_url: http://test.local/seb
15
37
  cancel_url: http://test.local/seb
16
38
  login: dealer
17
- file_cert: ../certificates/seb_test_pub.pem
18
- file_key: ../certificates/dealer.key
39
+ file_cert: ../certificates/pangalink_seb_bank_cert.pem
40
+ file_key: ../certificates/pangalink_seb_user_key.pem
41
+ key_secret: foobar
42
+ encoding: UTF-8
43
+ snd_id: sender
44
+
45
+ luminor:
46
+ service_url: https://banklink.luminor.ee/test
47
+ return_url: http://test.local/seb
48
+ cancel_url: http://test.local/seb
49
+ login: dealer
50
+ file_cert: ../certificates/pangalink_seb_bank_cert.pem
51
+ file_key: ../certificates/pangalink_seb_user_key.pem
19
52
  key_secret: foobar
20
53
  encoding: UTF-8
21
54
  snd_id: sender
@@ -36,3 +69,14 @@ nordea:
36
69
  confirm: 'YES'
37
70
  keyvers: '0001'
38
71
  file_key: ../certificates/nordea_test_priv
72
+
73
+ sampo:
74
+ service_url: https://www2.danskebank.ee/ibank/pizza/pizza
75
+ return_url: http://test.local/sampo
76
+ cancel_url: http://test.local/sampo
77
+ login: dealer
78
+ file_cert: ../certificates/pangalink_danske_bank_cert.pem
79
+ file_key: ../certificates/pangalink_danske_user_key.pem
80
+ key_secret: foobar
81
+ encoding: UTF-8
82
+ snd_id: sender
@@ -3,10 +3,10 @@ swedbank:
3
3
  return_url: http://test.local/return
4
4
  cancel_url: http://test.local/cancel
5
5
  snd_id: dealer
6
- file_cert: ../certificates/bank.pub
7
- file_key: ../certificates/dealer.key
6
+ file_cert: ../certificates/pangalink_swedbank_bank_cert.pem
7
+ file_key: ../certificates/pangalink_swedbank_user_key.pem
8
8
  key_secret: foobar
9
- encoding: ISO-8859-4
9
+ encoding: UTF-8
10
10
  wtf: not
11
11
 
12
12
  seb:
@@ -1,23 +1,25 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
2
 
3
3
  describe Ipizza::AuthenticationResponse do
4
-
5
4
  before(:each) do
6
- @resp1 = Ipizza::AuthenticationResponse.new({'VK_INFO' => 'NIMI:tõõger , LeõpäöldžŽšŠ;ISIK:35511280268'})
7
- @resp2 = Ipizza::AuthenticationResponse.new({'VK_INFO' => 'ISIK:35511280268;NIMI:tõõger , LeõpäöldžŽšŠ'})
5
+ @resp = Ipizza::AuthenticationResponse.new('VK_USER_NAME' => 'tõõger , LeõpäöldžŽšŠ', 'VK_USER_ID' => '35511280268')
8
6
  end
9
-
7
+
10
8
  describe '#info_social_security_id' do
11
9
  it 'should get user social security id from the response' do
12
- @resp1.info_social_security_id.should == '35511280268'
13
- @resp2.info_social_security_id.should == '35511280268'
10
+ @resp.info_social_security_id.should == '35511280268'
14
11
  end
15
12
  end
16
-
13
+
17
14
  describe '#info_name' do
18
15
  it 'should get user name from the response' do
19
- @resp1.info_name.should == 'tõõger , LeõpäöldžŽšŠ'
20
- @resp2.info_name.should == 'tõõger , LeõpäöldžŽšŠ'
16
+ @resp.info_name.should == 'tõõger , LeõpäöldžŽšŠ'
17
+ end
18
+ end
19
+
20
+ describe '#authentication_info' do
21
+ it 'should return Ipizza::Authentication object' do
22
+ @resp.authentication_info.should be_a(Ipizza::Authentication)
21
23
  end
22
24
  end
23
25
  end
@@ -3,7 +3,6 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
3
3
 
4
4
  describe Ipizza::Config do
5
5
  describe '.load_from_file' do
6
-
7
6
  before(:each) do
8
7
  Ipizza::Config.load_from_file(File.expand_path(File.dirname(__FILE__) + '/../config/plain_config.yml'))
9
8
  end
@@ -14,20 +13,20 @@ describe Ipizza::Config do
14
13
  Ipizza::Provider::Swedbank.cancel_url.should == 'http://test.local/cancel'
15
14
  Ipizza::Provider::Swedbank.key_secret.should == 'foobar'
16
15
  Ipizza::Provider::Swedbank.snd_id.should == 'dealer'
17
- Ipizza::Provider::Swedbank.encoding.should == 'ISO-8859-4'
16
+ Ipizza::Provider::Swedbank.encoding.should == 'UTF-8'
18
17
 
19
18
  Ipizza::Provider::Seb.service_url.should == 'https://www.seb.ee/banklink'
20
19
  end
21
20
 
22
21
  it 'should load certificates from path relative to configuration file' do
23
- Ipizza::Provider::Swedbank.file_key.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/dealer.key')
24
- Ipizza::Provider::Swedbank.file_cert.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/bank.pub')
22
+ Ipizza::Provider::Swedbank.file_key.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/pangalink_swedbank_user_key.pem')
23
+ Ipizza::Provider::Swedbank.file_cert.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/pangalink_swedbank_bank_cert.pem')
25
24
  end
26
25
 
27
26
  it 'should load certificates from absolute file paths' do
28
27
  cfg = {'swedbank' => YAML::load_file(File.expand_path(File.dirname(__FILE__) + '/../config/config.yml'))['swedbank']}
29
- cfg['swedbank']['file_key'] = File.expand_path(File.dirname(__FILE__) + '/../certificates/dealer.key')
30
- cfg['swedbank']['file_cert'] = File.expand_path(File.dirname(__FILE__) + '/../certificates/bank.pub')
28
+ cfg['swedbank']['file_key'] = File.expand_path(File.dirname(__FILE__) + '/../certificates/pangalink_swedbank_user_key.pem')
29
+ cfg['swedbank']['file_cert'] = File.expand_path(File.dirname(__FILE__) + '/../certificates/pangalink_swedbank_bank_cert.pem')
31
30
 
32
31
  Tempfile::open('config.yml') do |tmp|
33
32
  tmp << cfg.to_yaml
@@ -35,8 +34,8 @@ describe Ipizza::Config do
35
34
 
36
35
  config = Ipizza::Config.load_from_file(File.expand_path(tmp.path))
37
36
 
38
- Ipizza::Provider::Swedbank.file_key.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/dealer.key')
39
- Ipizza::Provider::Swedbank.file_cert.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/bank.pub')
37
+ Ipizza::Provider::Swedbank.file_key.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/pangalink_swedbank_user_key.pem')
38
+ Ipizza::Provider::Swedbank.file_cert.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/pangalink_swedbank_bank_cert.pem')
40
39
  end
41
40
  end
42
41
  end
@@ -58,10 +57,10 @@ describe Ipizza::Config do
58
57
  it 'loads certificates from directory specified by certs_root' do
59
58
  Ipizza::Config.configure do |c|
60
59
  c.certs_root = File.expand_path(File.dirname(__FILE__) + '/../certificates')
61
- c.swedbank_file_cert = 'seb_test_pub.pem'
60
+ c.swedbank_file_cert = 'pangalink_seb_bank_cert.pem'
62
61
  end
63
62
 
64
- Ipizza::Provider::Swedbank.file_cert.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/seb_test_pub.pem')
63
+ Ipizza::Provider::Swedbank.file_cert.should == File.expand_path(File.dirname(__FILE__) + '/../certificates/pangalink_seb_bank_cert.pem')
65
64
  end
66
65
  end
67
66
  end
@@ -0,0 +1,89 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Ipizza::Provider::Krediidipank do
4
+ let(:response_time) { Ipizza::Util.time_to_iso8601(Time.now) }
5
+ let(:bank_key) { File.expand_path('../../../certificates/pangalink_krediidipank_bank_key.pem', __FILE__) }
6
+
7
+ describe '#payment_request' do
8
+ let(:payment) { Ipizza::Payment.new(stamp: 1, amount: '123.34', refnum: 1, message: 'Payment message', currency: 'EUR') }
9
+
10
+ before(:each) do
11
+ req_time = Time.now
12
+ Time.stub!(:now).and_return(req_time)
13
+ end
14
+
15
+ it 'should sign the request' do
16
+ req = Ipizza::Provider::Krediidipank.new.payment_request(payment)
17
+ params = {
18
+ 'VK_SERVICE' => '1012',
19
+ 'VK_VERSION' => '008',
20
+ 'VK_SND_ID' => Ipizza::Provider::Krediidipank.snd_id,
21
+ 'VK_STAMP' => payment.stamp,
22
+ 'VK_AMOUNT' => sprintf('%.2f', payment.amount),
23
+ 'VK_CURR' => payment.currency,
24
+ 'VK_REF' => Ipizza::Util.sign_731(payment.refnum),
25
+ 'VK_MSG' => payment.message,
26
+ 'VK_RETURN' => Ipizza::Provider::Krediidipank.return_url,
27
+ 'VK_CANCEL' => Ipizza::Provider::Krediidipank.cancel_url,
28
+ 'VK_DATETIME' => Ipizza::Util.time_to_iso8601(Time.now)
29
+ }
30
+ signature = Ipizza::Util.sign(Ipizza::Provider::Krediidipank.file_key, Ipizza::Provider::Krediidipank.key_secret, Ipizza::Util.mac_data_string(params, Ipizza::Request::PARAM_ORDER['1012']))
31
+ req.sign_params['VK_MAC'].should == signature
32
+ end
33
+ end
34
+
35
+ describe '#payment_response' do
36
+ let(:params) {
37
+ {
38
+ 'VK_SERVICE' => '1111', 'VK_VERSION' => '008', 'VK_SND_ID' => 'KREP', 'VK_REC_ID' => 'sender',
39
+ 'VK_STAMP' => '20150111000004', 'VK_T_NO' => '1143', 'VK_AMOUNT' => '.17', 'VK_CURR' => 'EUR',
40
+ 'VK_REC_ACC' => 'EE411010002050618003', 'VK_REC_NAME' => 'ÕILIS OÜ',
41
+ 'VK_SND_ACC' => 'EE541010010046155012', 'VK_SND_NAME' => 'TÕÄGER Leõpäöld¸´¨¦',
42
+ 'VK_REF' => '201501110000048', 'VK_MSG' => 'Invoice #20150111000004', 'VK_T_DATETIME' => response_time,
43
+ 'VK_ENCODING' => 'UTF-8', 'VK_LANG' => 'EST', 'VK_AUTO' => 'N'
44
+ }
45
+ }
46
+
47
+ it 'should parse and verify the payment response from bank' do
48
+ signature = Ipizza::Util.sign(bank_key, nil, Ipizza::Util.mac_data_string(params, Ipizza::Response::PARAM_ORDER['1111']))
49
+ Ipizza::Provider::Krediidipank.new.payment_response(params.merge('VK_MAC' => signature)).should be_valid
50
+ end
51
+ end
52
+
53
+ describe '#authentication_request' do
54
+ before(:each) do
55
+ req_time = Time.now
56
+ Time.stub!(:now).and_return(req_time)
57
+ end
58
+
59
+ it 'should sign the request' do
60
+ req = Ipizza::Provider::Krediidipank.new.authentication_request
61
+ params = {
62
+ 'VK_SERVICE' => '4011',
63
+ 'VK_VERSION' => '008',
64
+ 'VK_SND_ID' => Ipizza::Provider::Krediidipank.snd_id,
65
+ 'VK_RETURN' => Ipizza::Provider::Krediidipank.return_url,
66
+ 'VK_DATETIME' => Ipizza::Util.time_to_iso8601(Time.now),
67
+ 'VK_RID' => '',
68
+ 'VK_REPLY' => '3012'
69
+ }
70
+ signature = Ipizza::Util.sign(Ipizza::Provider::Krediidipank.file_key, Ipizza::Provider::Krediidipank.key_secret, Ipizza::Util.mac_data_string(params, Ipizza::Request::PARAM_ORDER['4011']))
71
+ req.sign_params['VK_MAC'].should == signature
72
+ end
73
+ end
74
+
75
+ describe '#authentication_response' do
76
+ let(:params) {
77
+ {
78
+ 'VK_SERVICE' => '3012', 'VK_VERSION' => '008', 'VK_USER' => 'dealer', 'VK_DATETIME' => response_time,
79
+ 'VK_SND_ID' => 'KREP', 'VK_REC_ID' => 'sender', 'VK_USER_NAME' => 'TÕÄGER Leõpäöld¸´¨¦', 'VK_USER_ID' => '35511280268',
80
+ 'VK_COUNTRY' => 'EE', 'VK_OTHER' => '', 'VK_TOKEN' => '7', 'VK_RID' => ''
81
+ }
82
+ }
83
+
84
+ it 'should parse and verify the authentication response from bank' do
85
+ signature = Ipizza::Util.sign(bank_key, nil, Ipizza::Util.mac_data_string(params, Ipizza::Response::PARAM_ORDER['3012']))
86
+ Ipizza::Provider::Krediidipank.new.authentication_response(params.merge('VK_MAC' => signature)).should be_valid
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,89 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Ipizza::Provider::Lhv do
4
+ let(:response_time) { Ipizza::Util.time_to_iso8601(Time.now) }
5
+ let(:bank_key) { File.expand_path('../../../certificates/pangalink_lhv_bank_key.pem', __FILE__) }
6
+
7
+ describe '#payment_request' do
8
+ let(:payment) { Ipizza::Payment.new(stamp: 1, amount: '123.34', refnum: 1, message: 'Payment message', currency: 'EUR') }
9
+
10
+ before(:each) do
11
+ req_time = Time.now
12
+ Time.stub!(:now).and_return(req_time)
13
+ end
14
+
15
+ it 'should sign the request' do
16
+ req = Ipizza::Provider::Lhv.new.payment_request(payment)
17
+ params = {
18
+ 'VK_SERVICE' => '1012',
19
+ 'VK_VERSION' => '008',
20
+ 'VK_SND_ID' => Ipizza::Provider::Lhv.snd_id,
21
+ 'VK_STAMP' => payment.stamp,
22
+ 'VK_AMOUNT' => sprintf('%.2f', payment.amount),
23
+ 'VK_CURR' => payment.currency,
24
+ 'VK_REF' => Ipizza::Util.sign_731(payment.refnum),
25
+ 'VK_MSG' => payment.message,
26
+ 'VK_RETURN' => Ipizza::Provider::Lhv.return_url,
27
+ 'VK_CANCEL' => Ipizza::Provider::Lhv.cancel_url,
28
+ 'VK_DATETIME' => Ipizza::Util.time_to_iso8601(Time.now)
29
+ }
30
+ signature = Ipizza::Util.sign(Ipizza::Provider::Lhv.file_key, Ipizza::Provider::Lhv.key_secret, Ipizza::Util.mac_data_string(params, Ipizza::Request::PARAM_ORDER['1012']))
31
+ req.sign_params['VK_MAC'].should == signature
32
+ end
33
+ end
34
+
35
+ describe '#payment_response' do
36
+ let(:params) {
37
+ {
38
+ 'VK_SERVICE' => '1111', 'VK_VERSION' => '008', 'VK_SND_ID' => 'LHV', 'VK_REC_ID' => 'sender',
39
+ 'VK_STAMP' => '20150111000004', 'VK_T_NO' => '1143', 'VK_AMOUNT' => '.17', 'VK_CURR' => 'EUR',
40
+ 'VK_REC_ACC' => 'EE411010002050618003', 'VK_REC_NAME' => 'ÕILIS OÜ',
41
+ 'VK_SND_ACC' => 'EE541010010046155012', 'VK_SND_NAME' => 'TÕÄGER Leõpäöld¸´¨¦',
42
+ 'VK_REF' => '201501110000048', 'VK_MSG' => 'Invoice #20150111000004', 'VK_T_DATETIME' => response_time,
43
+ 'VK_ENCODING' => 'UTF-8', 'VK_LANG' => 'EST', 'VK_AUTO' => 'N'
44
+ }
45
+ }
46
+
47
+ it 'should parse and verify the payment response from bank' do
48
+ signature = Ipizza::Util.sign(bank_key, nil, Ipizza::Util.mac_data_string(params, Ipizza::Response::PARAM_ORDER['1111']))
49
+ Ipizza::Provider::Lhv.new.payment_response(params.merge('VK_MAC' => signature)).should be_valid
50
+ end
51
+ end
52
+
53
+ describe '#authentication_request' do
54
+ before(:each) do
55
+ req_time = Time.now
56
+ Time.stub!(:now).and_return(req_time)
57
+ end
58
+
59
+ it 'should sign the request' do
60
+ req = Ipizza::Provider::Lhv.new.authentication_request
61
+ params = {
62
+ 'VK_SERVICE' => '4011',
63
+ 'VK_VERSION' => '008',
64
+ 'VK_SND_ID' => Ipizza::Provider::Lhv.snd_id,
65
+ 'VK_RETURN' => Ipizza::Provider::Lhv.return_url,
66
+ 'VK_DATETIME' => Ipizza::Util.time_to_iso8601(Time.now),
67
+ 'VK_RID' => '',
68
+ 'VK_REPLY' => '3012'
69
+ }
70
+ signature = Ipizza::Util.sign(Ipizza::Provider::Lhv.file_key, Ipizza::Provider::Lhv.key_secret, Ipizza::Util.mac_data_string(params, Ipizza::Request::PARAM_ORDER['4011']))
71
+ req.sign_params['VK_MAC'].should == signature
72
+ end
73
+ end
74
+
75
+ describe '#authentication_response' do
76
+ let(:params) {
77
+ {
78
+ 'VK_SERVICE' => '3012', 'VK_VERSION' => '008', 'VK_USER' => 'dealer', 'VK_DATETIME' => response_time,
79
+ 'VK_SND_ID' => 'LHV', 'VK_REC_ID' => 'sender', 'VK_USER_NAME' => 'TÕÄGER Leõpäöld¸´¨¦', 'VK_USER_ID' => '35511280268',
80
+ 'VK_COUNTRY' => 'EE', 'VK_OTHER' => '', 'VK_TOKEN' => '7', 'VK_RID' => ''
81
+ }
82
+ }
83
+
84
+ it 'should parse and verify the authentication response from bank' do
85
+ signature = Ipizza::Util.sign(bank_key, nil, Ipizza::Util.mac_data_string(params, Ipizza::Response::PARAM_ORDER['3012']))
86
+ Ipizza::Provider::Lhv.new.authentication_response(params.merge('VK_MAC' => signature)).should be_valid
87
+ end
88
+ end
89
+ end