This command line interface (CLI) supports testing the User Portal functionality.
Most operations require the caller specifies the CloudFormation Stack Name (riv_stack_name
) and region you are testing.
The riv_stack_name
is specifies which instance (Prod, Dev, ...) you want to target, and is specified during the one-click.sh invocation.
If you do not specify the value, it defaults to Riv-Prod.
# Optional/Recommended create a virtual enviroment (removes need for sudo)
virtualenv .env
# Activate this the virtual environment
source .env/bin/activate
# Install dependencies
pip3 install -r src/test-client/requirements.txt
# Confirm the client starts
python3 src/test-client/app.py help
The caller must have ssm:GetParameter*
rights to the resources /riv/{stack-name}/userportal/url
.
This requirement is due to the get_userportal_address
dynamically fetching the endpoints.
Developers can create new users with any of the following examples.
It is not supported to register the "same face" multiple times under different UserId.
# Register the user nbachmei from a local image
python3 ./app.py register -z Riv-Prod -r ca-central-1 -u nbachmei -p ./faces/nbachmei.jpg
# Register the user nbachmei with properties from an idcard
python3 ./app.py register-idcard -z Riv-Prod -r ca-central-1 -u nbachmei -p ./faces/nbachmei.jpg -c ./faces/private/license.jpg
Developers can update existing users with any of the following examples.
It is not supported to update a user before calling register. The service also checks that the new face is comparable (e.g., 95% confidence) to the registration photo.
# Update the user data
python3 ./app.py update -z Riv-Prod -r ca-central-1 -u nbachmei -p ./faces/different.jpg
Developers can perform an authentication check with any of the following examples.
It is not supported to authenticate the user before calling register.
# Update the user data
python3 ./app.py auth -z Riv-Prod -r ca-central-1 -u nbachmei -p ./faces/nbachmei.jpg
Developers can export valid payloads with any of the following examples.
# Generate a random payload to stdout
python3 ./app.py encode -o -
# Write a random payload to a file
python3 ./app.py encode -o payload.json
# Write a local data
python3 ./app.py encode -o payload.json -u nbachmei -p ./faces/nbachmei.jpg
# Register the payload with curl
curl -X POST -H "Content-Type: application/json" https://your-apigateway-address/register --data "@payload.json"