tests: add coverage for provider-specific fallback notices (#855)#923
Conversation
|
The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message. To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook. |
|
@nimesh-xecurify would you be open to review this PR as well? |
There was a problem hiding this comment.
Pull request overview
Adds PHPUnit coverage for the provider-specific fallback notice logic in Two_Factor_Core::user_two_factor_options(), ensuring the profile UI wording correctly switches between “Recovery Codes” vs generic messaging depending on whether Two_Factor_Backup_Codes is present in the filtered provider list.
Changes:
- Added two tests that assert the correct notice wording when Backup Codes are available vs filtered out.
- Introduced helper methods to (a) clear
Two_Factor_Core’s staticprofile_errorsbetween tests and (b) captureuser_two_factor_options()markup as a string.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Wrap the render in try/finally so a throw in user_two_factor_options() can't leak this helper's output buffer or the static profile-errors state into later tests. The finally unwinds only buffers opened here (guarded by the captured ob level) and re-clears profile errors.
masteradhoc
left a comment
There was a problem hiding this comment.
Thanks for your contribution!
Follow-up tests for PR #858, which landed without test coverage.
What
Two tests for the conditional notice logic introduced in #858:
test_user_two_factor_options_mentions_recovery_codes_when_backup_codes_are_available— whenTwo_Factor_Backup_Codesis registered, the profile UI should name "Recovery Codes" specificallytest_user_two_factor_options_uses_generic_wording_when_backup_codes_are_filtered_out— whenTwo_Factor_Backup_Codesis removed via thetwo_factor_providersfilter, the UI should use the generic fallback wording insteadAlso adds two private helpers used by these tests (and available for future notice-related tests):
reset_profile_errors()— clears the static$profile_errorsarray between tests via reflectionrender_user_two_factor_options()— capturesuser_two_factor_options()output to a stringWhy
The fix in #858 is a conditional: one branch names "Recovery Codes" explicitly, the other uses generic wording. Without tests, either branch could silently regress. These tests pin both sides of the condition.