status-go/tests-functional
Igor Sirotin e477269983
feat_: init logs in `InitializeApplication` (#6117)
* feat_: functional tests for logs

* feat_: init logs in `InitializeApplication`

* chore_: completely remove `MobileSystem` log setting

migrate

* chore_: condition for call startTime

* fix_: rebase issues, linter

* fix_: sql query

* test_: mark rpc TestInitializeLogging

* test_: skip TestInitializeLogging
2024-11-29 11:43:07 +00:00
..
clients feat!: implement new activityV2 filter (#6102) 2024-11-25 17:44:39 -03:00
schemas test_: add multiple status-backend instances (#6104) 2024-11-21 14:21:53 +00:00
tests feat_: init logs in `InitializeApplication` (#6117) 2024-11-29 11:43:07 +00:00
Dockerfile chore_: get version with go generate (#6014) 2024-11-03 00:47:15 +00:00
Dockerfile.tests-rpc chore_: rename integration tests to functional tests (#5908) 2024-10-03 14:51:51 +01:00
README.MD test_: add multiple status-backend instances (#6104) 2024-11-21 14:21:53 +00:00
config.json chore_: providers re-ordered 2024-10-21 17:30:51 +02:00
conftest.py test_: add multiple status-backend instances (#6104) 2024-11-21 14:21:53 +00:00
constants.py test_: restore account (#5960) 2024-10-23 22:48:33 +03:00
docker-compose.anvil.yml chore_: rename integration tests to functional tests (#5908) 2024-10-03 14:51:51 +01:00
docker-compose.status-go.local.yml test_: add multiple status-backend instances (#6104) 2024-11-21 14:21:53 +00:00
docker-compose.test.status-go.yml test_: add multiple status-backend instances (#6104) 2024-11-21 14:21:53 +00:00
entrypoint.sh chore_: rename integration tests to functional tests (#5908) 2024-10-03 14:51:51 +01:00
pytest.ini test_: restore account (#5960) 2024-10-23 22:48:33 +03:00
requirements.txt chore_: rename integration tests to functional tests (#5908) 2024-10-03 14:51:51 +01:00
schema_builder.py test_: a little bit of refactoring 2024-10-14 12:47:58 +02:00
wallet_utils.py feat!: implement new activityV2 filter (#6102) 2024-11-25 17:44:39 -03:00

README.MD

Overview

Functional tests for status-go

Table of Contents

How to Install

  • Install Docker and Docker Compose
  • Install Python 3.10.14
  • In ./tests-functional, run pip 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

Running dev RPC (anvil with contracts)

  • In ./tests-functional run docker 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

Run tests

  • In ./tests-functional run docker compose -f docker-compose.anvil.yml -f docker-compose.test.status-go.yml -f docker-compose.status-go.local.yml up --build --scale status-backend=10 --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
  • In ./tests-functional/tests directory run pytest -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 the result 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 the CustomSchemaBuilder(schema_name).create_schema(response.json()) method, should be used only on test creation phase, please search how to create schema: to see an example in a test