Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions app/forms/verify_password_form.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@ def valid_password?

def reencrypt_pii
personal_key = profile.encrypt_pii(decrypted_pii, password)
profile.update(deactivation_reason: nil, active: true)
profile.save!
profile.activate_after_password_reset
personal_key
end

Expand Down
9 changes: 9 additions & 0 deletions app/models/profile.rb
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,15 @@ def activate_after_passing_in_person
activate
end

def activate_after_password_reset
if password_reset?
update!(
deactivation_reason: nil,
)
activate
end
end

def deactivate(reason)
update!(active: false, deactivation_reason: reason)
end
Expand Down
42 changes: 42 additions & 0 deletions spec/models/profile_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,48 @@
end
end

describe '#activate_after_password_reset' do
it 'activates a profile after password reset' do
profile = create(
:profile,
user: user,
active: false,
deactivation_reason: :password_reset,
)

profile.activate_after_password_reset

expect(profile.active).to eq true
expect(profile.deactivation_reason).to eq nil
end

it 'does not activate a profile if it has a pending reason' do
profile = create(
:profile,
user: user,
active: false,
deactivation_reason: :password_reset,
fraud_review_pending_at: 1.day.ago,
)

expect { profile.activate_after_password_reset }.to raise_error
end

it 'does not activate a profile with non password_reset deactivation_reason' do
profile = create(
:profile,
user: user,
active: false,
deactivation_reason: :encryption_error,
)

profile.activate_after_password_reset

expect(profile.active).to eq false
expect(profile.deactivation_reason).to_not eq nil
end
end

describe '#activate_after_passing_review' do
it 'activates a profile if it passes fraud review' do
profile = create(
Expand Down