ipizza 0.7.1 → 2.1.0

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.
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