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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca17006779ad6c0d5b9bda06b03b39206539d23769be8e1eae50368dcc341195
4
- data.tar.gz: 25df4cf6175cf3b04053b16a7a99f8f27e36864bef6afe380a3baf2e1bd9ba79
3
+ metadata.gz: de8ca99b3aae674b375e12c52ab06426f23f8ef3a5ba7ab82e7843c47ff748f1
4
+ data.tar.gz: 88ae97aa1149208e52635efaf5cfe239b7bf33387cdfb22c7f17f4caeed49ef3
5
5
  SHA512:
6
- metadata.gz: c19b050fec970e04fb6d681af3ae11d2eda01c42cde7ee8cc32cab784bda523f2967b4d175f6ceef84e35dc1376a26c7b063b2defac68c3a4711b41e02026331
7
- data.tar.gz: 161f31d14b80fdaeeebe6120104471295ada25d06ae28940914169188ee01a64dde5b7d5c66c8cc91bcb3caa5332aaab8965056236faff1df28a17796eafd4c4
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.1)
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 (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)
@@ -1,4 +1,4 @@
1
1
  module DaFunk
2
- VERSION="3.34.1"
2
+ VERSION="3.34.2"
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'
@@ -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.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: 2021-05-29 00:00:00.000000000 Z
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.0.0
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