You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.8 KiB
59 lines
1.8 KiB
module AuthenticatedModelHelper |
|
def build_guest_user |
|
GuestUser.new |
|
end |
|
|
|
def create_user(type = 'encrypted', attributes = {}) |
|
create_table_for_nonencrypted_user if type == 'not_encrypted' |
|
|
|
User.create!(valid_attributes(attributes)) |
|
end |
|
|
|
def create_admin |
|
Admin.create!(valid_attributes.except(:nickname)) |
|
end |
|
|
|
def valid_attributes(attributes={}) |
|
{ |
|
nickname: 'Marissa', |
|
email: generate_unique_email, |
|
password: 'password', |
|
password_confirmation: 'password' |
|
}.merge(attributes) |
|
end |
|
|
|
def generate_unique_email |
|
@@email_count ||= 0 |
|
@@email_count += 1 |
|
"user#{@@email_count}@example.com" |
|
end |
|
|
|
def create_table_for_nonencrypted_user |
|
ActiveRecord::Migration.suppress_messages do |
|
ActiveRecord::Schema.define(version: 1) do |
|
create_table 'users', force: :cascade do |t| |
|
t.string 'email', default: '', null: false |
|
t.string 'encrypted_password', default: '', null: false |
|
t.string 'reset_password_token' |
|
t.datetime 'reset_password_sent_at' |
|
t.datetime 'remember_created_at' |
|
t.integer 'sign_in_count', default: 0, null: false |
|
t.datetime 'current_sign_in_at' |
|
t.datetime 'last_sign_in_at' |
|
t.string 'current_sign_in_ip' |
|
t.string 'last_sign_in_ip' |
|
t.datetime 'created_at', null: false |
|
t.datetime 'updated_at', null: false |
|
t.integer 'second_factor_attempts_count', default: 0 |
|
t.string 'nickname', limit: 64 |
|
t.string 'otp_secret_key' |
|
t.string 'direct_otp' |
|
t.datetime 'direct_otp_sent_at' |
|
t.timestamp 'totp_timestamp' |
|
end |
|
end |
|
end |
|
end |
|
end |
|
|
|
RSpec.configuration.send(:include, AuthenticatedModelHelper)
|
|
|