ipizza 2.0.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 2d02b88f8dee566651de91c705c95c91e586d1de
4
- data.tar.gz: 05caaaaa4d249c3ae8ffed1809cc6474254886ec
2
+ SHA256:
3
+ metadata.gz: 160c73db6da0b92bb8d59f3478ae2836a8efdfe57cbfe174a0715559a980273a
4
+ data.tar.gz: 40486a43f105c5ee73fb7d3f4e827124f7bff5cb8fb1bfa93c2fca677c06f9c7
5
5
  SHA512:
6
- metadata.gz: c1ce76b70d0e5e1e8ba12fb81e37904649533f7afad1dddb8f3faf875491099595e1c835de1353a29fa490c10b579ff93a7420635e6a8aaae6b5cc4c4e9a9100
7
- data.tar.gz: 7a482f0d83491fc29ef7aa8bdd39d1d35dbfd3b6744a6a01df35ae3616d31a683f4979bb777b7354435e8fd99e4836ac56beefedd871d3725f6c4a6c4bd76990
6
+ metadata.gz: 173c0fd63f8e5c43c099a9871005db2bc83272455eb56c10c9c01fabb4a2ab2c42925d490f9608332aca2916ef172ef81bc204ae9f211d9a357a3a4989581f43
7
+ data.tar.gz: b702c29a1c3ccf89a46a10828c3911ab9d7d9880d43e79387ff4e5cd6284aabe83dcb81c28f65c19f484550f018c2fb93261b0e7a7939ed04c587a76a00ed2be
data/ipizza.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.homepage = 'https://github.com/Voog/ipizza'
12
12
  s.summary = 'Implements iPizza protocol to communicate with Estonian Banks'
13
13
  s.description = 'Simplifies generating payment requests and parsing responses from banks when using iPizza protocol.'
14
-
14
+
15
15
  s.add_development_dependency 'rspec', '~> 2.9.0'
16
16
  s.add_development_dependency 'guard-rspec'
17
17
  s.add_development_dependency 'rb-fsevent'
data/lib/ipizza/config.rb CHANGED
@@ -8,10 +8,10 @@ module Ipizza
8
8
 
9
9
  def load_from_file(yaml_path)
10
10
  @certs_root = File.dirname(yaml_path)
11
-
11
+
12
12
  load_from_hash(YAML::load_file(yaml_path))
13
13
  end
14
-
14
+
15
15
  def load_from_hash(config)
16
16
  config.each do |bank, params|
17
17
  params.each do |param, value|
@@ -21,19 +21,19 @@ module Ipizza
21
21
  end
22
22
  end
23
23
  end
24
-
24
+
25
25
  def configure
26
26
  yield self
27
27
  end
28
-
28
+
29
29
  def method_missing(m, *args)
30
- if /^(lhv|swedbank|seb|sampo|krediidipank|nordea)_(.*)=$/ =~ m.to_s
30
+ if /^(lhv|swedbank|seb|sampo|krediidipank|nordea|luminor)_(.*)=$/ =~ m.to_s
31
31
  clz = Ipizza::Provider.const_get($1.capitalize)
32
32
  key = $2
33
33
  value = args.first
34
-
34
+
35
35
  value = load_certificate(value) if /^file_(cert|key)/ =~ key
36
-
36
+
37
37
  if clz.respond_to?(:"#{key}=")
38
38
  return clz.send(:"#{key}=", *[value])
39
39
  end
@@ -41,23 +41,23 @@ module Ipizza
41
41
 
42
42
  super
43
43
  end
44
-
44
+
45
45
  private
46
-
46
+
47
47
  def load_certificate(file_path)
48
48
  if File.exist?(file_path)
49
49
  file_path
50
50
  else
51
51
  file_path = File.expand_path(File.join(certs_root, file_path))
52
52
  end
53
-
53
+
54
54
  if File.exist?(file_path)
55
55
  file_path
56
56
  else
57
57
  raise "Could not load certificate from file '#{file_path}'"
58
58
  end
59
59
  end
60
-
60
+
61
61
  end
62
62
  end
63
63
  end
@@ -0,0 +1,4 @@
1
+ module Ipizza::Provider
2
+ class Luminor < Ipizza::Provider::Base
3
+ end
4
+ end
@@ -1,77 +1,4 @@
1
1
  module Ipizza::Provider
2
-
3
- # TODO: configure whether use sha-1 or md5 for signing and verification
4
- class Nordea
5
-
6
- require 'ipizza/provider/nordea/payment_request'
7
- require 'ipizza/provider/nordea/payment_response'
8
- require 'ipizza/provider/nordea/authentication_request'
9
- require 'ipizza/provider/nordea/authentication_response'
10
-
11
- class << self
12
- attr_accessor :payments_service_url, :payments_return_url, :payments_reject_url, :payments_cancel_url
13
- attr_accessor :payments_rcv_id, :payments_language
14
- attr_accessor :auth_service_url, :auth_return_url, :auth_reject_url, :auth_cancel_url, :auth_language
15
- attr_accessor :auth_rcv_id
16
- attr_accessor :file_key, :rcv_account, :rcv_name, :confirm, :keyvers
17
- end
18
-
19
- def payment_request(payment, service = 1002)
20
- req = Ipizza::Provider::Nordea::PaymentRequest.new
21
- req.service_url = self.class.payments_service_url
22
- req.params = {
23
- 'VERSION' => '0003',
24
- 'STAMP' => payment.stamp,
25
- 'RCV_ID' => self.class.payments_rcv_id,
26
- # 'RCV_ACCOUNT' => self.rcv_account,
27
- # 'RCV_NAME' => self.rcv_name,
28
- 'LANGUAGE' => self.class.payments_language,
29
- 'AMOUNT' => sprintf('%.2f', payment.amount),
30
- 'REF' => Ipizza::Util.sign_731(payment.refnum),
31
- 'DATE' => 'EXPRESS',
32
- 'MSG' => payment.message,
33
- 'CONFIRM' => self.class.confirm,
34
- 'CUR' => payment.currency,
35
- 'KEYVERS' => self.class.keyvers,
36
- 'REJECT' => self.class.payments_reject_url,
37
- 'RETURN' => self.class.payments_return_url,
38
- 'CANCEL' => self.class.payments_cancel_url
39
- }
40
-
41
- req.sign(self.class.file_key)
42
- req
43
- end
44
-
45
- def payment_response(params)
46
- response = Ipizza::Provider::Nordea::PaymentResponse.new(params)
47
- response.verify(self.class.file_key)
48
- return response
49
- end
50
-
51
- def authentication_request
52
- req = Ipizza::Provider::Nordea::AuthenticationRequest.new
53
- req.service_url = self.class.auth_service_url
54
- req.params = {
55
- 'ACTION_ID' => '701',
56
- 'VERS' => '0002',
57
- 'RCVID' => self.class.auth_rcv_id,
58
- 'LANGCODE' => self.class.auth_language,
59
- 'STAMP' => Time.now.strftime('%Y%m%d%H%M%S'),
60
- 'IDTYPE' => '02',
61
- 'KEYVERS' => self.class.keyvers,
62
- 'RETLINK' => self.class.auth_return_url,
63
- 'CANLINK' => self.class.auth_cancel_url,
64
- 'REJLINK' => self.class.auth_reject_url,
65
- 'ALG' => '01'
66
- }
67
- req.sign(self.class.file_key)
68
- req
69
- end
70
-
71
- def authentication_response(params)
72
- response = Ipizza::Provider::Nordea::AuthenticationResponse.new(params)
73
- response.verify(self.class.file_key)
74
- return response
75
- end
2
+ class Nordea < Ipizza::Provider::Base
76
3
  end
77
4
  end
@@ -14,8 +14,8 @@ module Ipizza
14
14
  Ipizza::Provider::Sampo.new
15
15
  when 'krep', 'krediidipank'
16
16
  Ipizza::Provider::Krediidipank.new
17
- when 'nordea'
18
- Ipizza::Provider::Nordea.new
17
+ when 'luminor', 'testluminor'
18
+ Ipizza::Provider::Luminor.new
19
19
  end
20
20
  end
21
21
  end
@@ -1,3 +1,3 @@
1
1
  module Ipizza
2
- VERSION = '2.0.1'
2
+ VERSION = '2.1.0'
3
3
  end
data/lib/ipizza.rb CHANGED
@@ -16,3 +16,4 @@ require 'ipizza/provider/seb'
16
16
  require 'ipizza/provider/sampo'
17
17
  require 'ipizza/provider/krediidipank'
18
18
  require 'ipizza/provider/nordea'
19
+ require 'ipizza/provider/luminor'
@@ -0,0 +1,18 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIC+jCCAeICCQDuCELf8TcV7DANBgkqhkiG9w0BAQsFADA/MQswCQYDVQQGEwJF
3
+ RTEOMAwGA1UECAwFVGFydHUxDjAMBgNVBAcMBVRhcnR1MRAwDgYDVQQKDAdNaWxl
4
+ ZWRpMB4XDTIwMTIwMzA5NDkxMloXDTI1MTIwMTA5NDkxMlowPzELMAkGA1UEBhMC
5
+ RUUxDjAMBgNVBAgMBVRhcnR1MQ4wDAYDVQQHDAVUYXJ0dTEQMA4GA1UECgwHTWls
6
+ ZWVkaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALmozE2DIZyCddrW
7
+ AVoVkNWYRYDytAi5lefa5+PEAQLGFzzfTBRnClla/Qerfe4NBGjyiwu8W6VeLGQ9
8
+ +GGDw5uEQumII2t0f1vpKWiauyfM+MlSOB6cobf9bwlgs9gBss/PEAa8E4MhpS60
9
+ p7KNfR1qcq3AWgxpjE9ns7KheARW1q0vNZFzPkONyleZ4HJIC8rlta38/VMvbPnp
10
+ PLbMnVOvrOsxeDMCgGpD9hupxVsFnhsv/Y4F14W7f4XHl36FhDjP8dkrgrkQE4E1
11
+ dRnxx6GC4Lv71rQDu+gmgyKtZWmsym1b1Tzw3aCF27J1EReHvCxtkDfMH1VzQSad
12
+ FGF4yXsCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAQfs7p7MLZqtm9QxBkGcYALDw
13
+ q/f+5b+n1uPdFcXu8K26hG6RiVZTXUJrIqR71kGLG0mBJ3V6+vAM9gjsUJs20uiZ
14
+ qvdV2xQglTpJlNTG4Je3Sq4Lbyz4w+8e9VVrE3atfARHxA5FIewCviJNdXS+xeuh
15
+ GqKaGqLSf4sJlbe3hE69hzlDXmzUE+/OhoaSPS3zFAzcp9m50o7InhYy80eKDRFS
16
+ hBIDbLnyzb+97If9BMOhqQ/nfCrsX6TiTiqhIFB+qNSIZt733fx9AD3AwSxM51RC
17
+ V232swdtXx9d39S/DskhMkXkOiqpr+0P87Qyy8Y0/FoWO57i/jXb0uCccPatdw==
18
+ -----END CERTIFICATE-----
@@ -0,0 +1,17 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIICnzCCAYegAwIBAgIBATANBgkqhkiG9w0BAQUFADATMREwDwYDVQQDDAhCYW5r
3
+ bGluazAeFw0yMDEyMDMxMDUwNDJaFw0yMjEyMDMxMDUwNDJaMBMxETAPBgNVBAMM
4
+ CEJhbmtsaW5rMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgI7m13+Z
5
+ 2B3aBtXE4/2YmsG9koPpD7RHj5B7uEozBCNM1MhfYoE7R7vP1tPm7lD/oJxKk0G3
6
+ gpODtGDqo+kMfI+TlJ/w2KzwS5YPEop7aliEQ1bbwjjjY2tXYwsBYa0uRvkbwizH
7
+ lp3PHmr4DBl+JxyETIWGX623nZxZcHAvwcM6VpTtd9+KEpgToQ2gPHHj4/svQfwm
8
+ mzhdEwFZjwjCaOEHssaUcLsyvKVoJ5OJqBWS1e0mVqWsuJJJnkeG7NVXY2LWDDfP
9
+ iGogVz9hqqxfNKhCTLGMCG8k8VDQdLTaR+vvmXSUBLh+4TbFA7ZPLSvgbRu3995F
10
+ CCY/wADRophRVQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQAcTtcH4m//FyGrNC2h
11
+ rcry6wt843xclEkLQSSNGz9wVCQW/D8I0VNjFPk4PgoUh4bTr+mKrZ6UrrIwBuO6
12
+ oFj2Nh+Y1wgkpd3LMKae5DvWLE4taZ4ylBGSUXOpQ062+pOtUldZQxBiczaUJWm4
13
+ 4Ns+27Zi5oGyTNnlZXfguEnt54KA+63S4aiHWUSaaXkRN62LeNuyrX0ZdITEfTaz
14
+ 0ZvVcn6FbL6OnsqoZn2MF9+xZfMqlu/K5HfGl928v0fzY8/jQygxUoGFIBfxhn46
15
+ NniPM9xtnPSu11ut1n0PQPP8K94+MUJz7GDw9o9z3X0zgy8SOFSpY8HNp0MEjN7l
16
+ MT8n
17
+ -----END CERTIFICATE-----
@@ -42,6 +42,17 @@ seb:
42
42
  encoding: UTF-8
43
43
  snd_id: sender
44
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
52
+ key_secret: foobar
53
+ encoding: UTF-8
54
+ snd_id: sender
55
+
45
56
  nordea:
46
57
  payments_service_url: https://netbank.nordea.com/pnbepaytest/epayn.jsp
47
58
  payments_return_url: http://test.local/nordea
@@ -0,0 +1,89 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Ipizza::Provider::Luminor do
4
+ let(:response_time) { Ipizza::Util.time_to_iso8601(Time.now) }
5
+ let(:bank_key) { File.expand_path('../../../certificates/pangalink_luminor_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::Luminor.new.payment_request(payment)
17
+ params = {
18
+ 'VK_SERVICE' => '1012',
19
+ 'VK_VERSION' => '008',
20
+ 'VK_SND_ID' => Ipizza::Provider::Luminor.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::Luminor.return_url,
27
+ 'VK_CANCEL' => Ipizza::Provider::Luminor.cancel_url,
28
+ 'VK_DATETIME' => Ipizza::Util.time_to_iso8601(Time.now)
29
+ }
30
+ signature = Ipizza::Util.sign(Ipizza::Provider::Luminor.file_key, Ipizza::Provider::Luminor.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' => 'LUMINOR', '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::Luminor.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::Luminor.new.authentication_request
61
+ params = {
62
+ 'VK_SERVICE' => '4011',
63
+ 'VK_VERSION' => '008',
64
+ 'VK_SND_ID' => Ipizza::Provider::Luminor.snd_id,
65
+ 'VK_RETURN' => Ipizza::Provider::Luminor.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::Luminor.file_key, Ipizza::Provider::Luminor.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' => 'LUMINOR', '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::Luminor.new.authentication_response(params.merge('VK_MAC' => signature)).should be_valid
87
+ end
88
+ end
89
+ end
@@ -9,11 +9,11 @@ describe Ipizza::Provider do
9
9
  it 'returns swedbank provider for "swedbank" attribute' do
10
10
  Ipizza::Provider.get('swedbank').should be_a(Ipizza::Provider::Swedbank)
11
11
  end
12
-
12
+
13
13
  it 'returns swedbank provider for "hp" attribute' do
14
14
  Ipizza::Provider.get('hp').should be_a(Ipizza::Provider::Swedbank)
15
15
  end
16
-
16
+
17
17
  it 'returns seb provider for "eyp" attribute' do
18
18
  Ipizza::Provider.get('eyp').should be_a(Ipizza::Provider::Seb)
19
19
  end
@@ -22,6 +22,14 @@ describe Ipizza::Provider do
22
22
  Ipizza::Provider.get('seb').should be_a(Ipizza::Provider::Seb)
23
23
  end
24
24
 
25
+ it 'returns luminor provider for "luminor" attribute' do
26
+ Ipizza::Provider.get('luminor').should be_a(Ipizza::Provider::Luminor)
27
+ end
28
+
29
+ it 'returns luminor provider for "testluminor" attribute' do
30
+ Ipizza::Provider.get('luminor').should be_a(Ipizza::Provider::Luminor)
31
+ end
32
+
25
33
  it 'returns sampo provider for "sampo" attribute' do
26
34
  Ipizza::Provider.get('sampo').should be_a(Ipizza::Provider::Sampo)
27
35
  end
@@ -33,11 +41,11 @@ describe Ipizza::Provider do
33
41
  it 'returns krediidipank provider for "krep" attribute' do
34
42
  Ipizza::Provider.get('krep').should be_a(Ipizza::Provider::Krediidipank)
35
43
  end
36
-
44
+
37
45
  it 'returns krediidipank provider for "krediidipank" attribute' do
38
46
  Ipizza::Provider.get('krediidipank').should be_a(Ipizza::Provider::Krediidipank)
39
47
  end
40
-
48
+
41
49
  it 'returns nordea provider for "nordea" attribute' do
42
50
  Ipizza::Provider.get('nordea').should be_a(Ipizza::Provider::Nordea)
43
51
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ipizza
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Priit Haamer
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-12 00:00:00.000000000 Z
12
+ date: 2021-09-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -98,6 +98,7 @@ files:
98
98
  - lib/ipizza/provider/base.rb
99
99
  - lib/ipizza/provider/krediidipank.rb
100
100
  - lib/ipizza/provider/lhv.rb
101
+ - lib/ipizza/provider/luminor.rb
101
102
  - lib/ipizza/provider/nordea.rb
102
103
  - lib/ipizza/provider/nordea/authentication_request.rb
103
104
  - lib/ipizza/provider/nordea/authentication_response.rb
@@ -120,6 +121,8 @@ files:
120
121
  - spec/certificates/pangalink_lhv_bank_cert.pem
121
122
  - spec/certificates/pangalink_lhv_bank_key.pem
122
123
  - spec/certificates/pangalink_lhv_user_key.pem
124
+ - spec/certificates/pangalink_luminor_bank.cert.pem
125
+ - spec/certificates/pangalink_luminor_bank_cert.pem
123
126
  - spec/certificates/pangalink_seb_bank_cert.pem
124
127
  - spec/certificates/pangalink_seb_bank_key.pem
125
128
  - spec/certificates/pangalink_seb_user_key.pem
@@ -132,6 +135,7 @@ files:
132
135
  - spec/ipizza/config_spec.rb
133
136
  - spec/ipizza/provider/krediidipank_spec.rb
134
137
  - spec/ipizza/provider/lhv_spec.rb
138
+ - spec/ipizza/provider/luminor_spec.rb
135
139
  - spec/ipizza/provider/nordea/authentication_response_spec.rb
136
140
  - spec/ipizza/provider/nordea/payment_request_spec.rb
137
141
  - spec/ipizza/provider/nordea/payment_response_spec.rb
@@ -161,8 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
161
165
  - !ruby/object:Gem::Version
162
166
  version: '0'
163
167
  requirements: []
164
- rubyforge_project:
165
- rubygems_version: 2.2.2
168
+ rubygems_version: 3.0.3
166
169
  signing_key:
167
170
  specification_version: 4
168
171
  summary: Implements iPizza protocol to communicate with Estonian Banks
@@ -177,6 +180,8 @@ test_files:
177
180
  - spec/certificates/pangalink_lhv_bank_cert.pem
178
181
  - spec/certificates/pangalink_lhv_bank_key.pem
179
182
  - spec/certificates/pangalink_lhv_user_key.pem
183
+ - spec/certificates/pangalink_luminor_bank.cert.pem
184
+ - spec/certificates/pangalink_luminor_bank_cert.pem
180
185
  - spec/certificates/pangalink_seb_bank_cert.pem
181
186
  - spec/certificates/pangalink_seb_bank_key.pem
182
187
  - spec/certificates/pangalink_seb_user_key.pem
@@ -189,6 +194,7 @@ test_files:
189
194
  - spec/ipizza/config_spec.rb
190
195
  - spec/ipizza/provider/krediidipank_spec.rb
191
196
  - spec/ipizza/provider/lhv_spec.rb
197
+ - spec/ipizza/provider/luminor_spec.rb
192
198
  - spec/ipizza/provider/nordea/authentication_response_spec.rb
193
199
  - spec/ipizza/provider/nordea/payment_request_spec.rb
194
200
  - spec/ipizza/provider/nordea/payment_response_spec.rb