92ff5bf0b2 | ||
---|---|---|
.. | ||
clients | ||
schemas | ||
src | ||
tests | ||
validators | ||
.gitignore | ||
Dockerfile | ||
Dockerfile.tests-rpc | ||
README.MD | ||
config.json | ||
conftest.py | ||
constants.py | ||
docker-compose.anvil.yml | ||
docker-compose.status-go.local.yml | ||
docker-compose.test.status-go.yml | ||
entrypoint.sh | ||
pytest.ini | ||
requirements.txt | ||
schema_builder.py |
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
:
docker compose -f docker-compose.anvil.yml up --remove-orphans --build
This command will:
- Start an Anvil container with ChainID
31337
, exposed on0.0.0.0:8545
- Deploy Status-im contracts to the Anvil network
Running Tests
To run the tests:
-
In
./tests-functional
, start the testing containers:docker compose -f docker-compose.anvil.yml -f docker-compose.test.status-go.yml -f docker-compose.status-go.local.yml up --build --remove-orphans
This command will:
- Create a container with status-go as daemon, exposing
APIModules
on0.0.0.0:3333
- Configure
status-go
to use Anvil as theRPCURL
with ChainID31337
- Deploy all Status-im contracts to the Anvil network
- Create a container with status-go as daemon, exposing
-
To execute tests:
- Run all tests:
pytest
- Run tests marked as
wallet
:pytest -m wallet
- Run a specific test:
pytest -k "test_contact_request_baseline"
- Run all tests:
Implementation Details
-
Functional tests are implemented in
./tests-functional/tests
using pytest. -
Each test performs two types of verifications:
verify_is_valid_json_rpc_response()
: Checks for a status code200
, a non-empty response, JSON-RPC structure, presence of theresult
field, and the expected ID.jsonschema.validate()
: Validates that the response contains expected data, including required fields and types. Schemas are stored in/schemas/wallet_MethodName
.
-
Schema Generation:
- New schemas can be generated with
./tests-functional/schema_builder.py
by passing a response to theCustomSchemaBuilder(schema_name).create_schema(response.json())
method. This should be used only during test creation. - Search
how to create schema:
in test files for examples.
- New schemas can be generated with
Build Status Backend
You can manually build the binary with the following command in the status-go
root directory:
make status-backend
For further details on building and setting up status-go
and status-backend
, refer to the official documentation:
Location of the binary: cmd/status-backend/status-backend
In test build is automatically being build and placed in right path. If build already exists then new build is not generated.