da_funk 3.34.1 → 3.35.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 +4 -4
- data/Gemfile.lock +8 -8
- data/Rakefile +1 -1
- data/lib/da_funk/version.rb +1 -1
- data/lib/iso8583/field.rb +1 -1
- data/lib/iso8583.rb +9 -0
- data/out/da_funk.mrb +0 -0
- data/test/iso8583/field_test.rb +120 -0
- data/test/iso8583/minitest_helper.rb +1 -3
- metadata +7 -4
- /data/lib/{zip.rb → zip_ext.rb} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc8df1c913135d394c9e4fd60d1d128e05b8ca2f98c9b05177edd1b6c266e875
|
4
|
+
data.tar.gz: a659f89f221724830985fd78574e02418dddf69f527bdb5333ec965a632ad4b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb32068bfef4cc11bd390a1d39de685ade2620f5dc3727a3b2db0c71af2163561aa03d69d5a25da92a142ad3c5ff770b91d31289adabb93bc92e81584b425a83
|
7
|
+
data.tar.gz: 2879728419ece87c219bf8b3552af29d5c7d5631d1c1ffbb4054a32557557e8abe9ee10b2a1d45755ccb0bcd06e144f25dff1639cffe621281f3c39b16832f19
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
da_funk (3.
|
4
|
+
da_funk (3.35.0)
|
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)
|
@@ -74,4 +74,4 @@ DEPENDENCIES
|
|
74
74
|
yard
|
75
75
|
|
76
76
|
BUNDLED WITH
|
77
|
-
2.
|
77
|
+
2.4.22
|
data/Rakefile
CHANGED
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
data/out/da_funk.mrb
CHANGED
Binary file
|
@@ -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.
|
4
|
+
version: 3.35.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thiago Scalone
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-11-28 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
|
@@ -212,13 +213,14 @@ files:
|
|
212
213
|
- lib/iso8583/message.rb
|
213
214
|
- lib/iso8583/util.rb
|
214
215
|
- lib/iso8583/version.rb
|
215
|
-
- lib/
|
216
|
+
- lib/zip_ext.rb
|
216
217
|
- out/da_funk.mrb
|
217
218
|
- test/integration/getc_test.rb
|
218
219
|
- test/integration/mrb_eval_test.rb
|
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
|
@@ -262,7 +264,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
262
264
|
- !ruby/object:Gem::Version
|
263
265
|
version: '0'
|
264
266
|
requirements: []
|
265
|
-
rubygems_version: 3.
|
267
|
+
rubygems_version: 3.1.6
|
266
268
|
signing_key:
|
267
269
|
specification_version: 4
|
268
270
|
summary: MRuby Embedded System Framework
|
@@ -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
|
/data/lib/{zip.rb → zip_ext.rb}
RENAMED
File without changes
|