da_funk 3.34.1 → 3.34.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +7 -7
- data/lib/da_funk/version.rb +1 -1
- data/lib/iso8583/field.rb +1 -1
- data/lib/iso8583.rb +9 -0
- data/test/iso8583/field_test.rb +120 -0
- data/test/iso8583/minitest_helper.rb +1 -3
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de8ca99b3aae674b375e12c52ab06426f23f8ef3a5ba7ab82e7843c47ff748f1
|
4
|
+
data.tar.gz: 88ae97aa1149208e52635efaf5cfe239b7bf33387cdfb22c7f17f4caeed49ef3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9f3b410d3836639731694641b06a758ac722234e6853e4406341cdc22706d2e6ed3ba93b595366f224608e4df307b27d121c8889fbd3a57a22ad89d854434e42
|
7
|
+
data.tar.gz: 1e622d8dd132225d875074519a35148e3be325e86afd8672b409068b2aa95114649cc5dfea456a7c9dde1e1a9148eefc29bfff9820a304c58db85951b05ae51c
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
da_funk (3.34.
|
4
|
+
da_funk (3.34.2)
|
5
5
|
archive-zip (~> 0.5)
|
6
6
|
bundler
|
7
7
|
cloudwalk_handshake
|
@@ -19,21 +19,21 @@ GEM
|
|
19
19
|
cloudwalk (1.15.0)
|
20
20
|
bundler
|
21
21
|
rake
|
22
|
-
cloudwalk_handshake (
|
22
|
+
cloudwalk_handshake (1.21.3)
|
23
23
|
funky-simplehttp (~> 0.6)
|
24
24
|
docile (1.3.5)
|
25
|
-
funky-emv (
|
26
|
-
funky-tlv (~>
|
25
|
+
funky-emv (1.4.1)
|
26
|
+
funky-tlv (~> 0.2)
|
27
27
|
funky-mock (0.1.0)
|
28
28
|
funky-simplehttp (0.6.0)
|
29
|
-
funky-tlv (
|
29
|
+
funky-tlv (0.2.3)
|
30
30
|
io-like (0.3.1)
|
31
31
|
minitest (5.14.4)
|
32
32
|
parallel (1.19.2)
|
33
33
|
parser (2.7.2.0)
|
34
34
|
ast (~> 2.4.1)
|
35
|
-
posxml_parser (
|
36
|
-
funky-emv (~>
|
35
|
+
posxml_parser (2.26.0)
|
36
|
+
funky-emv (~> 1)
|
37
37
|
rainbow (3.0.0)
|
38
38
|
rake (13.0.1)
|
39
39
|
regexp_parser (1.8.2)
|
data/lib/da_funk/version.rb
CHANGED
data/lib/iso8583/field.rb
CHANGED
@@ -105,7 +105,7 @@ module ISO8583
|
|
105
105
|
def encode(value)
|
106
106
|
begin
|
107
107
|
encoded_value = codec.encode(value)
|
108
|
-
@data_length = value.size
|
108
|
+
@data_length = value.to_s.size
|
109
109
|
@byte_length = encoded_value.bytes.size
|
110
110
|
rescue ISO8583Exception => e
|
111
111
|
ContextLog.exception(e, e.backtrace, "#{e.message} (#{name})") if Object.const_defined?(:ContextLog)
|
data/lib/iso8583.rb
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
require_relative 'minitest_helper'
|
2
|
+
|
3
|
+
module ISO8583
|
4
|
+
class TestBCDField < Minitest::Test
|
5
|
+
def test_encode_bcd_field_odd_digits_length
|
6
|
+
bcd_field = ISO8583::BCDField.new
|
7
|
+
bcd_field.codec = ISO8583::Packed_Number
|
8
|
+
bcd_field.length = 15
|
9
|
+
bcd_field.padding = ->(value, bcd_byte_length) { [value.unpack1('H*').rjust((bcd_byte_length * 2), '0')].pack('H*').force_encoding('ASCII-8BIT') }
|
10
|
+
|
11
|
+
value = 1235678910234
|
12
|
+
assert_equal(String.new("\x00\x01#Vx\x91\x024", encoding: 'ASCII-8BIT'), bcd_field.encode(value))
|
13
|
+
assert_equal(String.new("\x00\x01#Vx\x91\x024", encoding: 'ASCII-8BIT'), bcd_field.encode(value.to_s))
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_encode_bcd_field_even_digits_length
|
17
|
+
bcd_field = ISO8583::BCDField.new
|
18
|
+
bcd_field.codec = ISO8583::Packed_Number
|
19
|
+
bcd_field.length = 14
|
20
|
+
bcd_field.padding = ->(value, bcd_byte_length) { [value.unpack1('H*').rjust((bcd_byte_length * 2), '0')].pack('H*').force_encoding('ASCII-8BIT') }
|
21
|
+
|
22
|
+
value = 123567891023
|
23
|
+
assert_equal(String.new("\x00\x125g\x89\x10#", encoding: 'ASCII-8BIT'), bcd_field.encode(value))
|
24
|
+
assert_equal(String.new("\x00\x125g\x89\x10#", encoding: 'ASCII-8BIT'), bcd_field.encode(value.to_s))
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_encode_bcd_field_with_arity1_padding
|
28
|
+
bcd_field = ISO8583::BCDField.new
|
29
|
+
bcd_field.codec = ISO8583::Packed_Number
|
30
|
+
bcd_field.length = 14
|
31
|
+
bcd_field.padding = ->(value) { [value.unpack1('H*').rjust(14, '0')].pack('H*').force_encoding('ASCII-8BIT') }
|
32
|
+
|
33
|
+
value = 123567891023
|
34
|
+
assert_equal(String.new("\x00\x125g\x89\x10#", encoding: 'ASCII-8BIT'), bcd_field.encode(value))
|
35
|
+
assert_equal(String.new("\x00\x125g\x89\x10#", encoding: 'ASCII-8BIT'), bcd_field.encode(value.to_s))
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_raise_ISO8583Exception_if_length_is_greater_than_provided_length_value
|
39
|
+
bcd_field = ISO8583::BCDField.new
|
40
|
+
bcd_field.codec = ISO8583::Packed_Number
|
41
|
+
bcd_field.length = 14
|
42
|
+
bcd_field.padding = ->(value, bcd_byte_length) { [value.unpack1('H*').rjust((bcd_byte_length * 2), '0')].pack('H*').force_encoding('ASCII-8BIT') }
|
43
|
+
|
44
|
+
value = '1235678910234000'
|
45
|
+
expected_error_message = "Too long: #{value} (bcd_field)! length=#{bcd_field.length / 2}"
|
46
|
+
assert_raises(ISO8583::ISO8583Exception, expected_error_message) { bcd_field.encode(value) }
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_raise_ISO8583Exception_if_length_is_less_than_provided_length_value_without_padding
|
50
|
+
bcd_field = ISO8583::BCDField.new
|
51
|
+
bcd_field.codec = ISO8583::Packed_Number
|
52
|
+
bcd_field.length = 14
|
53
|
+
|
54
|
+
value = '123567891023'
|
55
|
+
expected_error_message = "Too short: #{value} (bcd_field)! length=#{bcd_field.length / 2}"
|
56
|
+
assert_raises(ISO8583::ISO8583Exception, expected_error_message) { bcd_field.encode(value) }
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_encode_bcd_field_with_variable_length_padding
|
60
|
+
lvar_bcd_field = Field.new
|
61
|
+
lvar_bcd_field.codec = ISO8583::Packed_Number
|
62
|
+
|
63
|
+
bcd_length_codec = Codec.new
|
64
|
+
bcd_length_codec.encoder = lvar_bcd_field.codec.encoder
|
65
|
+
bcd_length_codec.decoder = lambda { |value|
|
66
|
+
byte_size = value.unpack1('H*').to_i(16)
|
67
|
+
byte_size += 1 if byte_size.odd?
|
68
|
+
byte_size / 2
|
69
|
+
}
|
70
|
+
|
71
|
+
bcd_length = Field.new
|
72
|
+
bcd_length.name = 'bcd_length'
|
73
|
+
bcd_length.length = 1
|
74
|
+
bcd_length.codec = bcd_length_codec
|
75
|
+
|
76
|
+
lvar_bcd_field.length = bcd_length
|
77
|
+
|
78
|
+
value = '00123567891023'
|
79
|
+
bcd_size = [(value.length / 2).to_s.rjust(2, '0')].pack('H*')
|
80
|
+
|
81
|
+
assert_equal(String.new("#{bcd_size}\x00\x125g\x89\x10#", encoding: 'ASCII-8BIT'), lvar_bcd_field.encode(value))
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_raise_ISO8583Exception_if_variable_length_field_is_greater_than_max
|
85
|
+
lvar_bcd_field = Field.new
|
86
|
+
lvar_bcd_field.codec = ISO8583::Packed_Number
|
87
|
+
|
88
|
+
bcd_length_codec = Codec.new
|
89
|
+
bcd_length_codec.encoder = lvar_bcd_field.codec.encoder
|
90
|
+
bcd_length_codec.decoder = lambda { |value|
|
91
|
+
byte_size = value.unpack1('H*').to_i(16)
|
92
|
+
byte_size += 1 if byte_size.odd?
|
93
|
+
byte_size / 2
|
94
|
+
}
|
95
|
+
|
96
|
+
bcd_length = Field.new
|
97
|
+
bcd_length.name = 'bcd_length'
|
98
|
+
bcd_length.length = 1
|
99
|
+
bcd_length.codec = bcd_length_codec
|
100
|
+
|
101
|
+
lvar_bcd_field.length = bcd_length
|
102
|
+
lvar_bcd_field.max = 6
|
103
|
+
|
104
|
+
value = '00123567891023'
|
105
|
+
|
106
|
+
expected_error_message = "Max length exceeded: #{value}, max: #{lvar_bcd_field.max}"
|
107
|
+
assert_raises(ISO8583::ISO8583Exception, expected_error_message) { lvar_bcd_field.encode(value) }
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_raise_ISO8583Exception_if_invalid_length_field_value_class
|
111
|
+
bcd_field = ISO8583::BCDField.new
|
112
|
+
bcd_field.codec = ISO8583::Packed_Number
|
113
|
+
bcd_field.length = '14asa'
|
114
|
+
|
115
|
+
value = '123567891023'
|
116
|
+
expected_error_message = "Invalid length (#{bcd_field.length}) for 'bcd_field' field"
|
117
|
+
assert_raises(ISO8583::ISO8583Exception, expected_error_message) { bcd_field.encode(value) }
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
@@ -6,6 +6,4 @@ end
|
|
6
6
|
require 'byebug'
|
7
7
|
require 'minitest/autorun'
|
8
8
|
PROJECT_ROOT = File.join(File.dirname(File.expand_path(__FILE__)), '..', '..')
|
9
|
-
|
10
|
-
require file
|
11
|
-
end
|
9
|
+
require File.join(PROJECT_ROOT, 'lib', 'iso8583.rb')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: da_funk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.34.
|
4
|
+
version: 3.34.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thiago Scalone
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -203,6 +203,7 @@ files:
|
|
203
203
|
- lib/ext/nil.rb
|
204
204
|
- lib/ext/string.rb
|
205
205
|
- lib/file_db.rb
|
206
|
+
- lib/iso8583.rb
|
206
207
|
- lib/iso8583/bitmap.rb
|
207
208
|
- lib/iso8583/codec.rb
|
208
209
|
- lib/iso8583/exception.rb
|
@@ -219,6 +220,7 @@ files:
|
|
219
220
|
- test/integration/notification_test.rb
|
220
221
|
- test/integration/params_dat_test.rb
|
221
222
|
- test/iso8583/bitmap_test.rb
|
223
|
+
- test/iso8583/field_test.rb
|
222
224
|
- test/iso8583/message_test.rb
|
223
225
|
- test/iso8583/minitest_helper.rb
|
224
226
|
- test/resources/shared/bitmap.dat
|
@@ -247,7 +249,7 @@ homepage: http://github.com/cloudwalkio/da_funk
|
|
247
249
|
licenses:
|
248
250
|
- MIT
|
249
251
|
metadata: {}
|
250
|
-
post_install_message:
|
252
|
+
post_install_message:
|
251
253
|
rdoc_options: []
|
252
254
|
require_paths:
|
253
255
|
- lib
|
@@ -262,8 +264,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
262
264
|
- !ruby/object:Gem::Version
|
263
265
|
version: '0'
|
264
266
|
requirements: []
|
265
|
-
rubygems_version: 3.
|
266
|
-
signing_key:
|
267
|
+
rubygems_version: 3.1.6
|
268
|
+
signing_key:
|
267
269
|
specification_version: 4
|
268
270
|
summary: MRuby Embedded System Framework
|
269
271
|
test_files:
|
@@ -272,6 +274,7 @@ test_files:
|
|
272
274
|
- test/integration/notification_test.rb
|
273
275
|
- test/integration/params_dat_test.rb
|
274
276
|
- test/iso8583/bitmap_test.rb
|
277
|
+
- test/iso8583/field_test.rb
|
275
278
|
- test/iso8583/message_test.rb
|
276
279
|
- test/iso8583/minitest_helper.rb
|
277
280
|
- test/resources/shared/bitmap.dat
|