ipizza 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/.rspec +2 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +18 -0
- data/README.markdown +101 -0
- data/Rakefile +25 -0
- data/VERSION +1 -0
- data/autotest/discover.rb +1 -0
- data/init.rb +1 -0
- data/ipizza.gemspec +103 -0
- data/lib/ipizza.rb +13 -0
- data/lib/ipizza/authentication_request.rb +4 -0
- data/lib/ipizza/authentication_response.rb +24 -0
- data/lib/ipizza/config.rb +54 -0
- data/lib/ipizza/payment.rb +15 -0
- data/lib/ipizza/payment_request.rb +4 -0
- data/lib/ipizza/payment_response.rb +23 -0
- data/lib/ipizza/provider/nordea.rb +77 -0
- data/lib/ipizza/provider/nordea/authentication_request.rb +29 -0
- data/lib/ipizza/provider/nordea/authentication_response.rb +38 -0
- data/lib/ipizza/provider/nordea/payment_request.rb +33 -0
- data/lib/ipizza/provider/nordea/payment_response.rb +43 -0
- data/lib/ipizza/provider/sampo.rb +49 -0
- data/lib/ipizza/provider/seb.rb +81 -0
- data/lib/ipizza/provider/swedbank.rb +69 -0
- data/lib/ipizza/request.rb +17 -0
- data/lib/ipizza/response.rb +24 -0
- data/lib/ipizza/util.rb +74 -0
- data/spec/certificates/bank.crt +21 -0
- data/spec/certificates/bank.csr +17 -0
- data/spec/certificates/bank.key +27 -0
- data/spec/certificates/bank.pub +1 -0
- data/spec/certificates/dealer.key +30 -0
- data/spec/certificates/dealer.pub +1 -0
- data/spec/certificates/nordea_test_priv +1 -0
- data/spec/certificates/seb_test_priv.pem +16 -0
- data/spec/certificates/seb_test_pub.crt +20 -0
- data/spec/certificates/seb_test_pub.pem +20 -0
- data/spec/config/config.yml +38 -0
- data/spec/config/plain_config.yml +13 -0
- data/spec/ipizza/authentication_response_spec.rb +23 -0
- data/spec/ipizza/config_spec.rb +58 -0
- data/spec/ipizza/provider/nordea/authentication_response_spec.rb +41 -0
- data/spec/ipizza/provider/nordea/payment_request_spec.rb +4 -0
- data/spec/ipizza/provider/nordea/payment_response_spec.rb +4 -0
- data/spec/ipizza/provider/nordea_spec.rb +29 -0
- data/spec/ipizza/provider/sampo_spec.rb +4 -0
- data/spec/ipizza/provider/seb_spec.rb +46 -0
- data/spec/ipizza/provider/swedbank_spec.rb +46 -0
- data/spec/ipizza/util_spec.rb +21 -0
- data/spec/spec_helper.rb +9 -0
- data/spec/support/pizza.rb +8 -0
- metadata +129 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDYjCCAkoCCQCFffTngA2a1jANBgkqhkiG9w0BAQUFADBzMQswCQYDVQQGEwJF
|
3
|
+
RTERMA8GA1UECBMIVGFydHVtYWExDjAMBgNVBAcTBVRhcnR1MQ4wDAYDVQQKEwVF
|
4
|
+
ZGljeTESMBAGA1UEAxMJU3Blcm1iYW5rMR0wGwYJKoZIhvcNAQkBFg5pbmZvQHNw
|
5
|
+
ZXJtYmFuazAgFw0xMDEwMjMxMzUzMjZaGA8yMjg0MDgwNzEzNTMyNlowczELMAkG
|
6
|
+
A1UEBhMCRUUxETAPBgNVBAgTCFRhcnR1bWFhMQ4wDAYDVQQHEwVUYXJ0dTEOMAwG
|
7
|
+
A1UEChMFRWRpY3kxEjAQBgNVBAMTCVNwZXJtYmFuazEdMBsGCSqGSIb3DQEJARYO
|
8
|
+
aW5mb0BzcGVybWJhbmswggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAwggEIAoIBAQDa
|
9
|
+
qmkPniJgt51TQ9UcUeIcto06FfLuF59aDRkgJ12JhPJzV2Ec5nbydaHp3MyKtgr0
|
10
|
+
zuLiSGc/LH+RLgrKwpGpVNvvJYg6NZKIOW+noHSKBuzYT1JtaNkZSasl2RK9EjT6
|
11
|
+
qAJ8hzPPBaOu5amBEM4MesUStZ1KYSwElvFQysqJZfccOyjCAypOhPpUYlbsTH4W
|
12
|
+
1+7h2uIjZPsafasludipxKM1ncwG2YF82uYPW+NyIrp87x1oJwfsGQBhstMKUtUx
|
13
|
+
DEQ0LwTzTYGCH/j+TLnCujSkQVsdYmNfje9PTQxGWLT92CjJ90dyePdwACDa7Qoi
|
14
|
+
kN+WLuESkSRT+OjV9Sa5AgEjMA0GCSqGSIb3DQEBBQUAA4IBAQB+Eq2qbKCmuAw+
|
15
|
+
pSzotW7JlhU1GW0nWbvGU2T7y4SgKuRfHBh5tujhKGxMP76pIp96MuRGYZzTrPhE
|
16
|
+
rxtXqEgh4b55iZDYK4EEspOaEnZgmktZgCRBLyGS95CVTxoKV20EYNxGQprMRu6T
|
17
|
+
ll1nV3YgEYpp5UdQs38fP3rY+Yx6C2Vi4p+DPD1MCDGtxfzDA5LSnHnKas82nR90
|
18
|
+
eHsacbmrkLMlBOuPGRMwRyGbOHNsFa1O6hLk8IFz1HZUJJepKnCLhC6zjl0AlMi5
|
19
|
+
gJ8iY0fhJKQSp50oJtb4MymTo2IZBlQL7or7kviNETpbdGfplKn8U11VTAUjRC5/
|
20
|
+
Tp9Eluhh
|
21
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,17 @@
|
|
1
|
+
-----BEGIN CERTIFICATE REQUEST-----
|
2
|
+
MIICtjCCAZ4CAQAwczELMAkGA1UEBhMCRUUxETAPBgNVBAgTCFRhcnR1bWFhMQ4w
|
3
|
+
DAYDVQQHEwVUYXJ0dTEOMAwGA1UEChMFRWRpY3kxEjAQBgNVBAMTCVNwZXJtYmFu
|
4
|
+
azEdMBsGCSqGSIb3DQEJARYOaW5mb0BzcGVybWJhbmswggEgMA0GCSqGSIb3DQEB
|
5
|
+
AQUAA4IBDQAwggEIAoIBAQDaqmkPniJgt51TQ9UcUeIcto06FfLuF59aDRkgJ12J
|
6
|
+
hPJzV2Ec5nbydaHp3MyKtgr0zuLiSGc/LH+RLgrKwpGpVNvvJYg6NZKIOW+noHSK
|
7
|
+
BuzYT1JtaNkZSasl2RK9EjT6qAJ8hzPPBaOu5amBEM4MesUStZ1KYSwElvFQysqJ
|
8
|
+
ZfccOyjCAypOhPpUYlbsTH4W1+7h2uIjZPsafasludipxKM1ncwG2YF82uYPW+Ny
|
9
|
+
Irp87x1oJwfsGQBhstMKUtUxDEQ0LwTzTYGCH/j+TLnCujSkQVsdYmNfje9PTQxG
|
10
|
+
WLT92CjJ90dyePdwACDa7QoikN+WLuESkSRT+OjV9Sa5AgEjoAAwDQYJKoZIhvcN
|
11
|
+
AQEFBQADggEBAIXdnuggh14uC9f+lReTa/XG3GK6guryVwDQ2kHhmfS+GNwc5wFp
|
12
|
+
3hNNFnbsF/4jmszKRSgwwvy5x8ebTFfp5VklHHo/l5YSggiSBp8+IIAPS26WtclU
|
13
|
+
lJZAcwhr+3YG5phjqe4auJhXFrPU9HtyhC8MmALRHj2FWvkMizEGH4efLEbTETPp
|
14
|
+
zVAVienF8BJSsSUx1W5kG03OGPp6d7vFR/o2xgy+NmX1jrZvIz7MwMd/3x8Xclaj
|
15
|
+
/Huu1Gsnw0xELrzvftbi8LE0VEuKcSuqISiXGhLdzmCbRgEnzqU6WoJoge7kgYg+
|
16
|
+
WfPSzI0aDrhvZ95FVfyuBwNSvSFCPFBfP6M=
|
17
|
+
-----END CERTIFICATE REQUEST-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEogIBAAKCAQEA2qppD54iYLedU0PVHFHiHLaNOhXy7hefWg0ZICddiYTyc1dh
|
3
|
+
HOZ28nWh6dzMirYK9M7i4khnPyx/kS4KysKRqVTb7yWIOjWSiDlvp6B0igbs2E9S
|
4
|
+
bWjZGUmrJdkSvRI0+qgCfIczzwWjruWpgRDODHrFErWdSmEsBJbxUMrKiWX3HDso
|
5
|
+
wgMqToT6VGJW7Ex+Ftfu4driI2T7Gn2rJbnYqcSjNZ3MBtmBfNrmD1vjciK6fO8d
|
6
|
+
aCcH7BkAYbLTClLVMQxENC8E802Bgh/4/ky5wro0pEFbHWJjX43vT00MRli0/dgo
|
7
|
+
yfdHcnj3cAAg2u0KIpDfli7hEpEkU/jo1fUmuQIBIwKCAQA4OnLJgG89cQsyqwrq
|
8
|
+
Bm1X1yuhONgRVogP13t9S/N7Ii+3QlrM6s4hFu8e4QFlf0SlWcVQIT8e346EauzV
|
9
|
+
DXXptrw2Ljj5BnYjB3R7j6jwSuxyIwaRKZbpPtQ87q0MC/7+oDsnVfdhHrUPt2YZ
|
10
|
+
37/0lJkTcIeIJ52ax7plO3Xo0JnQMtuyLI6/JMmZ5yK9Ew/L7sb7qhA9kwuDI6Ja
|
11
|
+
5SHMPVqQRqZi5YEjIQJ0PjP9M6FkEJdIdeUD/WkCVjUmsJOq2/JX7mK+xkutz4rs
|
12
|
+
/GhCjw/quH1vcfjBZDswDb/vhBF1+iGj1qLmCRDycRjVWDodytI0RdqtdowfkO9u
|
13
|
+
jiALAoGBAPk9eHG3dZP+iht7shF9X+Dhqn3o1Nwv9uZ/gJeI2KkduOWECSg3I6H7
|
14
|
+
rZ51MTGESw2Cm/88THvl1ROBKZgC18u6Rp+/8i+q6EdEwIGy20vMxIKmA0DyTxtn
|
15
|
+
Lo5V6imY3l+xTt7K37Oj4OzI15SOT1v+x11WlavPIPO7822dXL+JAoGBAOCYp5mO
|
16
|
+
ivlopLJlu6Hk99GN4jJCxf+upARHq2NX1+UAALLV1zkyqyIxdAUrca7cR8eRoNHZ
|
17
|
+
LIMvo1SCHYjGWpJQGPYB1qqbYhPuxpPquEpIdAJQ/t0H5key9gkFnzEmeLwP9XHX
|
18
|
+
RqiI5o/b4oEO8T3o0TRX3uLZv53kYBD8b7GxAoGAQBce+KuEomYGQZTWBH9TKzK2
|
19
|
+
z+tp73oMSeZFo08TJCw22+7Ahq8XypEspRbSIqz9Wz7XqAgw7KjQZBnmH8Y3fYer
|
20
|
+
wq2zThYBNuXLGglrlyYGpUChwD5O2ykpOose9MDouYVdbH1Pd1YGo0mWhUkqWXwH
|
21
|
+
YSTkqIW4BCkEFN9SXSMCgYEA2i3ko8xMfUEVBRJegAL/XdpJcqdD/7D3Ghm8byIi
|
22
|
+
LuoPTqPYY3MMpN+VRtm+5GD1RYYnMkCu5daBaAlehN3xlXJhZAHJOASoayJ3wuQD
|
23
|
+
e1xTb/bo8/kLlhuP64HN1/l8mW6WqRpEo7gwbn3Ut+KhNNOJZgw3mopiXt3ZqhnL
|
24
|
+
lqsCgYEA6P5SoSj3LOaPISNqwXKgz+JZc7fHuhcUNkg5gh7kzTqo2wtT1HHB/qgu
|
25
|
+
tr44JyzTRY5K2r9YYWctCA69rClYMiNds+XxhJ7TYdNzRv8/sTrWvn6t4/I+o8Ke
|
26
|
+
ETd6XQEi9EUpkfrsVyq9oMTYTZeUiEybDZuYdv2vJSB45X6e6pc=
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1 @@
|
|
1
|
+
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA2qppD54iYLedU0PVHFHiHLaNOhXy7hefWg0ZICddiYTyc1dhHOZ28nWh6dzMirYK9M7i4khnPyx/kS4KysKRqVTb7yWIOjWSiDlvp6B0igbs2E9SbWjZGUmrJdkSvRI0+qgCfIczzwWjruWpgRDODHrFErWdSmEsBJbxUMrKiWX3HDsowgMqToT6VGJW7Ex+Ftfu4driI2T7Gn2rJbnYqcSjNZ3MBtmBfNrmD1vjciK6fO8daCcH7BkAYbLTClLVMQxENC8E802Bgh/4/ky5wro0pEFbHWJjX43vT00MRli0/dgoyfdHcnj3cAAg2u0KIpDfli7hEpEkU/jo1fUmuQ== priit@Priit.local
|
@@ -0,0 +1,30 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
Proc-Type: 4,ENCRYPTED
|
3
|
+
DEK-Info: DES-EDE3-CBC,DDB688B584D929BC
|
4
|
+
|
5
|
+
9bETOPI7ZZyVtbGtMkFAaVwWSVPHOcTnRJMsBMBhArjLuR5P0m4LjDfscfA+9kW0
|
6
|
+
TBNL+79D9XbiSQQDtgA47KeplaZNBNV1RQJ4526XprWp9PIkzlFp6zHMU+doOEnY
|
7
|
+
eUHGPorFxvYJewO9KtkxCDDurBUckO19jepxBOTrmdsbouk2uTsNYfRu60EJtFoE
|
8
|
+
vGk+wlD8lI6UvNWmluBJHBYo/UR3dFaTXEpYVkIAhnOdG+mS0Bm1/aCQylH5pxRz
|
9
|
+
H0KcEqEAjwLDeLmGrdphYbpmwy1dCmyxC6H4cxzxXw1AvIM3f0m7H+qCuMY6gnYp
|
10
|
+
SNNerpCpujo/7/UesIW2sM9x/3db2DrrhuBka4prUvarbd1JweO5fb2yYIshEjNq
|
11
|
+
C+g8b6mzQN9wDiuJdZyjg69yXAtBbOnzujRVVoRmm2w4C0jS/Vudak3+C+75DzgR
|
12
|
+
n3QyrAY4wavMHvW716/gAw3oFlnmKyMX+kmxpeMu1Lh+HE3M3oFqULNxkXHkSn1f
|
13
|
+
HwhVn+ypf6G5hZb+wmWKMEzwISQTti/bhzXulmW4P4wQFGeHifOCAMDURIKd8Mv8
|
14
|
+
zSx5FUihVUwd8ZUKEfvt9o/voO8saIe4DA77jd3U3N8Vb8kkFbBaw6VOMVl59m6l
|
15
|
+
ctjBgmtCjKLPwYvlHm4OI73RQk5pN/3BJ3u3gZXb/Px4zmB3I+ErZCH7SXbNZhO3
|
16
|
+
1JQ0XG1/10HtTDBMR1rcaP49E9xzw2nNqdjUi4zbMWxsCCSSg01oNUf3XjBBslJH
|
17
|
+
fjsdUAVK7MuIsBhicKsSDZ2XFa5QJHmrLCisVo/lvD7ZoEnHfYAaMdThYA4ZAyJf
|
18
|
+
J0h71N2U/vlHSZBY1S7yIGgViYKBqrXUylT3E7ESwisiblM+wkxhlCbMPOtPpzhq
|
19
|
+
u6UhPhga+C190I2FQpPN439q+FiIO7qPJw9jCZn/P3b5WM5aj6XjcxCvzqCLXaRx
|
20
|
+
uabx4ze+xCci7GeY4B5M7SkFEK2vYxSWTa3phjWxRMKTF02NNq4tCD45HqgphyP4
|
21
|
+
5dvQvn6+RHjGaRmoV9vnU7cciuVrnw/6G4iIllZrulvwVozbIR1an02bJawK4WYC
|
22
|
+
inGFGdnY8xenEkKII8QmPmGEtJSt2XWHNd66wC0MGJH1gsgo1nbYrX3woHn4Vekz
|
23
|
+
zuGIsZM/+TtMpz/qbG4CS5wHVnloFr//FoFCPNKEqt79BmnsR2Xj05xLjDA4ENey
|
24
|
+
MZ0Jy2SulXP2xVauOCSnUJZvxpcue2wPXG5gzakzZ5GTrKOO3psLnA5N5M6kCLX+
|
25
|
+
LQHKzA6D+i1d3b+dP0SJQBDAkFGY0GvBOCbgIRs+/SCUNPXY9/GNlx11O+lQAjn6
|
26
|
+
BH6fuh2KYh1RoPdQISzCdzP3hhnwo6NEEioqtGA4yQJ6XFjsDb8VmI7O94QjloGd
|
27
|
+
uWvbppa3lKgDcQhPbru+R/M7kT15CDafR7NSlPCXJKSh0WO2SAHRjxOUN1/ABeSA
|
28
|
+
L484LL+d74CIiGMKJXv4nIvvtaR/gV4a7tfOdw2eJ7e2LPAD8UeBYCyxleTGPP1Y
|
29
|
+
aIQOe9025vIvdjBuws+pmsnCKuAVa1p853q17y2iQ8xYORT6tvtD8Q==
|
30
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1 @@
|
|
1
|
+
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA22gPnSfXmJIoCKiK9C5YVhRvkP1Y7z+wrHHB+X5z80MxmsL9q/dyjBoqbv0+ij4iW6ZJXWdJGeXFmjMT9fjb4mTiXNml4VEdeDKo1+nafpUngUjWMzjlyZq1noWBAOcPFbsUEas8dIBhrml+3c4Vyf372ikEknbDQFdE86+7b/sYM/OLAwLn1MzeI107c3ur6n3QgEa+cpJzSULjSUqwFZLUJ7ZasG5FlR+epmIELFubFFZFM8AID2rfBGNlGo49ge313baJHEcQkV2gEOc/bo2WLtEYq6AFsoFl0B3afj/u+Yn5xxZ2x933dIgxWjKhm3SCOWrww4V5qCCmBVywCQ== priit@Priit.local
|
@@ -0,0 +1 @@
|
|
1
|
+
LEHTI
|
@@ -0,0 +1,16 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIICXAIBAAKBgQC+AROlXiRvi1T7Q9fAh0Lw73szAn26mqfKDqd6Bdplq3v+gVWC
|
3
|
+
3v0+bgtfNakRE/UVYOxEA0z0viqRpKzPuNy8OstTMe8fFKs19NW8lBYik6NzJ4Bk
|
4
|
+
+B6VmovOm0nJLQJytXKiJyuHP9DqPOVmP8S+azzX7Uqzov1nxo9fvH7y2QIDAQAB
|
5
|
+
AoGAFhbD9O6r57fYCloJxB01gBMnTHfWrBH8vbXUbJAvorA7+wuIKG3KHS7n7Yqs
|
6
|
+
fArI7FJXRVTo5m8RPdtaJ9ADAT9rjAi3A17TaEueyJl+B/hjHYhsd8MeFhTb2fh0
|
7
|
+
rY3F6diL8U/YDbiAIegnKO0zcc6ynJrsQZvzb6DlY/CLPe0CQQD3KXJzw1ZfJ1ts
|
8
|
+
c370b/ZC1YrRURw41Q0I8ljYJ8EJw/ngVxrnCIsd43bRnOVp9guJrjTQRkhDC3Gn
|
9
|
+
J2Y0+42LAkEAxMxmh7QY4nItBTS0fe1KCat4VDxhyxYEhZKlGDhxW75vNROrripB
|
10
|
+
1ZfBsq5xkY2MM9R7WKmL7SpStrUPIvEVqwJBAOXA4ISd61cupbytrDEbNscv7Afh
|
11
|
+
pyNpYOGVLmNYqQgj5c7WCcsD1RYmkRgPCe8y6czFZJDLFHdGVxLz+/16bTsCQC9J
|
12
|
+
Ob2TnYMTkhO1JUU4tdh69e+vjoPgp3d80+Rs83fq2wey0UaI6saqryUC21Dw5OYz
|
13
|
+
QOv92RxEVhmGibuIl/8CQCiYrzwlZJDlsKrWPZT0E8rzNmLZkhNHzYJP9S7x+FKk
|
14
|
+
m3gFeXEBgzGn9UOd6xIAp0p7A1XVBN8XzDMa09gSOks=
|
15
|
+
-----END RSA PRIVATE KEY-----
|
16
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDRTCCAq6gAwIBAgIBADANBgkqhkiG9w0BAQQFADB7MQswCQYDVQQGEwJFRTEO
|
3
|
+
MAwGA1UECBMFSGFyanUxEDAOBgNVBAcTB1RhbGxpbm4xDDAKBgNVBAoTA0VZUDEL
|
4
|
+
MAkGA1UECxMCSVQxDDAKBgNVBAMTA2EuYTEhMB8GCSqGSIb3DQEJARYSYWxsYXIu
|
5
|
+
YWxsYXNAZXlwLmVlMB4XDTk5MTExNTA4MTAzM1oXDTk5MTIxNTA4MTAzM1owezEL
|
6
|
+
MAkGA1UEBhMCRUUxDjAMBgNVBAgTBUhhcmp1MRAwDgYDVQQHEwdUYWxsaW5uMQww
|
7
|
+
CgYDVQQKEwNFWVAxCzAJBgNVBAsTAklUMQwwCgYDVQQDEwNhLmExITAfBgkqhkiG
|
8
|
+
9w0BCQEWEmFsbGFyLmFsbGFzQGV5cC5lZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
|
9
|
+
gYkCgYEAvgETpV4kb4tU+0PXwIdC8O97MwJ9upqnyg6negXaZat7/oFVgt79Pm4L
|
10
|
+
XzWpERP1FWDsRANM9L4qkaSsz7jcvDrLUzHvHxSrNfTVvJQWIpOjcyeAZPgelZqL
|
11
|
+
zptJyS0CcrVyoicrhz/Q6jzlZj/Evms81+1Ks6L9Z8aPX7x+8tkCAwEAAaOB2DCB
|
12
|
+
1TAdBgNVHQ4EFgQUFivCzZNmegEoOxYtg20YMMRB98gwgaUGA1UdIwSBnTCBmoAU
|
13
|
+
FivCzZNmegEoOxYtg20YMMRB98ihf6R9MHsxCzAJBgNVBAYTAkVFMQ4wDAYDVQQI
|
14
|
+
EwVIYXJqdTEQMA4GA1UEBxMHVGFsbGlubjEMMAoGA1UEChMDRVlQMQswCQYDVQQL
|
15
|
+
EwJJVDEMMAoGA1UEAxMDYS5hMSEwHwYJKoZIhvcNAQkBFhJhbGxhci5hbGxhc0Bl
|
16
|
+
eXAuZWWCAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBfkayuot+e
|
17
|
+
fwW8QmPwpWF5AY3oMT/fTncjCljDBOg39IQv4PjnpTdDfwwl3lUIZHHTLM2i0L/c
|
18
|
+
eD4D1UFM1qdp2VZzhBd1eeMjxYjCP8qL2v2MfLkCYcP30Sl6ISSkFjFc5qbGXZOc
|
19
|
+
C82uR/wUZJDw9kj+R1O46/byG8yA+S9FVw==
|
20
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDRTCCAq6gAwIBAgIBADANBgkqhkiG9w0BAQQFADB7MQswCQYDVQQGEwJFRTEO
|
3
|
+
MAwGA1UECBMFSGFyanUxEDAOBgNVBAcTB1RhbGxpbm4xDDAKBgNVBAoTA0VZUDEL
|
4
|
+
MAkGA1UECxMCSVQxDDAKBgNVBAMTA2EuYTEhMB8GCSqGSIb3DQEJARYSYWxsYXIu
|
5
|
+
YWxsYXNAZXlwLmVlMB4XDTk5MTExNTA4MTAzM1oXDTk5MTIxNTA4MTAzM1owezEL
|
6
|
+
MAkGA1UEBhMCRUUxDjAMBgNVBAgTBUhhcmp1MRAwDgYDVQQHEwdUYWxsaW5uMQww
|
7
|
+
CgYDVQQKEwNFWVAxCzAJBgNVBAsTAklUMQwwCgYDVQQDEwNhLmExITAfBgkqhkiG
|
8
|
+
9w0BCQEWEmFsbGFyLmFsbGFzQGV5cC5lZTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
|
9
|
+
gYkCgYEAvgETpV4kb4tU+0PXwIdC8O97MwJ9upqnyg6negXaZat7/oFVgt79Pm4L
|
10
|
+
XzWpERP1FWDsRANM9L4qkaSsz7jcvDrLUzHvHxSrNfTVvJQWIpOjcyeAZPgelZqL
|
11
|
+
zptJyS0CcrVyoicrhz/Q6jzlZj/Evms81+1Ks6L9Z8aPX7x+8tkCAwEAAaOB2DCB
|
12
|
+
1TAdBgNVHQ4EFgQUFivCzZNmegEoOxYtg20YMMRB98gwgaUGA1UdIwSBnTCBmoAU
|
13
|
+
FivCzZNmegEoOxYtg20YMMRB98ihf6R9MHsxCzAJBgNVBAYTAkVFMQ4wDAYDVQQI
|
14
|
+
EwVIYXJqdTEQMA4GA1UEBxMHVGFsbGlubjEMMAoGA1UEChMDRVlQMQswCQYDVQQL
|
15
|
+
EwJJVDEMMAoGA1UEAxMDYS5hMSEwHwYJKoZIhvcNAQkBFhJhbGxhci5hbGxhc0Bl
|
16
|
+
eXAuZWWCAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQBfkayuot+e
|
17
|
+
fwW8QmPwpWF5AY3oMT/fTncjCljDBOg39IQv4PjnpTdDfwwl3lUIZHHTLM2i0L/c
|
18
|
+
eD4D1UFM1qdp2VZzhBd1eeMjxYjCP8qL2v2MfLkCYcP30Sl6ISSkFjFc5qbGXZOc
|
19
|
+
C82uR/wUZJDw9kj+R1O46/byG8yA+S9FVw==
|
20
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,38 @@
|
|
1
|
+
swedbank:
|
2
|
+
service_url: https://www.swedbank.ee/banklink
|
3
|
+
return_url: http://test.local/swedbank
|
4
|
+
cancel_url: http://test.local/swedbank
|
5
|
+
login: dealer
|
6
|
+
file_cert: ../certificates/bank.crt
|
7
|
+
file_key: ../certificates/dealer.key
|
8
|
+
key_secret: foobar
|
9
|
+
encoding: UTF-8
|
10
|
+
snd_id: sender
|
11
|
+
|
12
|
+
seb:
|
13
|
+
service_url: https://www.seb.ee/banklink
|
14
|
+
return_url: http://test.local/seb
|
15
|
+
cancel_url: http://test.local/seb
|
16
|
+
login: dealer
|
17
|
+
file_cert: ../certificates/seb_test_pub.crt
|
18
|
+
file_key: ../certificates/dealer.key
|
19
|
+
key_secret: foobar
|
20
|
+
encoding: UTF-8
|
21
|
+
snd_id: sender
|
22
|
+
|
23
|
+
nordea:
|
24
|
+
payments_service_url: https://netbank.nordea.com/pnbepaytest/epayn.jsp
|
25
|
+
payments_return_url: http://test.local/nordea
|
26
|
+
payments_reject_url: http://test.local/nordea
|
27
|
+
payments_cancel_url: http://test.local/nordea
|
28
|
+
payment_rcv_id: '12345678'
|
29
|
+
payments_language: '4'
|
30
|
+
auth_service_url: https://netbank.nordea.com/pnbeidtest/eidn.jsp
|
31
|
+
auth_return_url: http://priit.local/info.rb
|
32
|
+
auth_reject_url: http://priit.local/info.rb
|
33
|
+
auth_cancel_url: http://priit.local/info.rb
|
34
|
+
auth_language: 'ET'
|
35
|
+
auth_rcv_id: '87654321'
|
36
|
+
confirm: 'YES'
|
37
|
+
keyvers: '0001'
|
38
|
+
file_key: ../certificates/nordea_test_priv
|
@@ -0,0 +1,13 @@
|
|
1
|
+
swedbank:
|
2
|
+
service_url: https://www.swedbank.ee/banklink
|
3
|
+
return_url: http://test.local/return
|
4
|
+
cancel_url: http://test.local/cancel
|
5
|
+
snd_id: dealer
|
6
|
+
file_cert: ../certificates/bank.pub
|
7
|
+
file_key: ../certificates/dealer.key
|
8
|
+
key_secret: foobar
|
9
|
+
encoding: ISO-8859-4
|
10
|
+
wtf: not
|
11
|
+
|
12
|
+
seb:
|
13
|
+
service_url: https://www.seb.ee/banklink
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Ipizza::AuthenticationResponse do
|
4
|
+
|
5
|
+
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žŽšŠ'})
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#info_social_security_id' do
|
11
|
+
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'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#info_name' do
|
18
|
+
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žŽšŠ'
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'tempfile'
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
3
|
+
|
4
|
+
describe Ipizza::Config do
|
5
|
+
describe '.load_from_file' do
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
Ipizza::Config.load_from_file(File.expand_path(File.dirname(__FILE__) + '/../config/plain_config.yml'))
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should load configuration from yml file' do
|
12
|
+
Ipizza::Provider::Swedbank.service_url.should == 'https://www.swedbank.ee/banklink'
|
13
|
+
Ipizza::Provider::Swedbank.return_url.should == 'http://test.local/return'
|
14
|
+
Ipizza::Provider::Swedbank.cancel_url.should == 'http://test.local/cancel'
|
15
|
+
Ipizza::Provider::Swedbank.key_secret.should == 'foobar'
|
16
|
+
Ipizza::Provider::Swedbank.snd_id.should == 'dealer'
|
17
|
+
Ipizza::Provider::Swedbank.encoding.should == 'ISO-8859-4'
|
18
|
+
|
19
|
+
Ipizza::Provider::Seb.service_url.should == 'https://www.seb.ee/banklink'
|
20
|
+
end
|
21
|
+
|
22
|
+
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')
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should load certificates from absolute file paths' do
|
28
|
+
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')
|
31
|
+
|
32
|
+
Tempfile::open('config.yml') do |tmp|
|
33
|
+
tmp << cfg.to_yaml
|
34
|
+
tmp.flush
|
35
|
+
|
36
|
+
config = Ipizza::Config.load_from_file(File.expand_path(tmp.path))
|
37
|
+
|
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')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '.configure' do
|
45
|
+
it 'changes the configuration inside block' do
|
46
|
+
Ipizza::Config.configure do |c|
|
47
|
+
c.swedbank_service_url = 'http://foo.bar/swedbank'
|
48
|
+
end
|
49
|
+
|
50
|
+
Ipizza::Provider::Swedbank.service_url.should == 'http://foo.bar/swedbank'
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'should raise an error if configuration parameter does not exist' do
|
54
|
+
lambda { Ipizza::Config.configure { |c| c.swedbank_unknown_attr = 'foo' } }.should raise_error
|
55
|
+
lambda { Ipizza::Config.configure { |c| c.spermbank_service_url = 'foo' } }.should raise_error
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper')
|
2
|
+
|
3
|
+
describe Ipizza::Provider::Nordea::AuthenticationResponse do
|
4
|
+
before(:each) do
|
5
|
+
@valid_params = {
|
6
|
+
"B02K_CUSTNAME" => "Demo kasutaja", "B02K_IDNBR" => "87654321", "B02K_TIMESTMP" => "20020101204145428720",
|
7
|
+
"B02K_STAMP" => "20101204155339", "B02K_KEYVERS" => "0001", "B02K_MAC" => "A061E22312D7D63FDC2B0B52E16BC971",
|
8
|
+
"B02K_CUSTTYPE" => "01", "B02K_ALG" => "01", "B02K_CUSTID" => "37404280367", "B02K_VERS" => "0002"
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#valid?' do
|
13
|
+
context 'given valid parameters' do
|
14
|
+
it 'returns true' do
|
15
|
+
@response = Ipizza::Provider::Nordea::AuthenticationResponse.new(@valid_params)
|
16
|
+
@response.verify(Ipizza::Provider::Nordea.file_key)
|
17
|
+
@response.valid?.should be_true
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#user_info' do
|
23
|
+
before(:each) do
|
24
|
+
@response = Ipizza::Provider::Nordea::AuthenticationResponse.new(@valid_params)
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'given valid parameters' do
|
28
|
+
before(:each) do
|
29
|
+
@response.verify(Ipizza::Provider::Nordea.file_key)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'returns hash containing user name' do
|
33
|
+
@response.user_info.fetch('name').should == 'Demo kasutaja'
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'returns hash containing user id' do
|
37
|
+
@response.user_info.fetch('custid').should == '37404280367'
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Ipizza::Provider::Nordea do
|
4
|
+
describe '#authentication_request' do
|
5
|
+
before(:each) do
|
6
|
+
@req = Ipizza::Provider::Nordea.new.authentication_request
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'returns signed authentication request object' do
|
10
|
+
@req.params.fetch('A01Y_MAC').should be
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'adds service url to request' do
|
14
|
+
@req.service_url.should == Ipizza::Provider::Nordea.auth_service_url
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'adds return url from configuration to request' do
|
18
|
+
@req.request_params.fetch('A01Y_RETLINK').should == Ipizza::Provider::Nordea.auth_return_url
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'adds cancel url from configuration to request' do
|
22
|
+
@req.request_params.fetch('A01Y_CANLINK').should == Ipizza::Provider::Nordea.auth_cancel_url
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'adds reject url from configuration to request' do
|
26
|
+
@req.request_params.fetch('A01Y_REJLINK').should == Ipizza::Provider::Nordea.auth_reject_url
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
|
3
|
+
describe Ipizza::Provider::Seb do
|
4
|
+
describe '#payment_request' do
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
@payment = Ipizza::Payment.new(:stamp => 1, :amount => '123.34', :refnum => 1, :message => 'Payment message', :currency => 'EUR')
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should sign the request' do
|
11
|
+
req = Ipizza::Provider::Seb.new.payment_request(@payment)
|
12
|
+
req.sign_params['VK_MAC'].should == 'aVCFvsLJiczQw9VoYMdtoQKj5fXkP8OI+JfQN8bFGKZGxC/X5gVIIi/Bh9AyB6JXwbeMOfUlnvuJIukpmBpDg3dEWkv4xGwKdfacqwYkgSC17OBb7VmZ+B4d6HYaO088wxH1FBSVa87HKFJ7ScTEJfd3ZEZly9WzTPHiFWvpRGDxAYtuO5nfGMcscxOQ0B0cbrIcLKvqLho25hIgns3+lvRDWsOb9lFH//7U8OBOC9SuXCBwvC4Fng3wqmBSKRJgAqvQ40Y4XpBGt3U/ix26Vs1cP8lOGHUyqzrqKbcmvqqhgWzqpa0JoK6im/MhBePyNnHVoC8Pqw4ZwZb4YrrPXw=='
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#payment_response' do
|
17
|
+
it 'should parse and verify the payment response from bank'
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#authentication_request' do
|
21
|
+
before(:each) do
|
22
|
+
Time.stub!(:now).and_return(Time.parse('Mar 30 1981'))
|
23
|
+
Date.stub!(:today).and_return(Date.parse('Mar 30 1981'))
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should sign the request' do
|
27
|
+
req = Ipizza::Provider::Seb.new.authentication_request
|
28
|
+
req.sign_params['VK_MAC'].should == '0ZBLzC3XddTNZ4YBNJlPsJ/RDK4g7Utot9L3lvaxD9J0dfKfN4FUnife3oAQjhyc8lOi5MeBdjekN5mW7KXEMcOSTR9kCJTLZcJg1nMHTDjZcLu9FTAk2wcSrc8kUgigh22vBA38wQfbsZvong5ETYanH8RchZUp72tmO2rFmKzdD8bsnubg6l3m5NxoFv+2F6RsxzwtpkCNaKBpIH4iyWIYFWX7H3hTiUWlAXwKp8GP8OYPr1wUDbP2jVxOwpv7MW3g/heKfu3INBSazsvD22WhsNeKPKmqjJDIiJvo5QRhYq5Shze28oWQyCixMfw2UW7pk0gOtYJkrlwEEo22zQ=='
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe '#authentication_response' do
|
33
|
+
before(:each) do
|
34
|
+
@params = {
|
35
|
+
'VK_TIME' => '00:56:37', 'VK_USER' => '', 'VK_INFO' => 'NIMI:tõõger , LeõpäöldžŽšŠ;ISIK:35511280268',
|
36
|
+
'VK_DATE' => '24.10.2010', 'VK_CHARSET' => 'UTF-8', 'VK_RETURN' => 'http://rkas-aktide-is.local/ipizza/auth',
|
37
|
+
'VK_LANG' => 'EST', 'VK_SERVICE'=>'3002', 'VK_RID' => '', 'VK_SND_ID' => 'EYP', 'VK_VERSION' => '008',
|
38
|
+
'VK_MAC' => 'BeYfkTTj9HNCoMSVbBHSYujFpdcPfo3Ee56ZwaHzYwLj3/QMsb3b5cA7Z1GjeW2VLIoWVtOZmjWN9N74NtH7mu0Nv3RUYep6DJcsZvejs9uklpCLFS1bzInGlQKh3Q04Vttss6dLxgoRJu7lT3hvPKUPHtBZ2RZMHByLuwqNqC4='
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should parse and verify the authentication response from bank' do
|
43
|
+
Ipizza::Provider::Seb.new.authentication_response(@params).should be_valid
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|