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)