List of existing tests

End-to-end testing

These tests are meant to be executed on a running Parsec service and using a Parsec client to communicate to it. The parsec/e2e_tests crate contains a test client based on the Rust client that is used inside the tests written in parsec/e2e_tests/tests.

The end-to-end tests contain tests to be executed:

  • with a Parsec service containing a single provider: per_provider tests
  • with a Parsec service containing all providers: all_providers

The parsec/e2e_tests/provider_cfg folder contain the Dockerfile and Parsec configuration needed to run Parsec for the corresponding tests.

All providers normal e2e testsEnd-to-end tests on a service with all providers. Mostly to test core operations.
All providers cross-providers e2e testsTest that the output of various operations from different providers is accepted by the other providers.
All providers configuration e2e testsThese check if the behaviour of the service is correct before and after reloading with a different configuration.
All providers multitenancy e2e testsTest that multiple tenants of Parsec using different authentication methods can not access each other's keys.
Per provider normal testsE2E tests checking most cryptographic operations on a single provider. Parsec results are also verified with third party software crypto implementations (ring, the rsa crate, etc...).
Per provider persistence testsE2E tests checking correct behaviour of the service around persistence of keys in the Key Info Manager.
Per provider stress testsStress tests executing a large number of canonical operations at high frequency on a single provider.

Fuzz testing

Fuzz testingTests sending random requests to the service and waiting it to crash/timeout.

Unit testing

Direct authenticator testsTesting the Authenticate trait with this authenticator.
On-disk key info manager testsTesting the ManageKeyInfo trait with various strings for application and key names. The persistence is tested in the end-to-end tests.

In dependencies

The dependencies that we maintain in the parallaxsecond organisation also contain their own set of integration and unit tests: parsec-interface-rs, rust-psa-crypto and rust-tss-esapi.

Copyright 2020 Contributors to the Parsec project.