da_funk 3.34.1 → 3.34.2
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 +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
|