Skip to content

RC 219 to Production#7183

Merged
mdiarra3 merged 42 commits intostages/prodfrom
stages/rc-2022-10-20
Oct 20, 2022
Merged

RC 219 to Production#7183
mdiarra3 merged 42 commits intostages/prodfrom
stages/rc-2022-10-20

Conversation

@mdiarra3
Copy link
Contributor

Improvements

Bug Fixes

  • Backup Codes: Fix backup code download for Internet Explorer (#7146)
  • Emails: Ensure email belongs to account when resending email confirmation email (#7164)
  • Mailers: Resolve unhandled errors by correcting error class name (#7162)

Internal

  • API improvements: Add and update information for American Samoa and Northern Mariana Islands (#7154)
  • Analytics: Remove unused analytics events (#7142)
  • Analytics: Refactor UI click analytics tracking (#7109)
  • Analytics: Remove unused feature support in frontend logger (#7143)
  • Analytics: Add common properties to identity verification events (#7111)
  • Automated Testing: Improve reliability of feature specs (#7145)
  • Build Tooling: Remove redundant JavaScript optimization step (#7136)
  • Code Quality: Remove unused code (#7150)
  • Code Quality: Remove unreachable code (#7157)
  • Dependencies: Update dependencies to resolve security advisories (#7168)
  • Email: Ensure all UserMailer emails have matching User and EmailAddress parameters and plaintext emails are not used as parameters (#7106)
  • Identity Verification: Track the agency requesting identity verification. (#7125)
  • Inherited Proofing: Turn va_inherited_proofing_mock_enabled true for development environments (#7172)
  • Logging: Remove unused database columns (#7132)
  • Logging: Stop writing extra registration_logs timestamps (#7131)
  • Logging: Log Emails Sent (#7155)
  • Performance: Reduce JavaScript bundle size in critical paths (#7170, #7171)

Upcoming Features

gangelo and others added 30 commits October 13, 2022 10:26
…entity Proofing Process (1 of n) (#7124)

* Create concern to render 404 if

The IdentityConfig.store.inherited_proofing_enabled returns false in
preparation for use in the Inherited Proofing (IP) cancellations controller
that needs to be created. Eventually, this code may get thrown away
once IP goes live; however, this makes for less lines of code that
need to be removed once/if it does.

changelog: Improvements, Upcoming Features, LG-7446 Create Inherited Proofing Cancellation Links and Process

* Add skeleton InheritedProofingCancellationsController

Specs to be added in subsequent PR when controller actions
are fleshed out.

* Add InheritedProofingCancellationsController views and i18n

* Add routes for InheritedProofingCancellationsController actions

* Satisfy Brakeman violations

Specifically, the "Render path contains parameter value" violation.

This commit whitelists the flow steps expected and raises an error
if params[:step] is not found in the whitelist.

Confidence: Weak
Category: Dynamic Render Path
Check: Render
Message: Render path contains parameter value
Code: render(action => ButtonComponent.new(:action =>
  (lambda do  button_to(idv_inherited_proofing_cancel_path(:step => params[:step]),
  { **tag_options }, &block)  end), :method => :put, :big => true, :wide => true,
  :outline => true).with_content(t("inherited_proofing.cancel.actions.keep_going")), {})
File: app/views/idv/inherited_proofing_cancellations/new.html.erb
Line: 23

Confidence: Weak
Category: Dynamic Render Path
Check: Render
Message: Render path contains parameter value
Code: render(action => SpinnerButtonComponent.new(:action =>
  (lambda do  button_to(idv_inherited_proofing_cancel_path(:step => params[:step],
  :location => "cancel"), { **tag_options }, &block)  end), :method => :delete,
  :big => true, :wide => true, :outline => true,
  :form => ({ :data => ({ :form_steps_wait => "" }) }))
  .with_content(CancellationsPresenter.new(:sp_name =>
  decorated_session.sp_name, :url_options => url_options).exit_action_text), {})
File: app/views/idv/inherited_proofing_cancellations/new.html.erb
Line: 44
changelog: Internal, Analytics, Remove unused analytics events
changelog: Internal, Build Tooling, Remove redundant JavaScript optimization step
changelog: Internal, Analytics, Remove unused feature support in frontend logger

Last usages removed in #7110
#7106)

* Ensure all UserMailer emails have matching User and EmailAddress parameters and plaintext emails are not used as parameters

changelog: Internal, Email, Ensure all UserMailer emails have matching User and EmailAddress parameters and plaintext emails are not used as parameters

Co-authored-by: Zach Margolis <zachmargolis@users.noreply.github.com>

* fix mailer previews

Co-authored-by: Zach Margolis <zachmargolis@users.noreply.github.com>
- Make registration_logs.submitted_at nullable, stop writing it
- Ignore other columns

changelog: Internal, Logging, Stop writing extra registration_logs timestamps
…#6894)

* Update SAML SP request flow to POST internally instead of GET

* Add route for internal SAML auth POST requests

* changelog: Improvements, Service Provider Authentication, Update SAML Authentication Flow

* Add feature flag for SAML internal POST update, tests for the flag
**Why**: Clicking "Continue" from the "prepare" step will wait for a client-side logging event before continuing to the "State ID" step, which often cannot complete before the 0.5 second tolerance allowed by default in local development environments.

changelog: Internal, Automated Testing, Improve reliability of feature specs
…7125)

* LG-7702: record the issuer of the SP requesting idv in the profile.

changelog: Internal, Identity Verification, Track the agency requesting identity verification.

* record the initiating sp as an association
* use the issuer as the foreign key
…entity Proofing Process (2 of n) (#7144)

* Segregate Inherited Proofing routes

changelog: Improvements, Upcoming Features, LG-7446 Create Inherited Proofing Cancellation Links and Process

* Rename concern to avoid whitelist in naming

- Flow step whitelist should be compared as strings
so this was changed as well.
- ...not Symbols, because they will be compared against
params[:step] which will be a String value.
- Remove unnecessary code

* Add InheritedProofingCancellationsController specs
changelog: Internal, Code Quality, Remove unused code
* Remove unreachable reference to secure_headers gem

changelog: Internal, Code Quality, Remove unreachable code

* Re-expand map block

Avoid nested inline blocks, simplify diff
changelog: Internal, Logging, Remove unused database columns
…e for all environments (#7127)

* set va_inherited_proofing_mock_enabled to false for all environments

* changelog: Feature Toggles,InheritedProofing,DisableMockDefaultToggleValue

* changelog: Upcoming Features,InheritedProofing,DisableMockDefaultToggleValue
* Fix typo for user mailer validation error class

changelog: Bug Fixes, Mailers, Resolve unhandled errors by correcting error class name

* Add spec
**Why**: in production, running one rake task causes them all to be loaded
so this puts statement got executed from an unrelated task, because it
was at the class level

[skip changelog]
* email analytics sent for success and failure emails

* log email event for success version

* log event exists for failed email

* check email analytics are logged

* update time param so tests pass

* Internal, Analytics, add email analytics

* fix lint issues

* change email version to type

* remove wait time

* remove redundant email type
* Use class members instead of instance members

* Refresh token if it has less than 1 second left

* Initialize class member variables

* Revert "Refresh token if it has less than 1 second left"

This reverts commit 248de40.

* changelog: Upcoming Features, In-person proofing, Cache usps api token better

* Use mattr_reader so members are readable in spec

* Update app/services/usps_in_person_proofing/proofer.rb

Co-authored-by: Andrew Duthie <andrew.duthie@gsa.gov>

* Update app/services/usps_in_person_proofing/proofer.rb

Co-authored-by: Andrew Duthie <andrew.duthie@gsa.gov>

* Update app/services/usps_in_person_proofing/proofer.rb

Co-authored-by: Andrew Duthie <andrew.duthie@gsa.gov>

Co-authored-by: Andrew Duthie <andrew.duthie@gsa.gov>
* LG-7353
 - Removed body copy under H1
 - Removed H2 "Your personal key"
 - Updated caption copy to read "Your personal key was generated..."
 - Removed the previous "Save it. Keep it safe." block from this
   section
 - Added new copy
- Moved personal key links into _key partial and un-styled them.
- Added "What is a personal key?" accordian
- Added acknowledgement checkbox and text
- Widened continue
- Moved strings out to new locale file entries.
- Removed personal key confirmation dialog feature flag (the dialog is
 gone and the flag is now unused).

Co-authored-by: Andrew Duthie <andrew.duthie@gsa.gov>
…il (#7164)

* Ensure email belongs to account when resending email confirmation email

changelog: Bug Fixes, Emails, Ensure email belongs to account when resending email confirmation email

* add analytics
…entity Proofing Process (3 of n) (#7148)

* Create a partial to with Cancel link for use in IP views

changelog: Upcoming Features, Inherited Proofing, LG-7446 Create "Cancel" Links and Supporting Cancellation Code for Identity Proofing Process (3 of n)

* Add Cancel link to Agreement step UI

* Add Cancel link to Getting Started step UI

* Add Cancel link to Verify Info step UI

- Remove extra line.

* Add feature spec tests for :agreement and :get_started steps
* LG-7582: Add proofing components to IdV analytics events

changelog: Internal, Analytics, Add common properties to identity verification events

Handle absent user proofing components

Refactor IdV analytics as decorator

It behaves as one, and resolves naming collision of base analytics class

Refactor IdV analytics initializer as concern

more composable, prefer consistency of single application controller

Symbolize analytics keys

consistent analytics argument shape, simplified/consistent spec expected values

Add idv_final to decorated analytics methods

Add proofing_components as explicit parameter to analytics methods

So they're documented, and so that it's enforced as required parameter

Add idv_personal_key_visited to decorated analytics

Add idv_personal_key_submitted to analytics decorator

Add specs for AnalyticsDecorator

Simplify decorator interface by making readers private

Add extra parameter to IdV analytics methods

Add idv_review_info_visited to decorated analytics methods

Add idv_phone_confirmation_otp_submitted to decorated analytics methods

Add idv_phone_confirmation_otp_visit to decorated analytics methods

Sync expected methods

Reference user via analytics instance

Override base analytics method in Idv::AnalyticsConcern

Add idv_phone_confirmation_otp_sent to decorated methods

Add idv_phone_otp_delivery_selection_submitted to decorated methods

Add analytics concern to OtpDeliveryMethodController

So that analytics override occurs as expected

Make FakeAnalytics user parameter optional

Add idv_cancellation_visited as decorated event

Implement decorated methods as method_missing

Discussion: #7111 (comment)

At least for now, to simplify including new methods, can be broken back out later

Still explicitly lists every method, so may address concerns with magic?

Add all cancellation events as decorated

Add GPO come back later event as decorated

Allow optional user for proofing_components

Not really expected, but simplifies existing tests support

Add forgot password events to decorated events

Freeze decorated methods

Try fixing memoized outdated user proofing components

Previously, address_check: 'gpo_letter' was not being shown as included in the logs, but was present in proofing components only after `user.reload`. Operating theory is that because the user is sticky across all request analytics instances, it doesn't behave the same as in real world with per-request initialization

Add GPO letter events to decorated methods

Add personal key frontend events to decorated methods

Not currently working (proofing_components is nil). Maybe user not correctly set?

Refactor proofing components keys as struct

More clarity in analytics method documentation

Rework FrontendLogger to send on analytics instance

Since otherwise the decorated events are not called, since the analytics_method is a reference to the base method in AnalyticsEvent class

spec coverage tbd

Remove analytics concern in favor of baking in decorated analytics

Implement ProofingComponentsLogging custom to_h as sliced model

Accuracy of documented parameter in AnalyticsEvents

See: #7111 (comment)

Add idv_in_person_ready_to_verify_visit as decorated method

Add IdV phone events to decorated methods

Add proofing components expectations for happy path

Fix analytics decorator spec

Revise analytics decorator spec to sample single method

Since all methods should behave the same via define_method implementation, this helps speed up the test

Make proofing_components nillable in analytics events

Too many specs run in isolation without expectation of decorated analytics

Add missing event documentation

Update controller spec analytics assertions

Add idv_setup_errors_visited to decorated methods

Fix specs

Update ApplicationController specs

Handle anonymous analytics user in analytics decorator

Add additional expected properties for IdV phone events

Swap create_or_find_by to find_or_create_by

1. Likely the more optimal query, since at this point it should be expected that a proofing component would already exist
2. Fixes a behavior where user proofing record relation had nil values (proofing component record treated as new/unsaved?)

Refactor analytics decorator as built-in to base Analytics class

#7111 (comment)

Remove lingering reference to decorate method

Normalize asserted events as JSON in FakeAnalytics

Match real-world logging behavior

Log proofing components via as_json method

See: #7111 (comment)

Update specs for nil logged proofing_component

These specs stub analytics without an associated user / proofing component, so proofing components would be expected to be empty

Previously the nil value would have been converted to an empty hash via `to_h`. This is a more desirable result anyways

* Convert asserted time to UTC

Odd that it suddenly starts failing?

* Remove nil proofing_components from compacted events

The analytics method calls Hash#compact

* Move FakeAnalytics JSON conversion to avoid matcher conflict

* Revert changes to ApplicationController spec

No longer decorating
**Why**: We can avoid creating extra methods via alias_method,
avoid a few dynamic #send as well

[skip changelog]
- It always logs something after each run, so that we can get
  better info on why it bails early, if it does

[skip changelog]

Co-authored-by: Andrew Duthie <aduth@users.noreply.github.com>
* Restore README change from abandoned prior branch

* Add increased file descriptor .plist to README

* Move error item into error section of README

* Include sassc-rails gem to resolve intermitten test errors

* Remove sassc-rails per Michelle Henke's advice it's no longer used

* Remove sassc-rails from Gemfile.lock

* changelog: Added, README, increase file descriptor limit

* changelog: Added, README, increase file descriptor limit

* [skip changelog]

* Include nano command to edit .plist file in README

* remove capybara-selenium

Why?

The capybara-selenium gem was last updated on 12/20/2014. The
functionality of that gem has been replaced by the webdrivers gem.

Co-authored-by: Alex Bradley <alexander.bradley@gsa.gov>
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.8 to 1.13.9.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/v1.13.9/CHANGELOG.md)
- [Commits](sparklemotion/nokogiri@v1.13.8...v1.13.9)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Create DownloadButtonComponent for download button

changelog: Bug Fixes, Backup Codes, Fix backup code download for Internet Explorer

* Change "data" argument to "file_data"

Allow use of data-* attributes passed as "data" hash

* Add specs for DownloadButtonComponent

* Simplify to use Uin8Array map argument

See: #7146 (comment)
Co-Authored-By: Zach Margolis <zbmargolis@gmail.com>

* Restore customized download label for personal key

Co-authored-by: Zach Margolis <zbmargolis@gmail.com>
aduth and others added 12 commits October 19, 2022 10:32
* Introduce "Click Observer" component for click event logging

**Why**:

- Avoids the need for ad hoc scripts
  - Fewer JavaScript packs
  - Establishes common pattern
  - Avoids complicated testing for custom packs with side effects
- Easier to implement new click logging
- Makes event logging more discoverable by colocating component rendering with the element being observed

changelog: Internal, Analytics, Refactor UI click analytics tracking

* Restore analytics methods to index

(for now)

sinon stubbing of ES6 modules is... not straight-forward. may need to find an alternate approach (dependency injection?).

* Add context-aware properties to click observer

* Fix double event logging for checkbox label click
* Split design system navigation JavaScript to own pack

changelog: Internal, Performance, Reduce JavaScript bundle size in critical paths

* Port navigation.js to TypeScript
changelog: Internal, Inherited Proofing, Turn va_inherited_proofing_mock_enabled true for development environments

This is so that developers do not have to specifically enable this
switch - we should not be attempting to make live calls in our
development environments by default.
…7155)

* Log Emails Sent

changelog: Internal, Logging, Log Emails Sent

* check for pii

* ensure report mails are delivered now

* track in new relic

* mailer move

* use prepend instead of alias_method
**Why**: Some environments don't have signatures configured,
so it's not an error we need to alert on

[skip changelog]
* Add info for American Samoa, edit info for Northern Mariana Islands

changelog: Internal, API improvements, add and update information for American Samoa and Northern Mariana Islands

* fix lint error

* update information for Japan

* revert `supports_sms` value for MP and AS

* revert based on discussion

* Revert "revert based on discussion"

This reverts commit 2e696f8.
* Remove FormSteps basePath option handling

changelog: Internal, Performance, Reduce JavaScript bundle size in critical paths

* Restore i18n dropdown initialization

Previous condition ran `setUp` except in test environment. Since JavaScript tests applying to this file for URL sync have been removed, always run initialization at top-level scope
…s from resolution (#7177)

Previous commits made the State ID Proofer (AAMVA) and the Resolution Proofer (LexisNexis InstantVerify) aware of specific attributes that passed and failed. The purpose of this work was to allow attributes that failed during resolution (namely dob and address) to be covered by attributes verified by the State ID Proofer.

This commit makes a number of changes to that effect:

1. A request is sent to the state ID proofer even if the resolution proofer fails
2. If the attributes that failed the resolution proofer check pass the state ID proofer checks that is considered a pass

A new adjudicator class was created to house this logic.

[skip changelog]
…ion is received from API call. (#7161)

* LG-7449 Add first error page for inherited proofing when there is no response from VA for any reason

* changelog: Upcoming Features,InheritedProofing,AddFirstErrorPage

* fix lint and normalize yml

* add placeholder method, before filter and remove h2

* remove unsed translations
* LG-7703: Force a user to re-verify their identity for IRS.

If a user proofed their identity with a non-IRS SP, then visits
an IRS SP, they will be forced to reproof.

changelog: Improvements, Identity Verification, Require users to re-proof on first IRS visit.

* working on the SAML side
**Why**: This was implicitly the default already, and making
it explicit helps clarify that this is asymmetric encryption
(because the enc: is symmetric)

[skip changelog]
@zachmargolis
Copy link
Contributor

(small request, can we update the PR title to be the RC number, 2XX or whatever?)

@mdiarra3 mdiarra3 changed the title Stages/rc 2022 10 20 RC 219 to Production Oct 20, 2022
@mdiarra3
Copy link
Contributor Author

Yup done! My bad

@mdiarra3 mdiarra3 merged commit 5bbd212 into stages/prod Oct 20, 2022
@mdiarra3 mdiarra3 deleted the stages/rc-2022-10-20 branch October 20, 2022 18:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.