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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca17006779ad6c0d5b9bda06b03b39206539d23769be8e1eae50368dcc341195
4
- data.tar.gz: 25df4cf6175cf3b04053b16a7a99f8f27e36864bef6afe380a3baf2e1bd9ba79
3
+ metadata.gz: fc8df1c913135d394c9e4fd60d1d128e05b8ca2f98c9b05177edd1b6c266e875
4
+ data.tar.gz: a659f89f221724830985fd78574e02418dddf69f527bdb5333ec965a632ad4b6
5
5
  SHA512:
6
- metadata.gz: c19b050fec970e04fb6d681af3ae11d2eda01c42cde7ee8cc32cab784bda523f2967b4d175f6ceef84e35dc1376a26c7b063b2defac68c3a4711b41e02026331
7
- data.tar.gz: 161f31d14b80fdaeeebe6120104471295ada25d06ae28940914169188ee01a64dde5b7d5c66c8cc91bcb3caa5332aaab8965056236faff1df28a17796eafd4c4
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.34.1)
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 (2.0.0)
22
+ cloudwalk_handshake (1.21.3)
23
23
  funky-simplehttp (~> 0.6)
24
24
  docile (1.3.5)
25
- funky-emv (2.0.1)
26
- funky-tlv (~> 1.0)
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 (1.0.1)
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 (3.0.1)
36
- funky-emv (~> 2)
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.2.7
77
+ 2.4.22
data/Rakefile CHANGED
@@ -10,7 +10,7 @@ FileUtils.cd DA_FUNK_ROOT
10
10
 
11
11
  FILES = FileList[
12
12
  "lib/file_db.rb",
13
- "lib/zip.rb",
13
+ "lib/zip_ext.rb",
14
14
  "lib/da_funk/helper.rb",
15
15
 
16
16
  "lib/ext/kernel.rb",
@@ -1,4 +1,4 @@
1
1
  module DaFunk
2
- VERSION="3.34.1"
2
+ VERSION="3.35.0"
3
3
  end
4
4
 
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,9 @@
1
+ require 'iso8583/version'
2
+ require 'iso8583/exception'
3
+ require 'iso8583/util'
4
+ require 'iso8583/field'
5
+ require 'iso8583/codec'
6
+ require 'iso8583/fields'
7
+ require 'iso8583/bitmap'
8
+ require 'iso8583/file_parser'
9
+ require 'iso8583/message'
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
- Dir.glob(File.join(PROJECT_ROOT, 'lib', 'iso8583', '**', '*.rb')).each do |file|
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.1
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: 2021-05-29 00:00:00.000000000 Z
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/zip.rb
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.0.0
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
File without changes