[RUBY] Remarques sur la génération de données factices pour les mots de passe dans le code de test unitaire du modèle Rails

Contexte de la publication d'articles

Faker a été utilisé pour créer des données factices </ font> dans le test d'unité de modèle. Faker génère au hasard des noms, des e-mails, etc. Cependant, j'ai trouvé que des précautions doivent être prises lors de la génération des données de mot de passe </ font> (voir ci-dessous). Par conséquent, publiez un article sous forme de mémorandum avec Notes et remèdes </ font>.

** Supplément ** Faker est l'un des joyaux Ruby on Rails. Les valeurs peuvent être générées aléatoirement en utilisant Faker. Veuillez consulter le lien ci-dessous pour plus de détails.

Faker Official Github

Précautions pour la génération de mot de passe à l'aide de Faker

Les données factices de la colonne de mot de passe ont été générées par la description suivante.

user.rb


FactoryBot.define do
  factory :user do
    nickname                { Faker::Name.name }
    email                   { Faker::Internet.free_email }
    password                { Faker::Internet.password(min_length: 8) }
    password_confirmation   { password }
  end
end

Le mot de passe généré à ce moment est généralement une combinaison de nombres et de chaînes de caractères, mais rarement seulement des chaînes de caractères ou seuls des nombres sont générés </ font>. Cela signifie que si la validation du mot de passe est une combinaison de nombres et de chaînes </ font>, elle ne sera pas appropriée comme données factices </ font>. ..

Terminal


[8] pry(#<RSpec::ExampleGroups::User::Create>)> @user = FactoryBot.build(:user)
=> #<User id: nil, email: "[email protected]", nickname: "Eugenie Dach", created_at: nil, updated_at: nil>
[9] pry(#<RSpec::ExampleGroups::User::Create>)> @user.password
=> "1HyWz2Mr"
[10] pry(#<RSpec::ExampleGroups::User::Create>)> @user = FactoryBot.build(:user)
=> #<User id: nil, email: "[email protected]", nickname: "Kathi D'Amore", created_at: nil, updated_at: nil>
[11] pry(#<RSpec::ExampleGroups::User::Create>)> @user.password
=> "NdKrAcLw"

solution de contournement

Si vous avez validé une combinaison de chiffres et de chaînes pour votre mot de passe, crée manuellement des données factices pour votre mot de passe </ font>.

user.rb


FactoryBot.define do
  factory :user do
    nickname                { Faker::Name.name }
    email                   { Faker::Internet.free_email }
    password                { 'test1234TEST' }
    password_confirmation   { password }
  end
end

c'est tout