tests: add more
gitea/ants-hub/pipeline/head This commit looks good Details

This commit is contained in:
Benjamin Dauvergne 2023-04-12 07:44:23 +02:00
parent 52e0f1d6a8
commit 789e5aa6e9
3 changed files with 131 additions and 5 deletions

View File

@ -4,3 +4,4 @@ pytest-django
freezegun
django-webtest
responses
pyquery

View File

@ -1,5 +1,111 @@
# ANTS-Hub - Copyright (C) Entr'ouvert
import pytest
from django.core.management import call_command
from django.db import transaction
def test_dummy():
pass
def table_text(table):
content = []
for row in table.find('tr').items():
content.append([cell.text() for cell in (row.find('td, th')).items()])
return content
@pytest.fixture(autouse=True, scope='module')
def setup(django_db_blocker):
with django_db_blocker.unblock():
with transaction.atomic():
call_command('loaddata', 'fixtures/admin.json')
call_command('loaddata', 'fixtures/example1.json')
with django_db_blocker.block():
yield
transaction.set_rollback(True)
@pytest.fixture(autouse=True)
def freezer(freezer):
freezer.move_to('2023-04-12T12:00:00+02:00')
return freezer
def test_login(django_app, db):
resp = django_app.get('/').maybe_follow()
resp.form.set('username', 'admin')
resp.form.set('password', 'admin')
resp = resp.form.submit()
class TestLogged:
@pytest.fixture
def app(self, django_app, db):
test_login(django_app, db)
return django_app
def test_create_raccordement(self, app):
resp = app.get('/').maybe_follow()
resp = resp.click('Ajouter', href='raccordement')
resp.form.set('name', 'Plateforme Y')
resp.form.set('apikey', 'a' * 32)
resp.form.set('notes', 'Penser à facturer.')
resp = resp.form.submit('_save').follow()
assert table_text(resp.pyquery('#result_list')) == [
['', 'Nom', 'API key', 'Création', 'Dernière mise à jour'],
['', 'Plateforme X', '01a5…', '3 avril 2023 12:14', '3 avril 2023 19:57'],
['', 'Plateforme Y', 'aaaa…', '12 avril 2023 12:00', '12 avril 2023 12:00'],
]
def test_collectivite(self, app):
resp = app.get('/').maybe_follow()
resp = resp.click('Collectivités')
assert table_text(resp.pyquery('#result_list')) == [
[
'',
'Raccordement',
'Nom',
'URL du portail',
'Identifiant de la collectivité à la source',
'Création',
'Dernière mise à jour',
],
[
'',
'Plateforme X',
'Saint-Didier',
'https://saint-didier.fr/',
'saint-didier',
'3 avril 2023 12:14',
'3 avril 2023 12:14',
],
]
def test_lieux(self, app):
resp = app.get('/').maybe_follow()
resp = resp.click('Lieux')
assert table_text(resp.pyquery('#result_list')) == [
['', 'Collectivité', 'Nom', 'Création', 'Dernière mise à jour'],
['', 'Saint-Didier', 'Mairie', '3 avril 2023 12:15', '3 avril 2023 12:15'],
]
def test_plages(self, app):
resp = app.get('/').maybe_follow()
resp = resp.click('Lieux')
assert table_text(resp.pyquery('#result_list')) == [
['', 'Collectivité', 'Nom', 'Création', 'Dernière mise à jour'],
['', 'Saint-Didier', 'Mairie', '3 avril 2023 12:15', '3 avril 2023 12:15'],
]
def test_rdvs(self, app):
resp = app.get('/').maybe_follow()
resp = resp.click('Rendez-vous')
assert table_text(resp.pyquery('#result_list')) == [
['', '1\nDate', 'Lieu', '2\nIdentifiant de prédemande', 'Création', 'Dernière mise à jour'],
[
'',
'3 avril 2023 12:15',
'Mairie / 2 rue du four / Saint-Didier',
'abcd',
'3 avril 2023 12:16',
'3 avril 2023 12:16',
],
]

View File

@ -1,11 +1,22 @@
# ANTS-Hub - Copyright (C) Entr'ouvert
from ants_hub.data.models import Raccordement, TypeDeRdv
import pytest
from django.core.exceptions import ValidationError
from ants_hub.data.models import Config, Raccordement, TypeDeRdv
def test_raccordement(db):
apikey = Raccordement.objects.create(name='Example')
assert len(apikey.apikey) >= 32
raccordement = Raccordement.objects.create(name='Example')
assert len(raccordement.apikey) >= 32
old_apikey = raccordement.apikey
raccordement.apikey = 'NEW'
raccordement.clean()
assert len(raccordement.apikey) >= 32 and raccordement.apikey != old_apikey
raccordement.apikey = 'abcd'
with pytest.raises(ValidationError):
raccordement.clean()
def test_type_de_rdv():
@ -20,3 +31,11 @@ def test_type_de_rdv():
assert TypeDeRdv.from_ants_name('CNI') == TypeDeRdv.CNI
assert TypeDeRdv.from_ants_name('PASSPORT') == TypeDeRdv.PASSPORT
assert TypeDeRdv.from_ants_name('CNI-PASSPORT') == TypeDeRdv.CNI_PASSPORT
def test_config(db):
Config.set(Config.REQUEST_FROM_ANTS_AUTH_TOKEN, 'xyz')
assert Config.get(Config.REQUEST_FROM_ANTS_AUTH_TOKEN) == 'xyz'
with pytest.raises(ValueError):
Config.set('unknown', '1')
assert 'authentification' in str(Config.objects.get())