diff --git a/ucs-school-import/modules/ucsschool/importer/utils/username_handler.py b/ucs-school-import/modules/ucsschool/importer/utils/username_handler.py index 5f07ab5..7de2acd 100644 --- a/ucs-school-import/modules/ucsschool/importer/utils/username_handler.py +++ b/ucs-school-import/modules/ucsschool/importer/utils/username_handler.py @@ -1,3 +1,4 @@ +#!/usr/bin/python2.7 # -*- coding: utf-8 -*- # # Univention UCS@school @@ -96,6 +97,43 @@ class UsernameHandler(object): :param name: str: username, possibly a template :return: str: unique username + + >>> UsernameHandler(20).format_username('Max.Mustermann') + 'Max.Mustermann' + >>> UsernameHandler(20).format_username('.') # doctest: +IGNORE_EXCEPTION_DETAIL + Traceback (most recent call last): + ... + FormatError: + >>> UsernameHandler(20).format_username('.Max.Mustermann.') + 'Max.Mustermann' + >>> UsernameHandler(4).format_username('Max.Mustermann') + 'M' + >>> for c in '\x01\x00\x03\x02\x05\x04\x07\x06\t\x08\x0b\n\r\x0c\x0f\x0e\x11\x10\x13\x12\x15\x14\x17\x16\x19\x18\x1b\x1a\x1d\x1c\x1f\x1e! #"%$\'&)(+*-,/;:=@[]\\_^`{}|\x7f~': + ... assert 'Max' == UsernameHandler(20).format_username('Ma%sx' % (c,)) + ... + >>> UsernameHandler(20).format_username('Max.Mustermann12.4567890') + 'Max.Mustermann12' + >>> for c in '.1032547698ACBEDGFIHKJMLONQPSRUTWVYXZacbedgfihkjmlonqpsrutwvyxz': + ... assert 'Ma%sx' % (c,) == UsernameHandler(20).format_username('Ma%sx' % (c,)) + ... + >>> UsernameHandler(20).format_username('Max[Muster]Mann') + 'MaxMusterMann' + >>> UsernameHandler(20).format_username('Max[ALWAYSCOUNTER].Mustermann') + 'Max1.Mustermann' + >>> UsernameHandler(20).format_username('Max[ALWAYSCOUNTER].Mustermann') + 'Max2.Mustermann' + >>> UsernameHandler(20).format_username('Max[ALWAYSCOUNTER].Mustermann') + 'Max3.Mustermann' + >>> UsernameHandler(20).format_username('Max[COUNTER2].Mustermann') + 'Max4.Mustermann' + >>> UsernameHandler(20).format_username('Maria[ALWAYSCOUNTER].Musterfrau') + 'Maria1.Musterfrau' + >>> UsernameHandler(20).format_username('Moritz[COUNTER2]') + 'Moritz' + >>> UsernameHandler(20).format_username('Moritz[COUNTER2]') + 'Moritz2' + >>> for i, c in enumerate('\x01\x00\x03\x02\x05\x04\x07\x06\t\x08\x0b\n\r\x0c\x0f\x0e\x11\x10\x13\x12\x15\x14\x17\x16\x19\x18\x1b\x1a\x1d\x1c\x1f\x1e! #"%$\'&)(+*-,/;:=@\\_^`{}|\x7f~', 1): + ... assert 'Foo%d' % (i) == UsernameHandler(20).format_username('Fo%so[ALWAYSCOUNTER]' % (c,)) """ assert isinstance(name, basestring) ori_name = name @@ -205,3 +243,8 @@ class UsernameHandler(object): num = first_time self.add_to_ldap(name_base, "2") return num + + +if __name__ == '__main__': + import doctest + doctest.testmod()