diff --git a/app/controllers/sign_up/completions_controller.rb b/app/controllers/sign_up/completions_controller.rb index 8b510e33235..5580063d6e3 100644 --- a/app/controllers/sign_up/completions_controller.rb +++ b/app/controllers/sign_up/completions_controller.rb @@ -99,8 +99,7 @@ def track_completion_event(last_page) end def pii - pii_string = Pii::Cacher.new(current_user, user_session).fetch_string - JSON.parse(pii_string || '{}', symbolize_names: true) + Pii::Cacher.new(current_user, user_session).fetch || Pii::Attributes.new end def send_in_person_completion_survey diff --git a/app/services/pii/attributes.rb b/app/services/pii/attributes.rb index 1a96a312757..6228bb18e50 100644 --- a/app/services/pii/attributes.rb +++ b/app/services/pii/attributes.rb @@ -16,7 +16,8 @@ module Pii # the state in the state id address, which may not be the state that issued the ID :identity_doc_address_state, :ssn, :dob, :phone, - *DEPRECATED_PII_ATTRIBUTES + *DEPRECATED_PII_ATTRIBUTES, + keyword_init: true ) do def self.new_from_hash(hash) attrs = new @@ -32,11 +33,6 @@ def self.new_from_json(pii_json) new_from_hash(pii) end - def initialize(*args) - super - assign_all_members - end - def eql?(other) to_json == other.to_json end @@ -44,13 +40,5 @@ def eql?(other) def ==(other) eql?(other) end - - private - - def assign_all_members - self.class.members.each do |member| - self[member] = self[member] - end - end end end diff --git a/app/services/pii/cacher.rb b/app/services/pii/cacher.rb index 2e635eca6ea..f8b1405588f 100644 --- a/app/services/pii/cacher.rb +++ b/app/services/pii/cacher.rb @@ -30,6 +30,19 @@ def fetch Pii::Attributes.new_from_json(pii_string) end + def exists_in_session? + return user_session[:decrypted_pii] || user_session[:encrypted_pii] + end + + def delete + user_session.delete(:decrypted_pii) + user_session.delete(:encrypted_pii) + end + + private + + attr_reader :user, :user_session + # Between requests, the decrypted PII bundle is encrypted with KMS and moved to the # 'encrypted_pii' key by the SessionEncryptor. # @@ -47,19 +60,6 @@ def fetch_string decrypted end - def exists_in_session? - return user_session[:decrypted_pii] || user_session[:encrypted_pii] - end - - def delete - user_session.delete(:decrypted_pii) - user_session.delete(:encrypted_pii) - end - - private - - attr_reader :user, :user_session - def rotate_fingerprints(profile) KeyRotator::HmacFingerprinter.new.rotate( user: user, diff --git a/spec/presenters/completions_presenter_spec.rb b/spec/presenters/completions_presenter_spec.rb index cf5c9f557e7..ed98928f079 100644 --- a/spec/presenters/completions_presenter_spec.rb +++ b/spec/presenters/completions_presenter_spec.rb @@ -13,7 +13,7 @@ let(:current_user) { create(:user, :fully_registered, identities: identities) } let(:current_sp) { create(:service_provider, friendly_name: 'Friendly service provider') } let(:decrypted_pii) do - { + Pii::Attributes.new( first_name: 'Testy', last_name: 'Testerson', ssn: '900123456', @@ -24,7 +24,7 @@ zipcode: '20405', dob: '1990-01-01', phone: '+12022121000', - } + ) end let(:requested_attributes) do [