From 6bf5a4de204ef3c4826ae0c5e8f52fef2ee72da6 Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Thu, 20 Jun 2024 16:41:00 -0700 Subject: [PATCH 1/8] Document parameters for verify proofing results event [skip changelog] --- app/services/analytics_events.rb | 106 ++++++++++++++++++++++++++++++- 1 file changed, 104 insertions(+), 2 deletions(-) diff --git a/app/services/analytics_events.rb b/app/services/analytics_events.rb index 3fc8a440dcd..1b36d16e2ce 100644 --- a/app/services/analytics_events.rb +++ b/app/services/analytics_events.rb @@ -1306,9 +1306,111 @@ def idv_doc_auth_submitted_pii_validation( ) end - def idv_doc_auth_verify_proofing_results(**extra) - track_event('IdV: doc auth verify proofing results', **extra) + # rubocop:disable Layout/LineLength + # @param ab_tests [Hash] Object that holds A/B test data (legacy A/B tests may include attributes outside the scope of this object) + # @param acuant_sdk_upgrade_ab_test_bucket [String] A/B test bucket for Acuant document capture SDK upgrades + # @param address_edited [Boolean] Whether the user edited their address before submitting the "Verify your information" step + # @param address_line2_present [Boolean] Whether the user's address includes a second address line + # @param analytics_id [String] "Doc Auth" for remote unsupervised, "In Person Proofing" for IPP + # @param errors [Hash] Details about vendor-specific errors encountered during the stages of the identity resolution process + # @param flow_path [String] "hybrid" for hybrid handoff, "standard" otherwise + # @param irs_reproofing [Boolean] Whether the user is being forced to reproof to access the IRS + # @param lexisnexis_instant_verify_workflow_ab_test_bucket [String] A/B test bucket for Lexis Nexis InstantVerify workflow testing + # @param opted_in_to_in_person_proofing [Boolean] Whether this user explicitly opted into in-person proofing + # @param proofing_results [Hash] + # @option proofing_results [String,nil] exception If an exception occurred during any phase of proofing its message is provided here + # @option proofing_results [Boolean] timed_out true if any vendor API calls timed out during proofing + # @option proofing_results [String] threatmetrix_review_status Result of Threatmetrix assessment, either "review", "reject", or "pass" + # @option proofing_results [Hash] context Full context of the proofing process + # @option proofing_results [String] context[:device_profiling_adjudication_reason] Reason code describing how we arrived at the device profiling result + # @option proofing_results [String] context[:resolution_adjudication_reason] Reason code describing how we arrived at the identity resolution result + # @option proofing_results [Boolean] context[:should_proof_state_id] Whether we need to verify the user's PII with AAMVA. False if the user is using a document from a non-AAMVA jurisdiction + # @option proofing_results [Hash] context[:stages] Object holding details about each stage of the proofing process + # @option proofing_results [Hash] context[:stages][:resolution] Object holding details about the call made to the identity resolution vendor + # @option proofing_results [Boolean] context[:stages][:resolution][:success] Whether identity resolution proofing was successful + # @option proofing_results [Hash] context[:stages][:resolution][:errors] Object describing errors encountered during identity resolution + # @option proofing_results [String,nil] context[:stages][:resolution][:exception] If an exception occured during identity resolution its message is provided here + # @option proofing_results [Boolean] context[:stages][:resolution][:timed_out] Whether the identity resolution API request timed out + # @option proofing_results [String] context[:stages][:resolution][:transaction_id] A unique id for the underlying vendor request + # @option proofing_results [Boolean] context[:stages][:resolution][:can_pass_with_additional_verification] Whether the PII could be verified if another vendor verified certain attributes + # @option proofing_results [Array] context[:stages][:resolution][:attributes_requiring_additional_verification] Attributes that need to be verified by another vendor + # @option proofing_results [String] context[:stages][:resolution][:vendor_name] Vendor used (e.g. lexisnexis:instant_verify) + # @option proofing_results [String] context[:stages][:resolution][:vendor_workflow] ID of workflow or configuration the vendor used for this transaction + # @option proofing_results [Boolean] context[:stages][:residential_address][:success] Whether the residential address passed proofing + # @option proofing_results [Hash] context[:stages][:residential_address][:errors] Object holding error details returned by the residential address proofing vendor. + # @option proofing_results [String,nil] context[:stages][:residential_address][:exception] If an exception occured during residential address verification its message is provided here + # @option proofing_results [Boolean] context[:stages][:residential_address][:timed_out] True if the request to the residential address proofing vendor timed out + # @option proofing_results [String] context[:stages][:residential_address][:transaction_id] Vendor-specific transaction ID for the request made to the residential address proofing vendor + # @option proofing_results [Boolean] context[:stages][:residential_address][:can_pass_with_additional_verification] Whether, if residential address proofing failed, it could pass with additional proofing from another vendor + # @option proofing_results [Array,nil] context[:stages][:residential_address][:attributes_requiring_additional_verification] List of PII attributes that require additional verification for residential address proofing to pass + # @option proofing_results [String] context[:stages][:residential_address][:vendor_name] Vendor used for residential address proofing + # @option proofing_results [String] context[:stages][:residential_address][:vendor_workflow] Vendor-specific workflow or configuration ID associated with the request made. + # @option proofing_results [Hash] context[:stages][:state_id] Object holding details about the call made to the state ID proofing vendor + # @option proofing_results [Boolean] context[:stages][:state_id][:success] Whether the PII associated with the user's state ID document passed proofing + # @option proofing_results [Hash] context[:stages][:state_id][:errors] Object describing errors encountered while proofing the user's state ID PII + # @option proofing_results [String,nil] context[:stages][:state_id][:exception] If an exception occured during state ID PII verification its message is provided here + # @option proofing_results [Boolean] context[:stages][:state_id][:mva_exception] For AAMVA, whether the exception that occurred was due to an error on the state MVA side + # @option proofing_results [Hash] context[:stages][:state_id][:requested_attributes] An object whose keys are field names and values are "1" representing PII attributes sent to the state ID proofing vendor for verification. + # @option proofing_results [Boolean] context[:stages][:state_id][:timed_out] Whether the request to the state ID verification vendor timed out + # @option proofing_results [String] context[:stages][:state_id][:transaction_id] Vendor-specific transaction ID for the request made to the state id proofing vendor + # @option proofing_results [String] context[:stages][:state_id][:vendor_name] Name of the vendor used for state ID PII verification. If the ID was not from a supported jurisdiction, it will be "UnsupportedJurisdiction". It MAY also be "UnsupportedJurisdiction" if state ID verification was not needed because other vendor calls did not succeed. + # @option proofing_results [String] context[:stages][:state_id][:state] The state that was listed as the user's address on their state ID. Note that this may differ from state_id_jurisdiction. + # @option proofing_results [String] context[:stages][:state_id][:state_id_jurisdiction] The state that issued the drivers license or ID card being used for proofing. + # @option proofing_results [String] context[:stages][:state_id][:state_id_number] A string describing the _format_ of the state ID number provided. + # @option proofing_results [Hash] context[:stages][:threatmetrix] Object holding details about the call made to the device profiling vendor + # @option proofing_results [String] context[:stages][:threatmetrix][:client] Identifier string indicating which client was used. + # @option proofing_results [Boolean] context[:stages][:threatmetrix][:success] Whether the request to the vendor succeeded. + # @option proofing_results [Hash] context[:stages][:threatmetrix][:errors] Hash describing errors encountered when making the request. + # @option proofing_results [String,nil] context[:stages][:threatmetrix][:exception] If an exception was encountered making the request to the vendor, its message is provided here. + # @option proofing_results [Boolean] context[:stages][:threatmetrix][:timed_out] Whether the request to the vendor timed out. + # @option proofing_results [String] context[:stages][:threatmetrix][:transaction_id] Vendor-specific transaction ID for the request. + # @option proofing_results [Hash] context[:stages][:threatmetrix][:response_body] JSON body of the response returned from the vendor. PII has been redacted. + # @option proofing_results [String] context[:stages][:threatmetrix][:response_body][:account_lex_id] LexID associated with the response. + # @option proofing_results [String] context[:stages][:threatmetrix][:response_body][:session_id] Session ID associated with the response. + # @option proofing_results [String] context[:stages][:threatmetrix][:review_status] One of "pass", "review", "reject". + # @param skip_hybrid_handoff [Boolean] Whether the user should skip hybrid handoff (i.e. because they are already on a mobile device) + # @param ssn_is_unique [Boolean] Whether another Profile existed with the same SSN at the time the profile associated with the current IdV session was minted. + # @param step [String] Always "verify" (leftover from flow state machine days) + # @param success [Boolean] Whether identity resolution succeeded overall + def idv_doc_auth_verify_proofing_results( + ab_tests: nil, + acuant_sdk_upgrade_ab_test_bucket: nil, + address_edited: nil, + address_line2_present: nil, + analytics_id: nil, + errors: nil, + flow_path: nil, + irs_reproofing: nil, + lexisnexis_instant_verify_workflow_ab_test_bucket: nil, + opted_in_to_in_person_proofing: nil, + proofing_results: nil, + skip_hybrid_handoff: nil, + ssn_is_unique: nil, + step: nil, + success: nil, + **extra + ) + track_event( + 'IdV: doc auth verify proofing results', + ab_tests:, + acuant_sdk_upgrade_ab_test_bucket:, + address_edited:, + address_line2_present:, + analytics_id:, + errors:, + flow_path:, + irs_reproofing:, + lexisnexis_instant_verify_workflow_ab_test_bucket:, + opted_in_to_in_person_proofing:, + proofing_results:, + skip_hybrid_handoff:, + ssn_is_unique:, + step:, + success:, + **extra, + ) end + # rubocop:enable Layout/LineLength # @identity.idp.previous_event_name IdV: in person proofing verify submitted def idv_doc_auth_verify_submitted(**extra) From dd9c8f6292ffe6c3e012fb07d183a776e510b020 Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Fri, 21 Jun 2024 13:54:32 -0700 Subject: [PATCH 2/8] Use dots to separate nested option keys --- app/services/analytics_events.rb | 92 ++++++++++++++++---------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/app/services/analytics_events.rb b/app/services/analytics_events.rb index 1b36d16e2ce..e102e331083 100644 --- a/app/services/analytics_events.rb +++ b/app/services/analytics_events.rb @@ -1322,52 +1322,52 @@ def idv_doc_auth_submitted_pii_validation( # @option proofing_results [Boolean] timed_out true if any vendor API calls timed out during proofing # @option proofing_results [String] threatmetrix_review_status Result of Threatmetrix assessment, either "review", "reject", or "pass" # @option proofing_results [Hash] context Full context of the proofing process - # @option proofing_results [String] context[:device_profiling_adjudication_reason] Reason code describing how we arrived at the device profiling result - # @option proofing_results [String] context[:resolution_adjudication_reason] Reason code describing how we arrived at the identity resolution result - # @option proofing_results [Boolean] context[:should_proof_state_id] Whether we need to verify the user's PII with AAMVA. False if the user is using a document from a non-AAMVA jurisdiction - # @option proofing_results [Hash] context[:stages] Object holding details about each stage of the proofing process - # @option proofing_results [Hash] context[:stages][:resolution] Object holding details about the call made to the identity resolution vendor - # @option proofing_results [Boolean] context[:stages][:resolution][:success] Whether identity resolution proofing was successful - # @option proofing_results [Hash] context[:stages][:resolution][:errors] Object describing errors encountered during identity resolution - # @option proofing_results [String,nil] context[:stages][:resolution][:exception] If an exception occured during identity resolution its message is provided here - # @option proofing_results [Boolean] context[:stages][:resolution][:timed_out] Whether the identity resolution API request timed out - # @option proofing_results [String] context[:stages][:resolution][:transaction_id] A unique id for the underlying vendor request - # @option proofing_results [Boolean] context[:stages][:resolution][:can_pass_with_additional_verification] Whether the PII could be verified if another vendor verified certain attributes - # @option proofing_results [Array] context[:stages][:resolution][:attributes_requiring_additional_verification] Attributes that need to be verified by another vendor - # @option proofing_results [String] context[:stages][:resolution][:vendor_name] Vendor used (e.g. lexisnexis:instant_verify) - # @option proofing_results [String] context[:stages][:resolution][:vendor_workflow] ID of workflow or configuration the vendor used for this transaction - # @option proofing_results [Boolean] context[:stages][:residential_address][:success] Whether the residential address passed proofing - # @option proofing_results [Hash] context[:stages][:residential_address][:errors] Object holding error details returned by the residential address proofing vendor. - # @option proofing_results [String,nil] context[:stages][:residential_address][:exception] If an exception occured during residential address verification its message is provided here - # @option proofing_results [Boolean] context[:stages][:residential_address][:timed_out] True if the request to the residential address proofing vendor timed out - # @option proofing_results [String] context[:stages][:residential_address][:transaction_id] Vendor-specific transaction ID for the request made to the residential address proofing vendor - # @option proofing_results [Boolean] context[:stages][:residential_address][:can_pass_with_additional_verification] Whether, if residential address proofing failed, it could pass with additional proofing from another vendor - # @option proofing_results [Array,nil] context[:stages][:residential_address][:attributes_requiring_additional_verification] List of PII attributes that require additional verification for residential address proofing to pass - # @option proofing_results [String] context[:stages][:residential_address][:vendor_name] Vendor used for residential address proofing - # @option proofing_results [String] context[:stages][:residential_address][:vendor_workflow] Vendor-specific workflow or configuration ID associated with the request made. - # @option proofing_results [Hash] context[:stages][:state_id] Object holding details about the call made to the state ID proofing vendor - # @option proofing_results [Boolean] context[:stages][:state_id][:success] Whether the PII associated with the user's state ID document passed proofing - # @option proofing_results [Hash] context[:stages][:state_id][:errors] Object describing errors encountered while proofing the user's state ID PII - # @option proofing_results [String,nil] context[:stages][:state_id][:exception] If an exception occured during state ID PII verification its message is provided here - # @option proofing_results [Boolean] context[:stages][:state_id][:mva_exception] For AAMVA, whether the exception that occurred was due to an error on the state MVA side - # @option proofing_results [Hash] context[:stages][:state_id][:requested_attributes] An object whose keys are field names and values are "1" representing PII attributes sent to the state ID proofing vendor for verification. - # @option proofing_results [Boolean] context[:stages][:state_id][:timed_out] Whether the request to the state ID verification vendor timed out - # @option proofing_results [String] context[:stages][:state_id][:transaction_id] Vendor-specific transaction ID for the request made to the state id proofing vendor - # @option proofing_results [String] context[:stages][:state_id][:vendor_name] Name of the vendor used for state ID PII verification. If the ID was not from a supported jurisdiction, it will be "UnsupportedJurisdiction". It MAY also be "UnsupportedJurisdiction" if state ID verification was not needed because other vendor calls did not succeed. - # @option proofing_results [String] context[:stages][:state_id][:state] The state that was listed as the user's address on their state ID. Note that this may differ from state_id_jurisdiction. - # @option proofing_results [String] context[:stages][:state_id][:state_id_jurisdiction] The state that issued the drivers license or ID card being used for proofing. - # @option proofing_results [String] context[:stages][:state_id][:state_id_number] A string describing the _format_ of the state ID number provided. - # @option proofing_results [Hash] context[:stages][:threatmetrix] Object holding details about the call made to the device profiling vendor - # @option proofing_results [String] context[:stages][:threatmetrix][:client] Identifier string indicating which client was used. - # @option proofing_results [Boolean] context[:stages][:threatmetrix][:success] Whether the request to the vendor succeeded. - # @option proofing_results [Hash] context[:stages][:threatmetrix][:errors] Hash describing errors encountered when making the request. - # @option proofing_results [String,nil] context[:stages][:threatmetrix][:exception] If an exception was encountered making the request to the vendor, its message is provided here. - # @option proofing_results [Boolean] context[:stages][:threatmetrix][:timed_out] Whether the request to the vendor timed out. - # @option proofing_results [String] context[:stages][:threatmetrix][:transaction_id] Vendor-specific transaction ID for the request. - # @option proofing_results [Hash] context[:stages][:threatmetrix][:response_body] JSON body of the response returned from the vendor. PII has been redacted. - # @option proofing_results [String] context[:stages][:threatmetrix][:response_body][:account_lex_id] LexID associated with the response. - # @option proofing_results [String] context[:stages][:threatmetrix][:response_body][:session_id] Session ID associated with the response. - # @option proofing_results [String] context[:stages][:threatmetrix][:review_status] One of "pass", "review", "reject". + # @option proofing_results [String] context.device_profiling_adjudication_reason Reason code describing how we arrived at the device profiling result + # @option proofing_results [String] context.resolution_adjudication_reason Reason code describing how we arrived at the identity resolution result + # @option proofing_results [Boolean] context.should_proof_state_id Whether we need to verify the user's PII with AAMVA. False if the user is using a document from a non-AAMVA jurisdiction + # @option proofing_results [Hash] context.stages Object holding details about each stage of the proofing process + # @option proofing_results [Hash] context.stages.resolution Object holding details about the call made to the identity resolution vendor + # @option proofing_results [Boolean] context.stages.resolution.success Whether identity resolution proofing was successful + # @option proofing_results [Hash] context.stages.resolution.errors Object describing errors encountered during identity resolution + # @option proofing_results [String,nil] context.stages.resolution.exception If an exception occured during identity resolution its message is provided here + # @option proofing_results [Boolean] context.stages.resolution.timed_out Whether the identity resolution API request timed out + # @option proofing_results [String] context.stages.resolution.transaction_id A unique id for the underlying vendor request + # @option proofing_results [Boolean] context.stages.resolution.can_pass_with_additional_verification Whether the PII could be verified if another vendor verified certain attributes + # @option proofing_results [Array] context.stages.resolution.attributes_requiring_additional_verification Attributes that need to be verified by another vendor + # @option proofing_results [String] context.stages.resolution.vendor_name Vendor used (e.g. lexisnexis:instant_verify) + # @option proofing_results [String] context.stages.resolution.vendor_workflow ID of workflow or configuration the vendor used for this transaction + # @option proofing_results [Boolean] context.stages.residential_address.success Whether the residential address passed proofing + # @option proofing_results [Hash] context.stages.residential_address.errors Object holding error details returned by the residential address proofing vendor. + # @option proofing_results [String,nil] context.stages.residential_address.exception If an exception occured during residential address verification its message is provided here + # @option proofing_results [Boolean] context.stages.residential_address.timed_out True if the request to the residential address proofing vendor timed out + # @option proofing_results [String] context.stages.residential_address.transaction_id Vendor-specific transaction ID for the request made to the residential address proofing vendor + # @option proofing_results [Boolean] context.stages.residential_address.can_pass_with_additional_verification Whether, if residential address proofing failed, it could pass with additional proofing from another vendor + # @option proofing_results [Array,nil] context.stages.residential_address.attributes_requiring_additional_verification List of PII attributes that require additional verification for residential address proofing to pass + # @option proofing_results [String] context.stages.residential_address.vendor_name Vendor used for residential address proofing + # @option proofing_results [String] context.stages.residential_address.vendor_workflow Vendor-specific workflow or configuration ID associated with the request made. + # @option proofing_results [Hash] context.stages.state_id Object holding details about the call made to the state ID proofing vendor + # @option proofing_results [Boolean] context.stages.state_id.success Whether the PII associated with the user's state ID document passed proofing + # @option proofing_results [Hash] context.stages.state_id.errors Object describing errors encountered while proofing the user's state ID PII + # @option proofing_results [String,nil] context.stages.state_id.exception If an exception occured during state ID PII verification its message is provided here + # @option proofing_results [Boolean] context.stages.state_id.mva_exception For AAMVA, whether the exception that occurred was due to an error on the state MVA side + # @option proofing_results [Hash] context.stages.state_id.requested_attributes An object whose keys are field names and values are "1" representing PII attributes sent to the state ID proofing vendor for verification. + # @option proofing_results [Boolean] context.stages.state_id.timed_out Whether the request to the state ID verification vendor timed out + # @option proofing_results [String] context.stages.state_id.transaction_id Vendor-specific transaction ID for the request made to the state id proofing vendor + # @option proofing_results [String] context.stages.state_id.vendor_name Name of the vendor used for state ID PII verification. If the ID was not from a supported jurisdiction, it will be "UnsupportedJurisdiction". It MAY also be "UnsupportedJurisdiction" if state ID verification was not needed because other vendor calls did not succeed. + # @option proofing_results [String] context.stages.state_id.state The state that was listed as the user's address on their state ID. Note that this may differ from state_id_jurisdiction. + # @option proofing_results [String] context.stages.state_id.state_id_jurisdiction The state that issued the drivers license or ID card being used for proofing. + # @option proofing_results [String] context.stages.state_id.state_id_number A string describing the _format_ of the state ID number provided. + # @option proofing_results [Hash] context.stages.threatmetrix Object holding details about the call made to the device profiling vendor + # @option proofing_results [String] context.stages.threatmetrix.client Identifier string indicating which client was used. + # @option proofing_results [Boolean] context.stages.threatmetrix.success Whether the request to the vendor succeeded. + # @option proofing_results [Hash] context.stages.threatmetrix.errors Hash describing errors encountered when making the request. + # @option proofing_results [String,nil] context.stages.threatmetrix.exception If an exception was encountered making the request to the vendor, its message is provided here. + # @option proofing_results [Boolean] context.stages.threatmetrix.timed_out Whether the request to the vendor timed out. + # @option proofing_results [String] context.stages.threatmetrix.transaction_id Vendor-specific transaction ID for the request. + # @option proofing_results [Hash] context.stages.threatmetrix.response_body JSON body of the response returned from the vendor. PII has been redacted. + # @option proofing_results [String] context.stages.threatmetrix.response_body.account_lex_id LexID associated with the response. + # @option proofing_results [String] context.stages.threatmetrix.response_body.session_id Session ID associated with the response. + # @option proofing_results [String] context.stages.threatmetrix.review_status One of "pass", "review", "reject". # @param skip_hybrid_handoff [Boolean] Whether the user should skip hybrid handoff (i.e. because they are already on a mobile device) # @param ssn_is_unique [Boolean] Whether another Profile existed with the same SSN at the time the profile associated with the current IdV session was minted. # @param step [String] Always "verify" (leftover from flow state machine days) From 6dfca47e8b68c5ace8f41130768e0f5f22543889 Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Fri, 21 Jun 2024 14:01:28 -0700 Subject: [PATCH 3/8] Apply .compact before logging --- app/services/analytics_events.rb | 34 +++++++++++++++++--------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/app/services/analytics_events.rb b/app/services/analytics_events.rb index e102e331083..24fb30756df 100644 --- a/app/services/analytics_events.rb +++ b/app/services/analytics_events.rb @@ -1392,22 +1392,24 @@ def idv_doc_auth_verify_proofing_results( ) track_event( 'IdV: doc auth verify proofing results', - ab_tests:, - acuant_sdk_upgrade_ab_test_bucket:, - address_edited:, - address_line2_present:, - analytics_id:, - errors:, - flow_path:, - irs_reproofing:, - lexisnexis_instant_verify_workflow_ab_test_bucket:, - opted_in_to_in_person_proofing:, - proofing_results:, - skip_hybrid_handoff:, - ssn_is_unique:, - step:, - success:, - **extra, + { + ab_tests:, + acuant_sdk_upgrade_ab_test_bucket:, + address_edited:, + address_line2_present:, + analytics_id:, + errors:, + flow_path:, + irs_reproofing:, + lexisnexis_instant_verify_workflow_ab_test_bucket:, + opted_in_to_in_person_proofing:, + proofing_results:, + skip_hybrid_handoff:, + ssn_is_unique:, + step:, + success:, + **extra, + }.compact, ) end # rubocop:enable Layout/LineLength From 53cf4c6d3e95b456e6313a351d6167ef61361119 Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Fri, 21 Jun 2024 15:10:51 -0700 Subject: [PATCH 4/8] Analytics: remove nil args from happy hybrid path --- spec/features/idv/analytics_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/idv/analytics_spec.rb b/spec/features/idv/analytics_spec.rb index 9b4cc3cd9b1..dc0a1f1fd59 100644 --- a/spec/features/idv/analytics_spec.rb +++ b/spec/features/idv/analytics_spec.rb @@ -324,7 +324,7 @@ flow_path: 'hybrid', step: 'verify', acuant_sdk_upgrade_ab_test_bucket: :default, skip_hybrid_handoff: nil, analytics_id: 'Doc Auth' }, 'IdV: doc auth verify proofing results' => { - success: true, errors: {}, flow_path: 'hybrid', address_edited: false, address_line2_present: false, analytics_id: 'Doc Auth', ssn_is_unique: true, step: 'verify', acuant_sdk_upgrade_ab_test_bucket: :default, skip_hybrid_handoff: nil, + success: true, errors: {}, flow_path: 'hybrid', address_edited: false, address_line2_present: false, analytics_id: 'Doc Auth', ssn_is_unique: true, step: 'verify', acuant_sdk_upgrade_ab_test_bucket: :default, proofing_results: base_proofing_results }, 'IdV: phone of record visited' => { From cbd363f8137745496f1ef78350677483aec827a7 Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Fri, 21 Jun 2024 15:12:55 -0700 Subject: [PATCH 5/8] Analytics: remove nil args from happy path --- spec/features/idv/analytics_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/idv/analytics_spec.rb b/spec/features/idv/analytics_spec.rb index dc0a1f1fd59..aa4b7df5b13 100644 --- a/spec/features/idv/analytics_spec.rb +++ b/spec/features/idv/analytics_spec.rb @@ -198,7 +198,7 @@ flow_path: 'standard', step: 'verify', acuant_sdk_upgrade_ab_test_bucket: :default, skip_hybrid_handoff: nil, analytics_id: 'Doc Auth' }, 'IdV: doc auth verify proofing results' => { - success: true, errors: {}, flow_path: 'standard', address_edited: false, address_line2_present: false, analytics_id: 'Doc Auth', ssn_is_unique: true, step: 'verify', acuant_sdk_upgrade_ab_test_bucket: :default, skip_hybrid_handoff: nil, + success: true, errors: {}, flow_path: 'standard', address_edited: false, address_line2_present: false, analytics_id: 'Doc Auth', ssn_is_unique: true, step: 'verify', acuant_sdk_upgrade_ab_test_bucket: :default, proofing_results: base_proofing_results }, 'IdV: phone of record visited' => { From 5293314fe19f049a91cb40d22805953a6eebd29b Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Fri, 21 Jun 2024 15:16:07 -0700 Subject: [PATCH 6/8] Analytics: Remove nil args from gpo path test --- spec/features/idv/analytics_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/idv/analytics_spec.rb b/spec/features/idv/analytics_spec.rb index aa4b7df5b13..cf0faeffd93 100644 --- a/spec/features/idv/analytics_spec.rb +++ b/spec/features/idv/analytics_spec.rb @@ -447,7 +447,7 @@ flow_path: 'standard', step: 'verify', acuant_sdk_upgrade_ab_test_bucket: :default, skip_hybrid_handoff: nil, analytics_id: 'Doc Auth' }, 'IdV: doc auth verify proofing results' => { - success: true, errors: {}, flow_path: 'standard', address_edited: false, address_line2_present: false, analytics_id: 'Doc Auth', ssn_is_unique: true, step: 'verify', acuant_sdk_upgrade_ab_test_bucket: :default, skip_hybrid_handoff: nil, + success: true, errors: {}, flow_path: 'standard', address_edited: false, address_line2_present: false, analytics_id: 'Doc Auth', ssn_is_unique: true, step: 'verify', acuant_sdk_upgrade_ab_test_bucket: :default, proofing_results: base_proofing_results }, 'IdV: phone of record visited' => { From 9009848607aa93b4afb4d40a2b1a51414ab6cd37 Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Fri, 21 Jun 2024 15:21:05 -0700 Subject: [PATCH 7/8] Analytics: Remove nil args from in person test --- spec/features/idv/analytics_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/idv/analytics_spec.rb b/spec/features/idv/analytics_spec.rb index cf0faeffd93..64e70426621 100644 --- a/spec/features/idv/analytics_spec.rb +++ b/spec/features/idv/analytics_spec.rb @@ -565,7 +565,7 @@ analytics_id: 'In Person Proofing', step: 'verify', flow_path: 'standard', same_address_as_id: false, acuant_sdk_upgrade_ab_test_bucket: :default, skip_hybrid_handoff: nil }, 'IdV: doc auth verify proofing results' => { - success: true, errors: {}, flow_path: 'standard', address_edited: false, address_line2_present: false, analytics_id: 'In Person Proofing', ssn_is_unique: true, step: 'verify', acuant_sdk_upgrade_ab_test_bucket: :default, same_address_as_id: false, skip_hybrid_handoff: nil, + success: true, errors: {}, flow_path: 'standard', address_edited: false, address_line2_present: false, analytics_id: 'In Person Proofing', ssn_is_unique: true, step: 'verify', acuant_sdk_upgrade_ab_test_bucket: :default, same_address_as_id: false, proofing_results: in_person_path_proofing_results }, 'IdV: phone confirmation form' => { From 018a2192241181c13784cfd49360f8592ca80572 Mon Sep 17 00:00:00 2001 From: Matt Hinz Date: Fri, 21 Jun 2024 15:24:08 -0700 Subject: [PATCH 8/8] Analytics: Remove nil args from happy selfie tests --- spec/features/idv/analytics_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/idv/analytics_spec.rb b/spec/features/idv/analytics_spec.rb index 64e70426621..774970009f0 100644 --- a/spec/features/idv/analytics_spec.rb +++ b/spec/features/idv/analytics_spec.rb @@ -698,7 +698,7 @@ flow_path: 'standard', step: 'verify', acuant_sdk_upgrade_ab_test_bucket: :default, skip_hybrid_handoff: anything, analytics_id: 'Doc Auth' }, 'IdV: doc auth verify proofing results' => { - success: true, errors: {}, flow_path: 'standard', address_edited: false, address_line2_present: false, analytics_id: 'Doc Auth', ssn_is_unique: true, step: 'verify', acuant_sdk_upgrade_ab_test_bucket: :default, skip_hybrid_handoff: anything, + success: true, errors: {}, flow_path: 'standard', address_edited: false, address_line2_present: false, analytics_id: 'Doc Auth', ssn_is_unique: true, step: 'verify', acuant_sdk_upgrade_ab_test_bucket: :default, proofing_results: base_proofing_results }, 'IdV: phone of record visited' => {