tests: add test to environment views and command (#40098)
This commit is contained in:
parent
748be27d26
commit
2825b4ddbd
|
@ -2,9 +2,10 @@
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
|
from django.core.management import call_command
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
from hobo.environment.models import AVAILABLE_SERVICES, Combo, Passerelle, ServiceBase
|
from hobo.environment.models import AVAILABLE_SERVICES, Combo, Passerelle, ServiceBase, Variable
|
||||||
|
|
||||||
from test_manager import login
|
from test_manager import login
|
||||||
|
|
||||||
|
@ -122,3 +123,176 @@ def test_service_creation_url_validation(app, admin_user, monkeypatch):
|
||||||
form = response.form
|
form = response.form
|
||||||
response = form.submit()
|
response = form.submit()
|
||||||
assert Combo.objects.exists()
|
assert Combo.objects.exists()
|
||||||
|
|
||||||
|
|
||||||
|
def test_home_view(app, admin_user):
|
||||||
|
app = login(app)
|
||||||
|
Combo.objects.create(base_url='https://combo.agglo.love',
|
||||||
|
template_name='...portal-user...',
|
||||||
|
slug='portal')
|
||||||
|
response = app.get('/sites').follow()
|
||||||
|
assert 'Add new service:' in response.text
|
||||||
|
for service in AVAILABLE_SERVICES:
|
||||||
|
if service.is_enabled():
|
||||||
|
assert str(service._meta.verbose_name) in response.text
|
||||||
|
assert response.html.find('span', {'class': 'slug'}).a.text == 'https://combo.agglo.love/'
|
||||||
|
|
||||||
|
|
||||||
|
def test_variables_view(app, admin_user):
|
||||||
|
app = login(app)
|
||||||
|
Variable.objects.create(name='foo', value='bar')
|
||||||
|
response = app.get('/sites/variables')
|
||||||
|
assert response.html.find('label').text == 'foo'
|
||||||
|
assert response.html.find('input')['value'] == 'bar'
|
||||||
|
assert 'Add new variable' in response.text
|
||||||
|
|
||||||
|
|
||||||
|
def test_new_variable_view(app, admin_user):
|
||||||
|
app = login(app)
|
||||||
|
response = app.get('/sites/new-variable')
|
||||||
|
response.form['name'] = 'foo'
|
||||||
|
response.form['label'] = 'bar'
|
||||||
|
response.form['value'] = 'barbar'
|
||||||
|
response = response.form.submit()
|
||||||
|
assert response.location == '/sites/variables'
|
||||||
|
assert Variable.objects.all()[0].name == 'foo'
|
||||||
|
assert Variable.objects.all()[0].label == 'bar'
|
||||||
|
assert Variable.objects.all()[0].value == 'barbar'
|
||||||
|
response = app.get('/sites/new-variable')
|
||||||
|
response.form['name'] = 'foo'
|
||||||
|
response.form['label'] = 'bar'
|
||||||
|
response.form['value'] = 'foofoo'
|
||||||
|
response = response.form.submit()
|
||||||
|
assert response.location == '/sites/variables'
|
||||||
|
assert Variable.objects.all()[0].value == 'foofoo'
|
||||||
|
|
||||||
|
|
||||||
|
def test_new_variable_service_view(app, admin_user):
|
||||||
|
app = login(app)
|
||||||
|
Combo.objects.create(base_url='https://combo.agglo.love',
|
||||||
|
template_name='...portal-user...',
|
||||||
|
slug='portal')
|
||||||
|
response = app.get('/sites/new-variable-combo/portal')
|
||||||
|
response.form['name'] = 'foo'
|
||||||
|
response.form['label'] = 'bar'
|
||||||
|
response.form['value'] = 'barbar'
|
||||||
|
response = response.form.submit()
|
||||||
|
assert response.location == '/sites/'
|
||||||
|
assert Variable.objects.all()[0].name == 'foo'
|
||||||
|
assert Variable.objects.all()[0].label == 'bar'
|
||||||
|
assert Variable.objects.all()[0].value == 'barbar'
|
||||||
|
|
||||||
|
|
||||||
|
def test_variable_update_view(app, admin_user):
|
||||||
|
app = login(app)
|
||||||
|
Variable.objects.create(name='foo', value='bar')
|
||||||
|
response = app.get('/sites/update-variable/1')
|
||||||
|
assert response.html.find('input', {'name': 'name'})['value'] == 'foo'
|
||||||
|
assert response.html.find('textarea').text == '\nbar'
|
||||||
|
response.form['value'] = 'barbar'
|
||||||
|
response = response.form.submit()
|
||||||
|
assert response.location == '/sites/variables'
|
||||||
|
assert Variable.objects.all()[0].value == 'barbar'
|
||||||
|
|
||||||
|
|
||||||
|
def test_variable_delete_view(app, admin_user):
|
||||||
|
app = login(app)
|
||||||
|
Variable.objects.create(name='foo', value='bar')
|
||||||
|
response = app.get('/sites/delete-variable/1')
|
||||||
|
assert response.html.find('h2').text == 'Removal of "foo"'
|
||||||
|
response = response.form.submit()
|
||||||
|
assert response.location == '/sites/variables'
|
||||||
|
assert Variable.objects.count() == 0
|
||||||
|
|
||||||
|
|
||||||
|
def test_service_update_view(app, admin_user):
|
||||||
|
app = login(app)
|
||||||
|
Combo.objects.create(base_url='https://combo.agglo.love',
|
||||||
|
template_name='...portal-user...',
|
||||||
|
slug='portal')
|
||||||
|
response = app.get('/sites/save-combo/portal')
|
||||||
|
response.form['title'] = 'foobar'
|
||||||
|
response = response.form.submit()
|
||||||
|
assert response.location == '/sites/'
|
||||||
|
assert Combo.objects.all()[0].title == 'foobar'
|
||||||
|
|
||||||
|
|
||||||
|
def test_service_save_extra_variables(app, admin_user, settings):
|
||||||
|
settings.SERVICE_EXTRA_VARIABLES = {
|
||||||
|
'passerelle': ['legal_url', 'commune_url', 'domain_key'],
|
||||||
|
'combo': [{'name': 'theme', 'label': 'Theme'}],
|
||||||
|
}
|
||||||
|
app = login(app)
|
||||||
|
Combo.objects.create(base_url='https://combo.agglo.love',
|
||||||
|
template_name='...portal-user...',
|
||||||
|
slug='portal')
|
||||||
|
Passerelle.objects.create(base_url='https://passerelle.agglo.love',
|
||||||
|
slug='passerelle')
|
||||||
|
app.get('/sites/save-combo/portal')
|
||||||
|
Variable.objects.all()[0].name = 'theme'
|
||||||
|
Variable.objects.all()[0].label = 'Theme'
|
||||||
|
app.get('/sites/save-passerelle/passerelle')
|
||||||
|
Variable.objects.all()[0].name = 'legal_url'
|
||||||
|
Variable.objects.all()[1].name = 'commune_url'
|
||||||
|
Variable.objects.all()[2].name = 'domain_key'
|
||||||
|
|
||||||
|
|
||||||
|
def test_service_delete_view(app, admin_user):
|
||||||
|
app = login(app)
|
||||||
|
Combo.objects.create(base_url='https://combo.agglo.love',
|
||||||
|
template_name='...portal-user...',
|
||||||
|
title='foo',
|
||||||
|
slug='portal')
|
||||||
|
response = app.get('/sites/delete-combo/portal')
|
||||||
|
assert response.html.find('h2').text == 'Removal of "foo"'
|
||||||
|
response = response.form.submit()
|
||||||
|
assert response.location == '/sites/'
|
||||||
|
assert Combo.objects.count() == 0
|
||||||
|
|
||||||
|
|
||||||
|
def test_check_operational_view(app, admin_user, monkeypatch):
|
||||||
|
app = login(app)
|
||||||
|
Combo.objects.create(base_url='https://combo.agglo.love',
|
||||||
|
template_name='...portal-user...',
|
||||||
|
slug='portal')
|
||||||
|
response = app.get('/sites/check_operational/combo/portal')
|
||||||
|
assert response.json['operational'] == False
|
||||||
|
|
||||||
|
monkeypatch.setattr(ServiceBase, 'is_operational', lambda x: True)
|
||||||
|
response = app.get('/sites/check_operational/combo/portal')
|
||||||
|
assert response.json['operational'] == True
|
||||||
|
|
||||||
|
response = app.get('/sites/check_operational/foo/bar', status=404)
|
||||||
|
|
||||||
|
|
||||||
|
def test_debug_json_view(app, admin_user):
|
||||||
|
app = login(app)
|
||||||
|
Variable.objects.create(name='foo', value='bar')
|
||||||
|
Combo.objects.create(base_url='https://combo.agglo.love',
|
||||||
|
template_name='...portal-user...',
|
||||||
|
slug='portal')
|
||||||
|
response = app.get('/sites/debug-json')
|
||||||
|
assert response.json[0]['variables']['foo'] == 'bar'
|
||||||
|
assert response.json[0]['services'][0]['slug'] == 'hobo'
|
||||||
|
assert response.json[0]['services'][1]['slug'] == 'portal'
|
||||||
|
|
||||||
|
|
||||||
|
def test_check_operational_command(monkeypatch, capsys):
|
||||||
|
combo = Combo.objects.create(base_url='https://combo.agglo.love',
|
||||||
|
template_name='...portal-user...',
|
||||||
|
title='foo',
|
||||||
|
slug='portal')
|
||||||
|
monkeypatch.setattr(ServiceBase, 'is_operational', lambda x: True)
|
||||||
|
call_command('check_operational', '-v2')
|
||||||
|
captured = capsys.readouterr()
|
||||||
|
assert captured.out == 'foo is operational\n'
|
||||||
|
|
||||||
|
monkeypatch.setattr(ServiceBase, 'is_operational', lambda x: False)
|
||||||
|
combo.last_operational_success_timestamp = '2022-2-22'
|
||||||
|
combo.save()
|
||||||
|
call_command('check_operational', '-v2')
|
||||||
|
captured = capsys.readouterr()
|
||||||
|
assert captured.out.split('\n')[:-1] == [
|
||||||
|
'foo is NOT operational',
|
||||||
|
' last operational success: 2022-02-22 00:00:00+00:00'
|
||||||
|
]
|
||||||
|
|
Loading…
Reference in New Issue