From 47bc44e902da319998bded7b3511063320bbadd1 Mon Sep 17 00:00:00 2001 From: adrian-rivera Date: Fri, 2 Oct 2020 10:50:51 -0700 Subject: [PATCH] Fixes a bug when generating a password with min_length eq 1 (#2138) * Fixes a bug when generating passwords with min_length eq 1 * swap if block for brackets * Update internet.rb Oh... that ticks off Rubocop. Nvm. Reverting back to the original version Co-authored-by: Stephen A. Wilson --- lib/faker/default/internet.rb | 2 +- test/faker/default/test_faker_internet.rb | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/faker/default/internet.rb b/lib/faker/default/internet.rb index 57ec2b9e7b..192f8dd9eb 100644 --- a/lib/faker/default/internet.rb +++ b/lib/faker/default/internet.rb @@ -115,7 +115,7 @@ def password(legacy_min_length = NOT_GIVEN, legacy_max_length = NOT_GIVEN, legac keywords << :special_characters if legacy_special_characters != NOT_GIVEN end - min_alpha = mix_case ? 2 : 0 + min_alpha = mix_case && min_length > 1 ? 2 : 0 temp = Lorem.characters(number: min_length, min_alpha: min_alpha) diff_length = max_length - min_length diff --git a/test/faker/default/test_faker_internet.rb b/test/faker/default/test_faker_internet.rb index 9454f617b1..f56c74a936 100644 --- a/test/faker/default/test_faker_internet.rb +++ b/test/faker/default/test_faker_internet.rb @@ -145,6 +145,20 @@ def test_password_with_mixed_case assert downcase_count >= 1 end + def test_password_with_min_length_eq_1 + min_length = 1 + password = @tester.password(min_length: min_length) + assert password.match(/\w+/) + end + + def test_password_with_min_length_and_max_length + min_length = 2 + max_length = 5 + password = @tester.password(min_length: min_length, max_length: max_length) + assert password.match(/\w+/) + assert (min_length..max_length).include?(password.size), 'Password size is incorrect' + end + def test_password_without_mixed_case assert @tester.password(min_length: 8, max_length: 12, mix_case: false).match(/[^A-Z]+/) end