status-go/integration-tests
Anton Danchenko 74e9ce93bf
test(wallet)_: status-go integration tests (#5302)
2024-06-11 13:36:20 +02:00
..
schemas test(wallet)_: status-go integration tests (#5302) 2024-06-11 13:36:20 +02:00
tests test(wallet)_: status-go integration tests (#5302) 2024-06-11 13:36:20 +02:00
README.MD test(wallet)_: status-go integration tests (#5302) 2024-06-11 13:36:20 +02:00
config.json test(wallet)_: status-go integration tests (#5302) 2024-06-11 13:36:20 +02:00
conftest.py test(wallet)_: status-go integration tests (#5302) 2024-06-11 13:36:20 +02:00
docker-compose.yml test(wallet)_: status-go integration tests (#5302) 2024-06-11 13:36:20 +02:00
pytest.ini test(wallet)_: status-go integration tests (#5302) 2024-06-11 13:36:20 +02:00
requirements.txt test(wallet)_: status-go integration tests (#5302) 2024-06-11 13:36:20 +02:00
schema_builder.py test(wallet)_: status-go integration tests (#5302) 2024-06-11 13:36:20 +02:00

README.MD

Overview

Integration tests for status-go

Table of Contents

How to Install

  • 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, 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

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

Running Tests

  • In integration-tests/tests directory run pytest -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 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 integration-tests/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