.. _patrole-usage:

========
Usage
========

Patrole (API) Tests
===================

If Patrole is installed correctly, then the RBAC tests can be executed
from inside the tempest root directory as follows::

    $ tox -eall-plugin -- patrole_tempest_plugin.tests.api

To execute patrole tests for a specific module, run::

    $ tox -eall-plugin -- patrole_tempest_plugin.tests.api.compute

.. note::

    It is possible to run Patrole via ``tox -eall`` in order to run Patrole
    isolated from other plugins. This can be accomplished by including the
    installation of services that currently use policy in code -- for example,
    Nova and Keystone. For example::

        $ tox -evenv-tempest -- pip install /opt/stack/patrole /opt/stack/keystone /opt/stack/nova
        $ tox -eall -- patrole_tempest_plugin.tests.api
..

To change the role that the patrole tests are being run as, edit
``rbac_test_role`` in the ``patrole`` section of tempest.conf: ::

    [patrole]
    rbac_test_role = Member
    ...

.. note::

    The ``rbac_test_role`` is service-specific. Member, for example,
    is an arbitrary role, but by convention is used to designate the default
    non-admin role in the system. Most patrole tests should be run with
    **admin** and **Member** roles. However, some services, like Heat, take
    advantage of a role called **heat_stack_user**, as it appears frequently
    in Heat's policy.json.

For more information about the Member role,
please see: `<https://ask.openstack.org/en/question/4759/member-vs-_member_/>`__.

Unit Tests
==========

Patrole includes unit tests for its RBAC framework. They can be run by
executing::

    $ tox -e py27

or::

    $ tox -e py35

against the Python 3.5 interpreter.
