I have used the Faker:: Internet.password with all the options enabled, However, the mix case is not guaranteed all the time
`
2.4.2 :005 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "^$J9O8H97"
2.4.2 :006 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "%!^#%%944"
2.4.2 :007 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "^&&#%$lC555"
2.4.2 :008 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "@c7h8cMgV1D3"
2.4.2 :009 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "%#$7FbIa8b3"
2.4.2 :010 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "!@$#qHpA4H6B8"
2.4.2 :011 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "!^3l9vI4W19tE7BzSuHp6"
2.4.2 :012 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "@%IjQzPh4"
2.4.2 :013 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "^#$#D4Ze4"
2.4.2 :014 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "@%$vBpReZiRvJc2"
2.4.2 :015 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "&#!80qF95m4qTi53I4"
2.4.2 :016 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "^@0yN5D4HkR5P8"
2.4.2 :017 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "$^^^%^#^OxMfYt9"
2.4.2 :018 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "@&@kZ4C7MqLw3fUb253"
2.4.2 :019 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "&!1HhQnBrHs6uS5M1Jm6"
2.4.2 :020 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "#@@@9T53pNuX1"
2.4.2 :021 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "!!^^%1Z9B6Y2HyWuKf6"
2.4.2 :022 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "@#^!^f3p2rJ7Zi3kT1"
2.4.2 :023 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "$#^^@&^z4kS0TeRvY5156"
2.4.2 :024 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "&##%7yTaSk73YiW84a2"
2.4.2 :025 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "@$IwXoDlNqF36"
2.4.2 :026 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "$901QqWl7uK9DiTjSuP2"
2.4.2 :027 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "#15d4yB9ZiKj6"
2.4.2 :028 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "@&^#%&En0h8"
2.4.2 :029 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "@90dU9M5E2X47"
2.4.2 :030 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
**_=> "&###^#!y1"_
2.4.2 :031 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "!&%eSxK566"
2.4.2 :032 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
=> "$%$%ElY3UiFnZ1B9PoZg5"
2.4.2 :033 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
`
Describe the steps to reproduce the behavior.
It should generate at least one lower and upper case characters?
below is where it failed
2.4.2 :030 > Faker::Internet.password(8, 20, true, true) + rand(1..9).to_s
_=> "&###^#!y1"_
I might be able to look at this today or tomorrow, as well as refactoring the Internet class.
Sorry, I didn't have much time to work on this, I'm really busy this month, but I'll make sure to work on this if no one else sends a PR before.
@lucasqueiroz I鈥檓 taking a look at this. I鈥檒l report back once I dig in a bit!
@lucasqueiroz PR is up! Let me know any feedback when you have a chance.
Resolved by #1694