Skip to content

feat(seeder): add --account-age-days to seed aged individual users - #8201

Open
nthompson-bitwarden wants to merge 1 commit into
mainfrom
seeder/add-option-to-seed-aged-users
Open

feat(seeder): add --account-age-days to seed aged individual users#8201
nthompson-bitwarden wants to merge 1 commit into
mainfrom
seeder/add-option-to-seed-aged-users

Conversation

@nthompson-bitwarden

Copy link
Copy Markdown
Contributor

🎟️ Tracking

https://bitwarden.atlassian.net/browse/QA-2310

📔 Objective

Backdate a seeded individual user's CreationDate by N days for account-age-dependent scenarios. Threads a nullable CreationDate from the CLI flag through IndividualUserOptions, the orchestrator, builder, and step into UserSeeder.Create, which applies it only when supplied. RevisionDate and AccountRevisionDate keep their UtcNow defaults.

📸 Screenshots

Backdate a seeded individual user's CreationDate by N days for
account-age-dependent scenarios. Threads a nullable CreationDate from the
CLI flag through IndividualUserOptions, the orchestrator, builder, and step
into UserSeeder.Create, which applies it only when supplied. RevisionDate
and AccountRevisionDate keep their UtcNow defaults.
@nthompson-bitwarden nthompson-bitwarden added t:misc Change Type - ¯\_(ツ)_/¯ Prefer using other type labels ai-review Request a Claude code review labels Aug 13, 2026
@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

🤖 Bitwarden Claude Code Review

Overall Assessment: APPROVE

Reviewed the new --account-age-days flag threading a nullable CreationDate from IndividualArgs through IndividualUserOptions, RecipeOrchestrator, RecipeBuilderExtensions, CreateIndividualUserStep, and into UserSeeder.Create. The change is additive and opt-in: CreationDate is applied only when supplied, so the entity's UtcNow defaults (including RevisionDate and AccountRevisionDate) are preserved for every existing caller, and the new optional parameters keep the builder and step signatures source-compatible. Negative input is rejected in IndividualArgs.Validate(), the backdated value survives the BulkCommitter BulkCopy path unchanged, and the three new xUnit tests cover the supplied, unsupplied, and revision-date-isolation cases. Documentation is consistent — the new aged-accounts.md scenario follows the template, is registered in the scenarios table, and the CLI reference records the flag.

Code Review Details

No findings. This is a scoped dev-tooling change with matching test and documentation coverage; it touches no production request paths, vault data, or cryptographic material.

@codecov

codecov Bot commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 0.00%. Comparing base (643e3aa) to head (5e66b0e).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #8201       +/-   ##
==========================================
- Coverage   68.41%       0   -68.42%     
==========================================
  Files        2380       0     -2380     
  Lines      103679       0   -103679     
  Branches     9386       0     -9386     
==========================================
- Hits        70931       0    -70931     
+ Misses      30420       0    -30420     
+ Partials     2328       0     -2328     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ai-review Request a Claude code review t:misc Change Type - ¯\_(ツ)_/¯ Prefer using other type labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant