43 lines
1.2 KiB
Ruby
43 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# To execute with optional user and api keys amount
|
|
# rake generate:users -- --n=1000
|
|
|
|
namespace 'generate' do
|
|
desc 'Build Application container'
|
|
task :users => :environment do
|
|
### Parse options
|
|
options = {}
|
|
|
|
o = OptionParser.new
|
|
|
|
o.banner = 'Usage: rake generate:users [-n=100]'
|
|
o.on('-n NUMBER', '--number NUMBER') { |num| options[:num] = num.to_i }
|
|
|
|
args = o.order!(ARGV) {}
|
|
o.parse!(args)
|
|
|
|
options[:num] = 10 if options[:num].nil?
|
|
result_arr = []
|
|
|
|
options[:num].times do |i|
|
|
email = Faker::Internet.email
|
|
passwd = Faker::Internet.password(min_length: 10, special_characters: true)
|
|
u = User.create(email: email, password: passwd, level: 3, state: 'active')
|
|
|
|
api_key = APIKey.create(user_id: u.id, kid: SecureRandom.hex(8), algorithm: 'HS256')
|
|
secret = SecureRandom.hex(16)
|
|
SecretStorage.store_secret(secret, api_key.kid)
|
|
result_arr.push({
|
|
'uid' => u.uid,
|
|
'email' => u.email,
|
|
'password' => passwd,
|
|
'kid' => api_key.kid,
|
|
'secret' => secret
|
|
})
|
|
end
|
|
|
|
File.write('tmp/payload.yml', result_arr.to_yaml)
|
|
end
|
|
end
|