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

Refactor end to end test #37

Merged
merged 23 commits into from
Nov 9, 2019
Merged

Conversation

zugzwang
Copy link
Contributor

@zugzwang zugzwang commented Oct 24, 2019

Refactor end-to-end tests

TestEndToEnd acts like the functional tests of the openpgp package: Take any key (generated on-the-fly or external), encrypt/sign messages to other keys, and decrypt/verify.

Currently, every end-to-end test is happening in end_to_end_test.go, inside the openpgp package. This needs some refactoring:

  • It does not give a clear idea of how the openpgp package API is used.
  • The file is too long and not easy to read.
  • There are some exported functions.

Separate integrationtests package

Create a separate package that imports openpgp and gives a clear idea on how to use the API, while improving readability. Future integration tests with other libraries (such as OpenPGPjs) should be included here.

Split file

  • end_to_end_test.go contains TestEndToEnd and other helper functions that involve objects from the testing package.
  • utils.go contains helper functions (mostly format functions).
  • test_vectors.go contains test vectors such as external keys and string constants.

JSON test vectors instead of global variables

end_to_end_test.go contains large strings as global variables. It is better to have this data as a separate JSON. Also, this serves the purpose of exporting/importing test vectors easier fro cross-library testing.
The only caveat is that encoding/json can only handle structs with exported fields, therefore, all relevant keys in JSON maps must start with a capital letter.

Copy link
Member

@twiss twiss left a comment

Choose a reason for hiding this comment

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

Looks good to me, other than nits below 👍

openpgp/integration_tests/utils.go Outdated Show resolved Hide resolved
openpgp/integration_tests/test_vectors.go Outdated Show resolved Hide resolved
openpgp/integration_tests/utils.go Outdated Show resolved Hide resolved
zugzwang pushed a commit to zugzwang/crypto that referenced this pull request Nov 2, 2019
@twiss twiss merged commit 60837c4 into ProtonMail:master Nov 9, 2019
@zugzwang zugzwang deleted the refactor-end-to-end-test branch April 21, 2020 13:28
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.

2 participants