# Tests unitaires de l'API ScoDoc

## Lancement des tests

La première fois, copier le fichier `tests/api/dotenv_exemple` vers
`tests/api/.env`. Il est normalement inutile de modifier son contenu.

Dans un shell, lancer le script `start_api_server.py`, qui se charge
d'initialiser une base SQL de test et de lancer le serveur ScoDoc approprié.

```bash
tests/api/start_api_server.sh
```

Dans un autre shell, lancer les tests:

```bash
pytest tests/api
```

## Notes sur la démarche

 1. On génère une base SQL de test: voir
   `tools/fakedatabase/create_test_api_database.py`

    1. En tant qu'utilisateur scodoc, lancer:

    ```bash
    # evite de modifier /opt/scodoc/.env
    export FLASK_ENV=test_api
    export FLASK_DEBUG=1 
    tools/create_database.sh --drop SCODOC_TEST_API
    flask db upgrade
    flask sco-db-init --erase
    flask init-test-database
    ```

    en plus court:

    ```bash
    export FLASK_ENV=test_api && tools/create_database.sh --drop SCODOC_TEST_API && flask db upgrade &&flask sco-db-init --erase && flask init-test-database
    ```

 2. On lance le serveur ScoDoc sur cette base

    ```bash
    flask run --host 0.0.0.0
    ```

 3. On lance les tests unitaires API

```bash
    pytest tests/api/test_api_departements.py
```

Rappel: pour interroger l'API, il fait avoir un utilisateur avec (au moins) la permission
ScoView dans tous les départements. Pour en créer un:

```bash
 flask user-create lecteur_api LecteurAPI @all
 flask user-password lecteur_api
 flask edit-role LecteurAPI -a ScoView
 flask user-role lecteur_api -a LecteurAPI
```