diff --git a/roles/ldap_server/molecule/default/tests/helpers.py b/roles/ldap_server/molecule/default/tests/helpers.py new file mode 100644 index 0000000000000000000000000000000000000000..3bed75d6ecaaabb116ea00ccc595d4d491e71f27 --- /dev/null +++ b/roles/ldap_server/molecule/default/tests/helpers.py @@ -0,0 +1,31 @@ +import io + +import ldif + + +def parse_ldif(ldif_input): + """ + Helper function that parses the passed-in LDIF string. This is a + simple wrapper around the Python LDAP ldif.LDIFRecordList class. + + Entries are returned as list of (dn, attributes) + tuples. Attributes are represented by a dictionary mapping + attribute names to list of associated values. + + :param ldif_input: LDIF to parse. + :type ldif_input: str + + :returns: List of parsed entries. + :rtype: list[tuple(str, dict{str: list[str]})] + + Returns: + """ + + parser = ldif.LDIFRecordList(io.StringIO(ldif_input)) + + try: + parser.parse() + except Exception as e: + raise ValueError("Failed to parse input: %s" % str(e)) + + return parser.all_records