Support hidden environment variables in tests #44556
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Resolves #44047. The EnvironmentVariableLoader currently passes all environment variable values to tests as plain strings. A consequence of this is that variable values can be exposed in pytest outputs, since pytest logs the test inputs and local variables upon failure. While this is helpful for debugging, it can be problematic when these variables are used to store secrets (e.g. account keys).
This PR adds a
hide_secretskwarg to the EnvironmentVariableLoader, which allows the user to specify which environment variables should be considered sensitive/secret. These variables will have their values wrapped in an EnvironmentVariable instance that has an overridden, redacted__str__implementation to hide secrets in logs. To get the value during test execution, just use the.secretattribute wherever the value would have been used directly before.This PR also migrates
azure-storage-file-sharetests to hide account keys.As a draft, documentation in
tests.mdis pending. Storage tests have been confirmed locally to work in playback, but they still need to be tested in live mode.All SDK Contribution checklist:
General Guidelines and Best Practices
Testing Guidelines