3.8 KiB
Here’s the updated README with the additional prerequisites and instructions:
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:python -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
- Install pre-commit hooks (optional):
pre-commit install
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 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
This README should cover your additional setup, installation, and testing instructions with clear steps for users. Let me know if there are any further modifications needed!