From 66fdd68b4c1e62dd9e22dafa9b54c75925ba83c0 Mon Sep 17 00:00:00 2001 From: Lily Date: Sat, 2 Apr 2022 18:32:01 +0300 Subject: [PATCH 1/6] Update regex used for Faker::Vehicle#vin Old regex generated I, O and Q characters inside string, which creates an invalid vin. --- lib/faker/default/vehicle.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/faker/default/vehicle.rb b/lib/faker/default/vehicle.rb index 97fa3813d9..831951ea77 100644 --- a/lib/faker/default/vehicle.rb +++ b/lib/faker/default/vehicle.rb @@ -9,7 +9,7 @@ class Vehicle < Base VIN_LETTERS = 'ABCDEFGHJKLMNPRSTUVWXYZ' VIN_MAP = '0123456789X' VIN_WEIGHTS = '8765432X098765432' - VIN_REGEX = /^[A-Z0-9]{3}[A-Z0-9]{5}[A-Z0-9]{1}[A-Z0-9]{1}[A-Z0-0]{1}[A-Z0-9]{1}\d{5}$/.freeze + VIN_REGEX = /^([A-HJ-NPS-Z0-9]){3}[A-HJ-NPS-Z0-9]{5}[A-HJ-NPS-Z0-9]{1}[A-HJ-NPS-Z0-9]{1}[A-HJ-NPS-Z0-0]{1}[A-HJ-NPS-Z0-9]{1}\d{5}$/.freeze SG_CHECKSUM_WEIGHTS = [3, 14, 2, 12, 2, 11, 1].freeze SG_CHECKSUM_CHARS = 'AYUSPLJGDBZXTRMKHEC' From 27a6346c2c7f54a905be04bc51374070b378c8ca Mon Sep 17 00:00:00 2001 From: Lily Date: Mon, 4 Apr 2022 14:48:55 +0300 Subject: [PATCH 2/6] Add new VALIDITY_MATCH constant in Faker::Vehicle's test file --- test/faker/default/test_faker_vehicle.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/test/faker/default/test_faker_vehicle.rb b/test/faker/default/test_faker_vehicle.rb index 2958df6acc..14a254fea4 100644 --- a/test/faker/default/test_faker_vehicle.rb +++ b/test/faker/default/test_faker_vehicle.rb @@ -4,6 +4,7 @@ class TestFakerVehicle < Test::Unit::TestCase WORD_MATCH = /\w+\.?/.freeze + VALIDITY_MATCH = /^([A-HJ-NPS-Z0-9])/.freeze def setup @tester = Faker::Vehicle From 5f6094533b8947169c5eb8c60cc0b0c2ce430670 Mon Sep 17 00:00:00 2001 From: Lily Date: Mon, 4 Apr 2022 14:49:14 +0300 Subject: [PATCH 3/6] Create new test case to ensure validity of Faker::Vehicle#vin --- test/faker/default/test_faker_vehicle.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/faker/default/test_faker_vehicle.rb b/test/faker/default/test_faker_vehicle.rb index 14a254fea4..2a9619cd4f 100644 --- a/test/faker/default/test_faker_vehicle.rb +++ b/test/faker/default/test_faker_vehicle.rb @@ -14,6 +14,10 @@ def test_vin assert_match Faker::Vehicle::VIN_REGEX, @tester.vin end + def test_vin_validity + assert_mach VALIDITY_MATCH, @tester.vin + end + def test_manufacture assert_match WORD_MATCH, @tester.manufacture end From be22862c13bf10c9da80d50e66f479cc6a3139b6 Mon Sep 17 00:00:00 2001 From: Lily Date: Mon, 4 Apr 2022 14:54:59 +0300 Subject: [PATCH 4/6] Fix typo in Faker::Vehicle test file --- test/faker/default/test_faker_vehicle.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/faker/default/test_faker_vehicle.rb b/test/faker/default/test_faker_vehicle.rb index 2a9619cd4f..c90d3af0ac 100644 --- a/test/faker/default/test_faker_vehicle.rb +++ b/test/faker/default/test_faker_vehicle.rb @@ -15,7 +15,7 @@ def test_vin end def test_vin_validity - assert_mach VALIDITY_MATCH, @tester.vin + assert_match VALIDITY_MATCH, @tester.vin end def test_manufacture From d975a7416dc167acf3830fd50d12a15f4f967342 Mon Sep 17 00:00:00 2001 From: Lily Date: Mon, 4 Apr 2022 15:00:58 +0300 Subject: [PATCH 5/6] Update VIN_REGEX Old regex was skipping the 'R' character when generating vins --- lib/faker/default/vehicle.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/faker/default/vehicle.rb b/lib/faker/default/vehicle.rb index 831951ea77..2c72b6b8f7 100644 --- a/lib/faker/default/vehicle.rb +++ b/lib/faker/default/vehicle.rb @@ -9,7 +9,7 @@ class Vehicle < Base VIN_LETTERS = 'ABCDEFGHJKLMNPRSTUVWXYZ' VIN_MAP = '0123456789X' VIN_WEIGHTS = '8765432X098765432' - VIN_REGEX = /^([A-HJ-NPS-Z0-9]){3}[A-HJ-NPS-Z0-9]{5}[A-HJ-NPS-Z0-9]{1}[A-HJ-NPS-Z0-9]{1}[A-HJ-NPS-Z0-0]{1}[A-HJ-NPS-Z0-9]{1}\d{5}$/.freeze + VIN_REGEX = /^([A-HJ-NPR-Z0-9]){3}[A-HJ-NPR-Z0-9]{5}[A-HJ-NPR-Z0-9]{1}[A-HJ-NPR-Z0-9]{1}[A-HJ-NPR-Z0-0]{1}[A-HJ-NPR-Z0-9]{1}\d{5}$/.freeze SG_CHECKSUM_WEIGHTS = [3, 14, 2, 12, 2, 11, 1].freeze SG_CHECKSUM_CHARS = 'AYUSPLJGDBZXTRMKHEC' From 795173e594260374d7c48df3ae7802eebbfcd7dc Mon Sep 17 00:00:00 2001 From: Lily Date: Mon, 4 Apr 2022 15:16:04 +0300 Subject: [PATCH 6/6] Update VALIDITY_MATCH constant Old regex wasn't checking all of the string --- test/faker/default/test_faker_vehicle.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/faker/default/test_faker_vehicle.rb b/test/faker/default/test_faker_vehicle.rb index c90d3af0ac..2f27137db9 100644 --- a/test/faker/default/test_faker_vehicle.rb +++ b/test/faker/default/test_faker_vehicle.rb @@ -4,7 +4,7 @@ class TestFakerVehicle < Test::Unit::TestCase WORD_MATCH = /\w+\.?/.freeze - VALIDITY_MATCH = /^([A-HJ-NPS-Z0-9])/.freeze + VALIDITY_MATCH = /^([A-HJ-NPR-Z0-9])+/.freeze def setup @tester = Faker::Vehicle