Running ruleset unit and integration tests
Various components of Yoda have unit and integration tests. They run automatically using Github Actions. This page explains how to run them locally.
Running ruleset unit tests
The ruleset uses the unittest framework for the unit tests.
The test suites can be found in the unit-tests
subdirectory of the ruleset. Run them using Python 2.7. Example:
$ cd unit-tests
$ python -m unittest unit_tests
.................
----------------------------------------------------------------------
Ran 17 tests in 0.001s
OK
Running ruleset integration tests
The ruleset has a custom rule for running the integration tests. These tests verify that various functions work in combination with iRODS. You need to run the tests on either the Docker setup or on a development VM that has the test dataset. Please consult the API and UI tests manual page for instructions on how to install test data on a development VM.
You can then run the integration tests from the irods
account by invoking the integration test rule:
$ /usr/bin/irule -r irods_rule_engine_plugin-python-instance -F /etc/irods/yoda-ruleset/tools/run-integration-tests.r
util.collection.exists.yes VERDICT_OK
util.collection.exists.no VERDICT_OK
util.collection.owner VERDICT_OK
util.collection.to_from_id VERDICT_OK
util.data_object.exists.yes VERDICT_OK
util.data_object.exists.no VERDICT_OK
util.data_object.owner VERDICT_OK
util.data_object.size VERDICT_OK
util.resource.exists.yes VERDICT_OK
util.resource.exists.no VERDICT_OK
util.resource.get_all_resource_names VERDICT_OK
util.resource.get_children_by_name VERDICT_OK
util.resource.get_parent_by_name VERDICT_OK
util.resource.get_resource_names_by_type VERDICT_OK
util.resource.get_type_by_name VERDICT_OK
util.resource.to_from_id VERDICT_OK
util.user.exists.yes VERDICT_OK
util.user.exists.no VERDICT_OK
util.user.is_admin.yes VERDICT_OK
util.user.is_admin.no VERDICT_OK
util.user.is_member_of.yes VERDICT_OK
util.user.is_member_of.no VERDICT_OK
util.user.usertype.rodsadmin VERDICT_OK
util.user.usertype.rodsuser VERDICT_OK
Running Yoda portal unit tests
The Yoda portal uses the unittest framework for the unit tests.
The test suites can be found in the unit-tests
subdirectory of the portal repository. Run them using Python 3:
$ cd unit-tests
$ python3 -m unittest
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
Running external user service unit and integration tests
The external user service (EUS) uses pytest for unit and integration tests.
In order to run them, install the EUS package in a Python 3 virtual environment,
go to yoda_eus/tests
and run the test suites using pytest
. Example:
(venv) $ cd yoda_eus/tests
(venv) $ python3 -m pytest
===================================================================================== test session starts ======================================================================================
platform linux -- Python 3.10.12, pytest-7.4.2, pluggy-1.3.0
rootdir: /data/source/yoda-external-user-service
collected 33 items
test_integration.py ....................... [ 69%]
test_unit.py .......... [100%]
===================================================================================== 33 passed in 10.02s ======================================================================================
Running MOAI unit and integration tests
MOAI uses the unittest framework for the unit and integration tests.
In order to run them you need to install apxs (sudo apt install apache2-dev
on Ubuntu)
and SQLite3 libraries (sudo apt install libsqlite3-dev
on Ubuntu). Then install MOAI in a Python 3 virtual environment
and run the tests using unittest
:
(venv) $ cd moai
(venv) $ python3 -m unittest
......................
----------------------------------------------------------------------
Ran 22 tests in 0.192s
OK