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