Browse Source

Validate phone number presence

pull/146/head
baarkerlounger 3 years ago
parent
commit
80ef19e1a0
  1. 5
      app/admin/admin_users.rb
  2. 2
      app/models/admin_user.rb
  3. 2
      db/seeds.rb
  4. 2
      spec/controllers/admin/admin_users_controller_spec.rb
  5. 52
      spec/models/admin_user_spec.rb

5
app/admin/admin_users.rb

@ -1,5 +1,5 @@
ActiveAdmin.register AdminUser do ActiveAdmin.register AdminUser do
permit_params :email, :password, :password_confirmation permit_params :email, :phone, :password, :password_confirmation
controller do controller do
def update_resource(object, attributes) def update_resource(object, attributes)
@ -12,6 +12,7 @@ ActiveAdmin.register AdminUser do
selectable_column selectable_column
id_column id_column
column :email column :email
column "Phone Number", :phone
column :current_sign_in_at column :current_sign_in_at
column :sign_in_count column :sign_in_count
column :created_at column :created_at
@ -19,6 +20,7 @@ ActiveAdmin.register AdminUser do
end end
filter :email filter :email
filter :phone
filter :current_sign_in_at filter :current_sign_in_at
filter :sign_in_count filter :sign_in_count
filter :created_at filter :created_at
@ -26,6 +28,7 @@ ActiveAdmin.register AdminUser do
form do |f| form do |f|
f.inputs do f.inputs do
f.input :email f.input :email
f.input :phone
f.input :password f.input :password
f.input :password_confirmation f.input :password_confirmation
end end

2
app/models/admin_user.rb

@ -6,6 +6,8 @@ class AdminUser < ApplicationRecord
has_one_time_password(encrypted: true) has_one_time_password(encrypted: true)
validates :phone, presence: true, numericality: true
MFA_SMS_TEMPLATE_ID = "bf309d93-804e-4f95-b1f4-bd513c48ecb0".freeze MFA_SMS_TEMPLATE_ID = "bf309d93-804e-4f95-b1f4-bd513c48ecb0".freeze
def send_two_factor_authentication_code(code) def send_two_factor_authentication_code(code)

2
db/seeds.rb

@ -30,4 +30,4 @@ User.create!(
role: "data_coordinator", role: "data_coordinator",
) )
AdminUser.create!(email: "admin@example.com", password: "password") AdminUser.create!(email: "admin@example.com", password: "password", phone: "000000000")

2
spec/controllers/admin/admin_users_controller_spec.rb

@ -22,7 +22,7 @@ describe Admin::AdminUsersController, type: :controller do
end end
describe "Create admin users" do describe "Create admin users" do
let(:params) { { admin_user: { email: "test2@example.com", password: "pAssword1" } } } let(:params) { { admin_user: { email: "test2@example.com", password: "pAssword1", phone: "07566126368" } } }
it "creates a new admin user" do it "creates a new admin user" do
expect { post :create, session: valid_session, params: params }.to change(AdminUser, :count).by(1) expect { post :create, session: valid_session, params: params }.to change(AdminUser, :count).by(1)

52
spec/models/admin_user_spec.rb

@ -0,0 +1,52 @@
require "rails_helper"
RSpec.describe AdminUser, type: :model do
describe "#new" do
it "requires a phone number" do
expect {
described_class.create!(
email: "admin_test@example.com",
password: "password123",
)
}.to raise_error(ActiveRecord::RecordInvalid)
end
it "requires a numerical phone number" do
expect {
described_class.create!(
email: "admin_test@example.com",
password: "password123",
phone: "string",
)
}.to raise_error(ActiveRecord::RecordInvalid)
end
end
it "requires an email" do
expect {
described_class.create!(
password: "password123",
phone: "075752137",
)
}.to raise_error(ActiveRecord::RecordInvalid)
end
it "requires a password" do
expect {
described_class.create!(
email: "admin_test@example.com",
phone: "075752137",
)
}.to raise_error(ActiveRecord::RecordInvalid)
end
it "can be created" do
expect {
described_class.create!(
email: "admin_test@example.com",
password: "password123",
phone: "075752137",
)
}.to change(described_class, :count).by(1)
end
end
Loading…
Cancel
Save