Skip to content

Refactor end to end test - #37

Merged
twiss merged 23 commits into
ProtonMail:masterfrom
zugzwang:refactor-end-to-end-test
Nov 9, 2019
Merged

twiss merged 23 commits into
ProtonMail:masterfrom
zugzwang:refactor-end-to-end-test

Conversation

@zugzwang

@zugzwang zugzwang commented Oct 24, 2019

Copy link
Copy Markdown
Contributor

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.

Comment thread openpgp/integration_tests/end_to_end_test.go Outdated

@twiss twiss left a comment

Copy link
Copy Markdown
Collaborator

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 👍

Comment thread openpgp/integration_tests/utils.go Outdated
Comment thread openpgp/integration_tests/test_vectors.go Outdated
Comment thread openpgp/integration_tests/utils.go
Comment thread openpgp/integration_tests/utils.go Outdated
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