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 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