{"id":46484591,"url":"https://github.com/nspcc-dev/neofs-testcases","last_synced_at":"2026-03-06T09:03:28.493Z","repository":{"id":62980624,"uuid":"317238071","full_name":"nspcc-dev/neofs-testcases","owner":"nspcc-dev","description":"NeoFS integration testcases","archived":false,"fork":false,"pushed_at":"2026-02-27T02:55:21.000Z","size":27150,"stargazers_count":4,"open_issues_count":29,"forks_count":18,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-02-27T09:54:05.931Z","etag":null,"topics":["neofs"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nspcc-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-11-30T13:49:58.000Z","updated_at":"2026-02-26T10:18:31.000Z","dependencies_parsed_at":"2023-10-05T11:45:19.324Z","dependency_job_id":"f6cae280-ba08-46ad-a958-82d0ab20880f","html_url":"https://github.com/nspcc-dev/neofs-testcases","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/nspcc-dev/neofs-testcases","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nspcc-dev%2Fneofs-testcases","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nspcc-dev%2Fneofs-testcases/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nspcc-dev%2Fneofs-testcases/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nspcc-dev%2Fneofs-testcases/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nspcc-dev","download_url":"https://codeload.github.com/nspcc-dev/neofs-testcases/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nspcc-dev%2Fneofs-testcases/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30168608,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T07:56:45.623Z","status":"ssl_error","status_checked_at":"2026-03-06T07:55:55.621Z","response_time":250,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["neofs"],"created_at":"2026-03-06T09:03:27.832Z","updated_at":"2026-03-06T09:03:28.480Z","avatar_url":"https://github.com/nspcc-dev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"This repo contains functional integration tests for [NeoFS](https://github.com/nspcc-dev). \nTests can be found under `pytest_tests/tests` directory.\nWe use [pytest](https://docs.pytest.org/en/stable/).\n\n## How to get started?\n\n0. Fix OpenSSL ripemd160\n\nHashlib uses OpenSSL for ripemd160 and apparently OpenSSL disabled some older crypto algos around version 3.0\nin November 2021.\nAll the functions are still there but require manual enabling. See https://github.com/openssl/openssl/issues/16994\n\nBut we use ripemd160 for tests.\nFor ripemd160 to be supported, make sure that the config file `/usr/lib/ssl/openssl.cnf` contains following lines:\n\n```\nopenssl_conf = openssl_init\n\n[openssl_init]\nproviders = provider_sect\n\n[provider_sect]\ndefault = default_sect\nlegacy = legacy_sect\n\n[default_sect]\nactivate = 1\n\n[legacy_sect]\nactivate = 1\n```\n\nThere is also a script that does this for you - `sudo python ./tools/src/openssl_config_fix.py`\n\n1. Create and activate venv with dependencies from requirements.txt. We've put some basics into the makefile target:\n```shell\n$ make venv.pytest\n$ . venv.pytest/bin/activate\n```\nBut you can use any other way you want to create venv. \nIf you don't know what venv is, please, check - https://docs.python.org/3/library/venv.html\n\n2. Just run the test - `pytest -s -k test_get_object_api pytest_tests/tests/object/test_object_api.py`\n\n3. Everything should work out of the box, if not - check the rest of this README. If nothing useful there - feel free to open a github issue. \n\n## Allure report\n\nFor reporting we use allure report and if you want to get it, take the following steps:\n\n1. Run a test with `--alluredir` parameter to specify a dir where allure report json files will be saved.\n\n```shell\npytest --alluredir my-allure-234 -s pytest_tests/tests/services/rest_gate/test_rest_bearer.py \n```\n\n2. After the test you will see a bunch of json files inside a directory from `--alluredir`. \nNow we need to convert them into nice and pretty web page. To do this you need allure cli:\n\nInstallation for Linux: [instruction](https://allurereport.org/docs/install-for-linux/#install-from-a-deb-package)\nInstallation for macOS: [instruction](https://allurereport.org/docs/install-for-linux/#install-from-homebrew)\n\n3. To generate the report:\n\n```shell\n$ allure serve my-allure-123\n```\nYou will be redirected to your browser and a web page with allure report will be opened.\n\n## Working with a test NeoFS environment\n\nTests deploy test environment out of a set of binaries and run them as a separate processes. \nBy default these binaries are downloaded automatically. \nList of all required binaries with corresponding URLs can be found here - `neofs-testlib/neofs_testlib/env/templates/neofs_env_config.yaml`.\nTo use a patched binary for tests just place it to the repo root directory. \nConfig files for binaries are located here - `neofs-testlib/neofs_testlib/env/templates`.\n\nIf you are going to run tests several times in the same dev environment, \nyou can use the `--persist-env` key to initiate keeping the test environment. \nAs a result, you'll find something like `Persist env at: env_files/*` in the report. \nFor example:\n```shell\n[MainThread] 2024-04-27 18:31:55 [INFO] Persist env at: env_files/persisted_env_awxyrbxdwu\n```\nAfter that, you can run tests faster by adding the `--load-env` flag along with \nthe received value. This way you won't waste time redeploy the environment.\nFor example:\n```shell\npytest -s pytest_tests/tests/services/rest_gate/test_rest_bearer.py --load-env env_files/persisted_env_awxyrbxdwu \n```\n\nIf for debug purposes it is needed to provide a custom config for S3 GW, REST GW, Storage Nodes, Inner Ring Nodes or Main Chain nodes,\nit can be done via following env vars:\n```\nS3_GW_CONFIG_PATH\nREST_GW_CONFIG_PATH\nSN1_CONFIG_PATH\nSN2_CONFIG_PATH\nSN3_CONFIG_PATH\nSN4_CONFIG_PATH\nIR1_CONFIG_PATH\nIR2_CONFIG_PATH\nIR3_CONFIG_PATH\nIR4_CONFIG_PATH\nMAINCHAIN_CONFIG_PATH\n```\nFull path to a custom config file should be specified. \n\n## pytest marks\n\nCustom pytest marks used in tests:\n* `sanity` - a short subset of tests to ensure basic NeoFS functionality works.\n* `simple` - a subset of tests that use simple (small) objects\n* `complex` - a subset of tests that use complex (big) objects\n\nTo run tests only with `complex` objects:\n```\npytest -m 'complex and not simple' pytest_tests/tests\n```\nTo run tests only with `simple` objects:\n```\npytest -m 'simple and not complex' pytest_tests/tests\n```\n\n## Tests/Libraries structure\n\nTests are located under `pytest_tests/tests`.\n\nDifferent libraries used by tests are located under `pytest_tests/lib/` and `neofs_testlib/`.\n\nAt this moment, there is no logic behind libraries location. \nBut it was assumed that common python libraries that can be useful in other projects should be placed under `neofs_testlib/`.\nOther projects (e.g. [s3-tests](https://github.com/nspcc-dev/s3-tests/)) use git submodules to copy the whole repo.\n\n## Code formatter/linter\n\nWe use [ruff](https://docs.astral.sh/ruff/). All PRs are automatically checked. \nSo, please, install it in your IDE to properly format the code.\nWe also have some pre-commit hooks to run ruff on staged files before you run a `git commit` command, install them with:\n\n```shell\n$ pre-commit install\n```\n\n## Github Actions\n\nMain action is located here - `.github/workflows/system-tests.yml`.\nBe careful with updating since it is used throughout `https://github.com/nspcc-dev`. Be sure that all dependent workflows work. \n\n# Contributing\n\nFeel free to contribute to this project after reading the [contributing\nguidelines](CONTRIBUTING.md).\n\nBefore starting to work on a certain topic, create a new issue first, describing\nthe feature/topic you are going to implement.\n\n# License\n\n- [GNU General Public License v3.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnspcc-dev%2Fneofs-testcases","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnspcc-dev%2Fneofs-testcases","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnspcc-dev%2Fneofs-testcases/lists"}