This project contains a test suite for Portier client libraries. It is written in Go, but can test libraries in any language.
go build -o client-tester
./client-tester -bin some-executableWhere some-executable is an executable that wraps the client library to test,
which we'll call 'integration'. The integration will be called with one
argument: the origin of a test broker that's running locally. It should
configure the client, then communicate over stdin/stdout with the test suite.
Stderr can be used for any additional logging (e.g. exceptions).
The stdin/stdout protocol is line-based (\n terminated lines), and each line
is a list of tab-separated strings. For requests sent by the test suite, the
first string is a command followed by arguments. For responses sent by the
integration, the first string is either ok followed by arguments, or err
followed by a single string error description.
Commands are:
echo <text>: integration replies withok <text>auth <email>: integration replies withok <auth URL>verify <id_token>: integration replies withok <email>
Here's an example flow, where we illustrate tabs with ||, commands from the
test suite with >>, and responses from the integration with <<:
>> echo || test 1
<< ok || test 1
>> auth || John@example.com
<< ok || http://imaginary-server.test/fake-auth-route?client_id=...
>> verify || eyJraWQiOiJiYWQga2V5IiwiYWxnIjoiU...
<< ok || john@example.com