Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sprint 15 #459

Merged
merged 18 commits into from
Jan 22, 2025
Merged

Sprint 15 #459

merged 18 commits into from
Jan 22, 2025

Conversation

jlkravitz
Copy link
Collaborator

@jlkravitz jlkravitz commented Jan 21, 2025

  • stand up the site locally
    • test all functionality in all major browsers, emphasizing the functionality that this pull request addresses
      • for public-facing functionality, test in browsers consistent with public browser use data
      • test in Mobile Safari and Mobile Chrome
    • use an automated audit tool for code quality and practices (recommended: Chrome DevTools, aka Lighthouse)
      • look at efficiency of page loads, asset sizes, HTTP connection management, etc.
    • review for accessibility
      • use an automated audit tool, such as Chrome Audit or aXe
      • navigate site only with the keyboard
      • use VoiceOver or Narrator to navigate the site with audio only, with the display turned off
      • manually test anything that pa11y cannot test automatically (e.g., contrast of text over images)
  • review static code analysis results, if available
  • run a security audit of dependencies (e.g. npm audit and pip audit) to ensure that there are no vulnerabilities that will be deployed to production (as opposed to vulnerabilities that only have an impact on the development environment)
  • examine OWASP ZAP output to ensure that any errors are known to be false positives or have been previously declared to be acceptable
  • for each feature-level bug (i.e., it’s working as designed, but designed wrong), open a new issue and put it in the backlog

jsandoval81 and others added 14 commits December 20, 2024 09:55
### Requirements List
- Python 3.12+
- A working sandbox account, once you have access you can get it set up
by:
0) Create AWS CLI profile that has access to your sandbox and login as
that
1) Follow the modified readme in compact-connect 
2) Run the create_staff_user.py script
3) Validate emails to your ia account in ses so that you can get your
temp passwords for your licensee user.
4) Manually create a licensee user in the relevant user pool and
associated db records (licensee and license). I can help with this when
needed.
5) You may need to do your initial deploy twice as there is a race
condition that fails the first time but is met the second time

### Description List
- Added mock login support
- Added route guarding based on role
- Modified logout flow to hit both hosted logout pages by hopping to and
from logout page that will handle logout cases
- Fixed 401 interceptor handler to actually fully logout

### Testing List
- `yarn test:unit:all` should run without errors or warnings
- `yarn serve` should run without errors or warnings
- `yarn build` should run without errors or warnings
- For API configuration changes: CDK tests back/bin/run_tests.sh
- Code review
- Try logging in as a licensee, staff, both and logout and verify
logging out logs out all users
- Try the mockAPI flow in the same way
- Produce a 401 error by modifying your access or id token (staff and
licensee respectively) and refreshing and confirm the 401 causes the
user to totally logout
- Try going to routes that should not be available to a logged in user
(both staff and licensee) and confirm they are redirected to their part
of the site

Closes #321

---------

Co-authored-by: Dana Stiefel <[email protected]>
Co-authored-by: Joshua Kravitz <[email protected]>
### Requirements List
- _None_

### Description List
- Swapped out the existing lo-fi app style for the hi-fi design version
-
https://www.figma.com/design/SYM0uWszsu8Sf0YfxAhIMY/JCC?node-id=1-12&p=f&t=etxgVUar50LKNAGL-0
- Also updated the green text color to be WCAG AA
- The designs as-of 12/20 aren't crystal clear on the nav menu on phone
size; but the design team and I discussed and concluded the following:
- On tablet & desktop the nav menu will always be partially expanded
(icons only)
- On tablet & desktop the nav menu will expand fully when hovered /
focused
- On phone the nav menu will not be present, but instead a fixed header
with a hamburger toggle
- On phone the nav menu will expand fully when toggled, similar to
tablet & desktop
- Note that these updates were only to layout & style - not new screen
features / updates; with the few exceptions below
    - Licensee credit card payment screen:
- Re-arranged the first / last name form fields to match the current
designs billing address section,
        - Added a mock populate for local environments
- Note that the overhaul of the Staff Licensing Data Detail page is
covered in a separate ticket #361

### Testing List
- `yarn test:unit:all` should run without errors or warnings
- `yarn serve` should run without errors or warnings
- `yarn build` should run without errors or warnings
- Code review
- Smoke test all app screens; feel free to reach out on Slack w/ initial
questions if it's easier than piling up this PR with a lot of small
threads.
- Depending on how nit any findings are, they _may_ be separate tickets
since we were just squeezing this update in between feature
enhancements.

Closes #313 
Closes #405
…#420)

This PR adds a new workflow for processing transaction history and
sending email notifications when batch settlement failures occur.

The workflow consists of two main components:

1. Transaction History Processing Lambda
2. Email Notification Service Lambda

### Transaction History Processing Lambda

The transaction history processor runs daily at noon UTC-4 and performs
the following:

1. Retrieves settled transactions from the payment processor for the
last 24 hours
2. Processes transactions in batches (max 500 per iteration) to avoid
timeouts
3. Stores transaction records in DynamoDB with the following schema:
   - `pk`: `COMPACT#{compact}#TRANSACTIONS#MONTH#{YYYY-MM}`
- `sk`:
`COMPACT#{compact}#TIME#{epoch}#BATCH#{batchId}#TX#{transactionId}`
4. Returns one of three statuses:
   - `COMPLETE`: All transactions processed successfully
- `IN_PROGRESS`: More transactions to process (triggers another
iteration)
- `BATCH_FAILURE`: Settlement error detected in batch (triggers email
notification)

### Email Notification Service Lambda

A new general-purpose email notification service that:

1. Takes a template name and recipient configuration
2. Loads recipient email addresses from the compact configuration table
3. Supports multiple recipient types:
   - Compact Operations Team
   - Compact Adverse Actions
   - Compact Summary Report
   - Specific email addresses
4. Renders emails using EmailBuilderJS for consistent formatting
5. Sends emails via SES with proper branding and formatting

### Requirements List
- This change requires that all compacts listed in the cdk.json have
valid credentials to an authorize.net account. Without this, when the
workflow attempts to run it will fail and an alert will be fired once
per compact every day (very noisy by design). This means we either need
to remove all compacts from the cdk.json file that we do not want to
have this workflow for, or we disable alerting for this particular
workflow infrastructure until we are ready to go live.

### Description List
- Added new Transaction History DynamoDB table
- Added Step function workflow to process settled transactions daily
- Added python lambda that uses Authorize.net's SDK to fetch settled
transaction history
- Added Email Notification Service for sending email notifications
anywhere in system.

### Testing List
- Unit and functional tests for both lambdas and supporting classes
- Manual testing in development environment

Closes #286

---------

Co-authored-by: Justin Frahm <[email protected]>
This is part two of the mock resource cleanup. Now that the API ands
Ingest stacks are no longer referencing the mock data resources, we can
safely delete them from the persistent stack.

### Requirements List
- As part of the deployment to the production environment, after the
stacks have finished deploying this update, a developer with the proper
permissions will need to delete the following tables/buckets manually:

- MockLicenseTable
- LicenseTable
- MockBulkUploadsBucket

### Description List
- Removed mock and deprecated license table resources
- Removed mock uploads bucket references

### Testing List
- local deployment to sandbox environment to ensure stack updates deploy
successfully
- Code review

Closes #110
### Requirements List
- `yarn install --ignore-engines`

### Description List
- Address
https://github.com/csg-org/CompactConnect/security/dependabot/63

### Testing List
- `yarn test:unit:all` should run without errors or warnings
- `yarn serve` should run without errors or warnings
- `yarn build` should run without errors or warnings
- Code review

Closes #431
### Requirements List
- _None_

### Description List
- Move message augmentation to after message evaluation
- Update frontend to match latest backend pw requirements (length only)
- Add tests

### Testing List
- `yarn test:unit:all` should run without errors or warnings
- `yarn serve` should run without errors or warnings
- `yarn build` should run without errors or warnings
- Code review
- Fill out the change-password section of the account page to ensure
correct validation behavior
    - No need to actually submit the change

Closes #410
### Requirements List
- _None_

### Description List
- Change compact-level `read` permission to `readPrivate`
- Add state-level `readPrivate` permission
- Omit compact permission in server payload if current user isn't
compact admin (rather than sending `false`)
- Don't re-send permissions as `false`
- Updated licensee model tests for slightly improved coverage

### Testing List
- `yarn test:unit:all` should run without errors or warnings
- `yarn serve` should run without errors or warnings
- `yarn build` should run without errors or warnings
- Code review
- Make sure to have 3 users created for yourself (this will be helpful
with testing many PRs; should be able to use UI if needed):
    - A compact admin
    - A state admin (same compact)
    - A non-state admin (same compact)
- Ensure compact admin can set / update all types of permissions for
users
- Ensure state admin can set / update all types of permissions for users
in their state(s)
- Ensure non-state admin can't perform user management

Closes #325
### Requirements List
- A working LicenseeUser account

### Description List
- Added in Military Status page
- Added in Update Military Status page
- Added in store + network modules needed to facilitate pages'
functionality
- Updated Licensee model and serializer to capture military affiliations
api implementation
- Added military affiliations model and serializer
- Edited `FinalizePrivilegePurchase` page and
`SelectedStatePurchaseInformation` component to refer to both the state
and user's military status to make a military discount determination
- Fixed bug in `InputRadioGroup` component causing multi-line labels to
break layout
- Added / updated tests as needed

### Testing List
- `yarn test:unit:all` should run without errors or warnings
- `yarn serve` should run without errors or warnings
- `yarn build` should run without errors or warnings
- Code review
- On both mock and real api and in all screen sizes:
1) click on the view military status button to view your status page
2) Click edit info to go the doc upload page
3) Fill out the form, confirm it does not allow submission with no
select choice and no / invalid document selection
4) Submit
5) View your updated military status (real api only)
6) Go through the privilege purchase flow and notice military
affiliation discount is being applied
7) Return to the military status screen; try ending your military status
8) Status should now be inactive
9) Go back through privilege purchase flow, confirm military affiliation
is no longer being applied

Closes #281 

Notes: 

- The real API system only saves one document upload submission per day.
It will replace a prior submission in the day with your most recent one
- The document upload is eventually consistent so your status may not
immediately update. I've found it to take ~1 second but theoretically it
could be longer.

---------

Co-authored-by: Dana Stiefel <[email protected]>
### Description List
- Added `licenseUpdate` and `privilegeUpdate` record types
- Added change detection and update record creation on license ingest
and privilege purchase processes
- Updated provider detail response to present change history in license
and privilege objects

Closes #
#186
Copy link
Collaborator Author

@jlkravitz jlkravitz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jsandoval81 @jusdino Apologies for the delay on this one. Per last sprint review discussion, I'm going to try to meet with @isabeleliassen to prioritize and demonstrate the kinds of things that come up in sprint reviews. I'll create tickets for the relevant items after this discussion.

Regardless, I wanted to share these comments with you now.

I've tentatively tagged each item as either a #hotfix or #ticket item in each individual comment. Feel free to let me know if you agree/disagree with any of these designations. I also made my best guess as to whether each item will require changes on the frontend, backend, or both.

@isabeleliassen isabeleliassen self-requested a review January 21, 2025 19:15
File extension matching should not fail if extension is a valid type by
uses different casing
jsandoval81 and others added 3 commits January 22, 2025 13:48
### Requirements List
- _None_

### Description List
- Add aria-label to mobile nav logo

### Testing List
- `yarn test:unit:all` should run without errors or warnings
- `yarn serve` should run without errors or warnings
- `yarn build` should run without errors or warnings
- Code review

Sprint PR hotfix.
### Requirements List
- _None_

### Description List
- Joi password plugin was not string matching all cases as expected, so
we just removed that constraint since it wasn't server enforced anyway.

### Testing List
- `yarn test:unit:all` should run without errors or warnings
- `yarn serve` should run without errors or warnings
- `yarn build` should run without errors or warnings
- Code review
- New password should now just enforce character length only, which
aligns exactly with the backend currently.

Hotfix for sprint merge.
### Requirements List
-

### Description List
- Fixed military modal focus for accessibility
- Fixed military page text contrast

### Testing List
- `yarn test:unit:all` should run without errors or warnings
- `yarn serve` should run without errors or warnings
- `yarn build` should run without errors or warnings
- Smoke test focus change and capture on open military modal
- Confirm contrast issues are fixed
- Code review

Co-authored-by: Dana Stiefel <[email protected]>
@isabeleliassen isabeleliassen merged commit 412c341 into main Jan 22, 2025
8 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants