tests: add various tests about hobo deployment
This commit is contained in:
parent
70e312a0fa
commit
4ec1a5ae09
|
@ -0,0 +1,253 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import pytest
|
||||
|
||||
from utilities import create_temporary_pub, clean_temporary_pub
|
||||
|
||||
from wcs.ctl.check_hobos import CmdCheckHobos
|
||||
from wcs import fields
|
||||
|
||||
HOBO_JSON = {
|
||||
'services': [
|
||||
{
|
||||
'title': 'Hobo',
|
||||
'slug': 'hobo',
|
||||
'service-id': 'hobo',
|
||||
'base_url': 'http://hobo.example.net/',
|
||||
'saml-sp-metadata-url': 'http://hobo.example.net/accounts/mellon/metadata/'
|
||||
},
|
||||
{
|
||||
'service-id': 'authentic',
|
||||
'saml-idp-metadata-url': 'http://authentic.example.net/idp/saml2/metadata',
|
||||
'template_name': '',
|
||||
'variables': {},
|
||||
'title': 'Authentic',
|
||||
'base_url': 'http://authentic.example.net',
|
||||
'id': 3,
|
||||
'secret_key': '_b82$d)(xcw$dl@ieis@jhmrmbbeb4$=%lrpi*4p&b))*a*=5!',
|
||||
'slug': 'authentic'
|
||||
},
|
||||
{
|
||||
'service-id': 'wcs',
|
||||
'template_name': 'export-test.wcs',
|
||||
'variables': {'xxx': 'HELLO WORLD'},
|
||||
'title': 'Test wcs',
|
||||
'saml-sp-metadata-url': 'http://wcs.example.net/saml/metadata',
|
||||
'base_url': 'http://wcs.example.net',
|
||||
'backoffice-menu-url': 'http://wcs.example.net/backoffice/menu.json',
|
||||
'id': 1,
|
||||
'secret_key': 'eiue7aa10nt6e9*#jg2bsfvdgl)cr%4(tafibfjx9i$pgnfj#v',
|
||||
'slug': 'test-wcs'
|
||||
},
|
||||
],
|
||||
'profile': {
|
||||
'fields': [
|
||||
{
|
||||
'kind': 'title',
|
||||
'description': '',
|
||||
'required': False,
|
||||
'user_visible': True,
|
||||
'label': u'Civilité',
|
||||
'disabled': False,
|
||||
'user_editable': True,
|
||||
'asked_on_registration': False,
|
||||
'name': 'title'
|
||||
},
|
||||
{
|
||||
'kind': 'string',
|
||||
'description': '',
|
||||
'required': True,
|
||||
'user_visible': True,
|
||||
'label': u'Prénom',
|
||||
'disabled': False,
|
||||
'user_editable': True,
|
||||
'asked_on_registration': True,
|
||||
'name': 'first_name'
|
||||
},
|
||||
{
|
||||
'kind': 'string',
|
||||
'description': '',
|
||||
'required': True,
|
||||
'user_visible': True,
|
||||
'label': 'Nom',
|
||||
'disabled': False,
|
||||
'user_editable': True,
|
||||
'asked_on_registration': True,
|
||||
'name': 'last_name'
|
||||
},
|
||||
{
|
||||
'kind': 'email',
|
||||
'description': '',
|
||||
'required': True,
|
||||
'user_visible': True,
|
||||
'label': u'Adresse électronique',
|
||||
'disabled': False,
|
||||
'user_editable': True,
|
||||
'asked_on_registration': False,
|
||||
'name': 'email'
|
||||
},
|
||||
{
|
||||
'kind': 'string',
|
||||
'description': '',
|
||||
'required': False,
|
||||
'user_visible': True,
|
||||
'label': 'Addresse',
|
||||
'disabled': False,
|
||||
'user_editable': True,
|
||||
'asked_on_registration': False,
|
||||
'name': 'address'
|
||||
},
|
||||
{
|
||||
'kind': 'string',
|
||||
'description': '',
|
||||
'required': False,
|
||||
'user_visible': True,
|
||||
'label': 'Code postal',
|
||||
'disabled': False,
|
||||
'user_editable': True,
|
||||
'asked_on_registration': False,
|
||||
'name': 'zipcode'
|
||||
},
|
||||
{
|
||||
'kind': 'string',
|
||||
'description': '',
|
||||
'required': False,
|
||||
'user_visible': True,
|
||||
'label': 'Commune',
|
||||
'disabled': False,
|
||||
'user_editable': True,
|
||||
'asked_on_registration': False,
|
||||
'name': 'city'
|
||||
},
|
||||
{
|
||||
'kind': 'string',
|
||||
'description': '',
|
||||
'required': False,
|
||||
'user_visible': True,
|
||||
'label': u'Téléphone',
|
||||
'disabled': False,
|
||||
'user_editable': True,
|
||||
'asked_on_registration': False,
|
||||
'name': 'phone'
|
||||
},
|
||||
{
|
||||
'kind': 'string',
|
||||
'description': '',
|
||||
'required': False,
|
||||
'user_visible': True,
|
||||
'label': 'Mobile',
|
||||
'disabled': False,
|
||||
'user_editable': True,
|
||||
'asked_on_registration': False,
|
||||
'name': 'mobile'
|
||||
},
|
||||
{
|
||||
'kind': 'string',
|
||||
'description': '',
|
||||
'required': False,
|
||||
'user_visible': True,
|
||||
'label': 'Pays',
|
||||
'disabled': True,
|
||||
'user_editable': True,
|
||||
'asked_on_registration': False,
|
||||
'name': 'country'
|
||||
},
|
||||
{
|
||||
'kind': 'string',
|
||||
'description': '',
|
||||
'required': False,
|
||||
'user_visible': True,
|
||||
'label': 'Date de naissance',
|
||||
'disabled': True,
|
||||
'user_editable': True,
|
||||
'asked_on_registration': False,
|
||||
'name': 'birthdate'
|
||||
}
|
||||
]
|
||||
},
|
||||
'variables': {
|
||||
'foobar': 'http://example.net',
|
||||
},
|
||||
'users': [
|
||||
{
|
||||
'username': 'admin',
|
||||
'first_name': 'AdminFoo',
|
||||
'last_name': 'AdminBar',
|
||||
'password': 'pbkdf2_sha256$15000$aXR4knesTiJJ$hubahjFVa4q9C5RTqY5ajSOcrCPc+RZM+Usf1CGYLmA=',
|
||||
'email': 'fpeters@entrouvert.com',
|
||||
}
|
||||
],
|
||||
'timestamp': '1431420355.31'
|
||||
}
|
||||
|
||||
def setup_module(module):
|
||||
global pub, hobo_cmd
|
||||
pub = create_temporary_pub()
|
||||
pub.cfg['language'] = {'language': 'en'}
|
||||
hobo_cmd = CmdCheckHobos()
|
||||
hobo_cmd.all_services = HOBO_JSON
|
||||
|
||||
def teardown_module(module):
|
||||
clean_temporary_pub()
|
||||
|
||||
def test_configure_site_options():
|
||||
service = [x for x in HOBO_JSON.get('services', []) if x.get('service-id') == 'wcs'][0]
|
||||
hobo_cmd.configure_site_options(service, pub)
|
||||
pub.load_site_options()
|
||||
assert pub.get_site_option('hobo_url', 'variables') == 'http://hobo.example.net/'
|
||||
assert pub.get_site_option('foobar', 'variables') == 'http://example.net'
|
||||
assert pub.get_site_option('xxx', 'variables') == 'HELLO WORLD'
|
||||
|
||||
def test_update_configuration():
|
||||
service = [x for x in HOBO_JSON.get('services', []) if x.get('service-id') == 'wcs'][0]
|
||||
hobo_cmd.update_configuration(service, pub)
|
||||
assert pub.cfg['misc']['sitename'] == 'Test wcs'
|
||||
|
||||
def test_update_profile():
|
||||
profile = HOBO_JSON.get('profile')
|
||||
|
||||
# load in an empty site
|
||||
hobo_cmd.update_profile(profile, pub)
|
||||
from wcs.admin.settings import UserFieldsFormDef
|
||||
formdef = UserFieldsFormDef(pub)
|
||||
field_labels = [x.get('label').encode('utf-8') for x in profile.get('fields') if not x.get('disabled')]
|
||||
field_ids = [x.get('name') for x in profile.get('fields') if not x.get('disabled')]
|
||||
assert [x.label for x in formdef.fields] == field_labels
|
||||
for field_id in [pub.cfg['users']['field_email']] + pub.cfg['users']['field_name']:
|
||||
assert field_id in [x.id for x in formdef.fields]
|
||||
|
||||
assert formdef.fields[0].id == '_title'
|
||||
assert formdef.fields[1].id == '_first_name'
|
||||
assert formdef.fields[2].id == '_last_name'
|
||||
|
||||
# change a varname value
|
||||
formdef.fields[0].varname = 'civilite'
|
||||
formdef.store()
|
||||
|
||||
# reload config, check the varname is kept
|
||||
hobo_cmd.update_profile(profile, pub)
|
||||
formdef = UserFieldsFormDef(pub)
|
||||
assert formdef.fields[0].id == '_title'
|
||||
assert formdef.fields[0].varname == 'civilite'
|
||||
|
||||
# change first_name/last_name order
|
||||
HOBO_JSON['profile']['fields'][1], HOBO_JSON['profile']['fields'][2] = (
|
||||
HOBO_JSON['profile']['fields'][2], HOBO_JSON['profile']['fields'][1])
|
||||
hobo_cmd.update_profile(profile, pub)
|
||||
formdef = UserFieldsFormDef(pub)
|
||||
assert formdef.fields[1].id == '_last_name'
|
||||
assert formdef.fields[2].id == '_first_name'
|
||||
|
||||
# disable mobile
|
||||
assert '_mobile' in [x.id for x in formdef.fields]
|
||||
HOBO_JSON['profile']['fields'][8]['disabled'] = True
|
||||
hobo_cmd.update_profile(profile, pub)
|
||||
formdef = UserFieldsFormDef(pub)
|
||||
assert not '_mobile' in [x.id for x in formdef.fields]
|
||||
|
||||
# add a custom local field
|
||||
formdef = UserFieldsFormDef(pub)
|
||||
formdef.fields.append(fields.BoolField(id='3', label='bool', type='bool'))
|
||||
formdef.store()
|
||||
hobo_cmd.update_profile(profile, pub)
|
||||
formdef = UserFieldsFormDef(pub)
|
||||
assert 'bool' in [x.label for x in formdef.fields]
|
Loading…
Reference in New Issue