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

internal/testkeys: use fixed keys in unit tests #1191

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

davidweisse
Copy link
Contributor

We can speed up unit tests, and make them more deterministic by using fixed keys, instead of generating them at runtime. A number of fixed keys are stored in the internal/testkeys package in Base64 encoded PKCS8 format, which can be used in unit tests with the testkeys.New function.

@davidweisse davidweisse added the no changelog PRs not listed in the release notes label Jan 27, 2025
internal/testkeys/testkeys.go Show resolved Hide resolved
Comment on lines 50 to 53
if _, ok := key.(*T); !ok {
return nil, fmt.Errorf("invalid key type: %T", key)
}
return key.(*T), nil
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
if _, ok := key.(*T); !ok {
return nil, fmt.Errorf("invalid key type: %T", key)
}
return key.(*T), nil
typedKey, ok := key.(*T);
if !ok {
return nil, fmt.Errorf("invalid key type: %T", key)
}
return typedKey, nil

"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",
}

func New[T crypto.PrivateKey](keyString EncodedKeyString) (*T, error) {
Copy link
Contributor

Choose a reason for hiding this comment

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

I think this would be easier to use if the signature was

func New[T crypto.PrivateKey](t *testing.T, keyString EncodedKeyString) *T

and the function would fail the test if the key does not decode.

internal/testkeys/testkeys.go Show resolved Hide resolved
@burgerdev burgerdev added the do not merge This shouldn't be merged at this point label Jan 27, 2025
@burgerdev burgerdev removed the do not merge This shouldn't be merged at this point label Feb 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
no changelog PRs not listed in the release notes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants