74e9ce93bf | ||
---|---|---|
.. | ||
schemas | ||
tests | ||
README.MD | ||
config.json | ||
conftest.py | ||
docker-compose.yml | ||
pytest.ini | ||
requirements.txt | ||
schema_builder.py |
README.MD
Overview
Integration tests for status-go
Table of Contents
How to Install
- Install Docker and Docker Compose
- Checkout all listed contract repositories into one folder:
- Add environment variable, path to contract repos e.g.
export PATH_TO_CONTRACT_REPOS=~/directory-with-every-contract-repo
- Install Python 3.10.14
- In
integration-tests
directory, runpip install -r requirements.txt
- Optional (for test development): Use Python virtual environment for better dependency management. You can follow the guide here:
How to Run
- In
integration-tests/tests
rundocker compose up --build
, as result:- a container with status-go as deamon will be created with APIModules exposed on
0.0.0.0:3333
- status-go will use anvil as RPCURL with ChainID 31337
- also all Status-im contracts are going to be deployed to the new network
- a container with status-go as deamon will be created with APIModules exposed on
Running Tests
- In
integration-tests/tests
directory runpytest -m wallet
Implementation details
- Integration tests are implemented in
integration-tests/tests
based on pytest - Every test has two types of verifications:
verify_is_valid_json_rpc_response()
checks for status code 200, non-empty response, JSON-RPC structure, presence of theresult
field, and expected ID.jsonschema.validate()
is used to check that the response contains expected data, including required fields and types. Schemas are stored in/schemas/wallet_MethodName
- New schemas can be generated using
integration-tests/schema_builder.py
by passing a response to theCustomSchemaBuilder(schema_name).create_schema(response.json())
method, should be used only on test creation phase, please searchhow to create schema:
to see an example in a test