22b47bf4ea | ||
---|---|---|
.. | ||
schemas | ||
src | ||
tests | ||
.pre-commit-config.yaml | ||
Dockerfile | ||
Dockerfile.tests-rpc | ||
README.MD | ||
config.json | ||
conftest.py | ||
docker-compose.anvil.yml | ||
docker-compose.status-go.local.yml | ||
docker-compose.test.status-go.yml | ||
entrypoint.sh | ||
pytest.ini | ||
requirements.txt |
README.MD
Overview
Functional tests for status-go
Table of Contents
How to Install
- Install Docker and Docker Compose
- Install Python 3.10.14
- Set up a virtual environment (recommended):
- In
./tests-functional
, run:python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
- Optional (for test development): Use Python virtual environment for better dependency management. You can follow the guide here
- In
How to Run
Running dev RPC (anvil with contracts)
- In
./tests-functional
rundocker compose -f docker-compose.anvil.yml up --remove-orphans --build
, as result:- an anvil container with ChainID 31337 exposed on
0.0.0.0:8545
will start running - Status-im contracts will be deployed to the network
- an anvil container with ChainID 31337 exposed on
Run tests
- In
./tests-functional
rundocker compose -f docker-compose.anvil.yml -f docker-compose.test.status-go.yml -f docker-compose.status-go.local.yml up --build --remove-orphans
, as result:- a container with status-go as daemon will be created with APIModules exposed on
0.0.0.0:3333
- status-go will use anvil as RPCURL with ChainID 31337
- all Status-im contracts will be deployed to the network
- a container with status-go as daemon will be created with APIModules exposed on
- In
./tests-functional/tests
directory runpytest -m wallet
Implementation details
- Functional tests are implemented in
./tests-functional/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
./tests-functional/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