This is an automated email from the git hooks/post-receive script.
spichugi pushed a change to branch master in repository 389-ds-base.
from 790be09 Ticket 49524 - Password policy: minimum token length fails when the token length is equal to attribute length new f102eab Ticket 49523 - Refactor CI test
The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference.
Summary of changes: .../suites/memberof_plugin/regression_test.py | 66 ++++++++- dirsrvtests/tests/tickets/ticket49523_test.py | 154 --------------------- 2 files changed, 64 insertions(+), 156 deletions(-) delete mode 100644 dirsrvtests/tests/tickets/ticket49523_test.py
This is an automated email from the git hooks/post-receive script.
spichugi pushed a commit to branch master in repository 389-ds-base.
commit f102eab6798f637217c18d19040cae498a770de2 Author: Simon Pichugin spichugi@redhat.com Date: Mon Jan 8 14:42:20 2018 +0100
Ticket 49523 - Refactor CI test
Description: Add Python 3 support, move the test case to suites/memberof_plugin/regression-test.py and refactor its structure with lib389 wrappers.
https://pagure.io/389-ds-base/issue/49523
Reviewed by: mreynolds (Thanks!) --- .../suites/memberof_plugin/regression_test.py | 66 ++++++++- dirsrvtests/tests/tickets/ticket49523_test.py | 154 --------------------- 2 files changed, 64 insertions(+), 156 deletions(-)
diff --git a/dirsrvtests/tests/suites/memberof_plugin/regression_test.py b/dirsrvtests/tests/suites/memberof_plugin/regression_test.py index 6ba4217..bc7affe 100644 --- a/dirsrvtests/tests/suites/memberof_plugin/regression_test.py +++ b/dirsrvtests/tests/suites/memberof_plugin/regression_test.py @@ -1,3 +1,11 @@ +# --- BEGIN COPYRIGHT BLOCK --- +# Copyright (C) 2017 Red Hat, Inc. +# All rights reserved. +# +# License: GPL (version 3 or any later version). +# See LICENSE for details. +# --- END COPYRIGHT BLOCK --- +# import logging import pytest import os @@ -15,8 +23,9 @@ from lib389.idm.group import Groups, Group # Skip on older versions pytestmark = pytest.mark.skipif(ds_is_older('1.3.7'), reason="Not implemented")
-USER_CN='user_' -GROUP_CN='group_' +USER_CN = 'user_' +GROUP_CN = 'group1' +
DEBUGGING = os.getenv("DEBUGGING", default=False) if DEBUGGING: @@ -232,6 +241,59 @@ def test_memberof_with_repl(topo): _find_memberof(i, member_dn, grp0_dn)
+@pytest.mark.skipif(ds_is_older('1.4.0'), reason="Not implemented") +def test_scheme_violation_errors_logged(topo): + """Check that ERR messages are verbose enough, if a member entry + doesn't have the appropriate objectclass to support 'memberof' attribute + + :id: e2af0aaa-447e-4e85-a5ce-57ae66260d0b + :setup: Standalone instance + :steps: + 1. Enable memberofPlugin and set autoaddoc to nsMemberOf + 2. Restart the instance + 3. Add a user without nsMemberOf attribute + 4. Create a group and add the user to the group + 5. Check that user has memberOf attribute + 6. Check the error log for ".*oc_check_allowed_sv.*USER_DN.*memberOf.*not allowed.*" + and ".*schema violation caught - repair operation.*" patterns + :expectedresults: + 1. Should be successful + 2. Should be successful + 3. Should be successful + 4. Should be successful + 5. User should have the attribute + 6. Errors should be logged + """ + + inst = topo.ms["master1"] + memberof = MemberOfPlugin(inst) + memberof.enable() + memberof.set_autoaddoc('nsMemberOf') + inst.restart() + + users = UserAccounts(inst, SUFFIX) + user_props = TEST_USER_PROPERTIES.copy() + user_props.update({'uid': USER_CN, 'cn': USER_CN, 'sn': USER_CN}) + testuser = users.create(properties=user_props) + testuser.remove('objectclass', 'nsMemberOf') + + groups = Groups(inst, SUFFIX) + testgroup = groups.create(properties={'cn': GROUP_CN}) + + testgroup.add('member', testuser.dn) + + user_memberof_attr = testuser.get_attr_val_utf8('memberof') + assert user_memberof_attr + log.info('memberOf attr value - '.format(user_memberof_attr)) + + pattern = ".*oc_check_allowed_sv.*{}.*memberOf.*not allowed.*".format(testuser.dn) + log.info("pattern = %s" % pattern) + assert inst.ds_error_log.match(pattern) + + pattern = ".*schema violation caught - repair operation.*" + assert inst.ds_error_log.match(pattern) + + if __name__ == '__main__': # Run isolated # -s for DEBUG mode diff --git a/dirsrvtests/tests/tickets/ticket49523_test.py b/dirsrvtests/tests/tickets/ticket49523_test.py deleted file mode 100644 index c3296ef..0000000 --- a/dirsrvtests/tests/tickets/ticket49523_test.py +++ /dev/null @@ -1,154 +0,0 @@ -import logging -import pytest -import os -import ldap -import time -import re -from lib389.plugins import MemberOfPlugin -from lib389._constants import * -from lib389.topologies import topology_st as topo -from lib389 import Entry - -DEBUGGING = os.getenv("DEBUGGING", default=False) -if DEBUGGING: - logging.getLogger(__name__).setLevel(logging.DEBUG) -else: - logging.getLogger(__name__).setLevel(logging.INFO) -log = logging.getLogger(__name__) - - -USER_CN='user_' -GROUP_CN='group_' -def _user_get_dn(no): - cn = '%s%d' % (USER_CN, no) - dn = 'cn=%s,ou=people,%s' % (cn, SUFFIX) - return (cn, dn) - -def add_user(server, no, desc='dummy', sleep=True): - (cn, dn) = _user_get_dn(no) - log.fatal('Adding user (%s): ' % dn) - server.add_s(Entry((dn, {'objectclass': ['top', 'person'], - 'cn': [cn], - 'description': [desc], - 'sn': [cn], - 'description': ['add on that host']}))) - if sleep: - time.sleep(2) - -def add_group(server, nr, sleep=True): - cn = '%s%d' % (GROUP_CN, nr) - dn = 'cn=%s,ou=groups,%s' % (cn, SUFFIX) - server.add_s(Entry((dn, {'objectclass': ['top', 'groupofnames'], - 'description': 'group %d' % nr}))) - if sleep: - time.sleep(2) - -def update_member(server, member_dn, group_dn, op, sleep=True): - mod = [(op, 'member', member_dn)] - server.modify_s(group_dn, mod) - if sleep: - time.sleep(2) - -def _find_memberof(server, member_dn, group_dn, find_result=True): - ent = server.getEntry(member_dn, ldap.SCOPE_BASE, "(objectclass=*)", ['memberof']) - found = False - if ent.hasAttr('memberof'): - - for val in ent.getValues('memberof'): - server.log.info("!!!!!!! %s: memberof->%s" % (member_dn, val)) - server.log.info("!!!!!!! %s" % (val)) - server.log.info("!!!!!!! %s" % (group_dn)) - if val.lower() == group_dn.lower(): - found = True - break - - if find_result: - assert (found) - else: - assert (not found) - -def pattern_accesslog(server, log_pattern): - file_obj = open(server.accesslog, "r") - - found = False - # Use a while true iteration because 'for line in file: hit a - while True: - line = file_obj.readline() - found = log_pattern.search(line) - if ((line == '') or (found)): - break - - return found - -def pattern_errorlog(server, log_pattern): - file_obj = open(server.errlog, "r") - - found = None - # Use a while true iteration because 'for line in file: hit a - while True: - line = file_obj.readline() - found = log_pattern.search(line) - server.log.fatal("%s --> %s" % (line, found)) - if ((line == '') or (found)): - break - - return found - -def test_ticket49523(topo): - """Specify a test case purpose or name here - - :id: e2af0aaa-447e-4e85-a5ce-57ae66260d0b - :setup: Fill in set up configuration here - :steps: - 1. Fill in test case steps here - 2. And indent them like this (RST format requirement) - :expectedresults: - 1. Fill in the result that is expected - 2. For each test step - """ - - # If you need any test suite initialization, - # please, write additional fixture for that (including finalizer). - # Topology for suites are predefined in lib389/topologies.py. - - # If you need host, port or any other data about instance, - # Please, use the instance object attributes for that (for example, topo.ms["master1"].serverid) - inst = topo.standalone - memberof = MemberOfPlugin(inst) - memberof.enable() - memberof.set_autoaddoc('nsMemberOf') - inst.restart() - - # Step 2 - for i in range(10): - add_user(inst, i, desc='add user') - - add_group(inst, 1) - - group_parent_dn = 'ou=groups,%s' % (SUFFIX) - group_rdn = 'cn=%s%d' % (GROUP_CN, 1) - group_dn = '%s,%s' % (group_rdn, group_parent_dn) - (member_cn, member_dn) = _user_get_dn(1) - update_member(inst, member_dn, group_dn, ldap.MOD_ADD, sleep=False) - - _find_memberof(inst, member_dn, group_dn, find_result=True) - - pattern = ".*oc_check_allowed_sv - Entry.*cn=%s.* -- attribute.*not allowed.*" % member_cn - log.fatal("pattern = %s" % pattern) - regex = re.compile(pattern) - assert pattern_errorlog(inst, regex) - - regex = re.compile(".*schema violation caught - repair operation.*") - assert pattern_errorlog(inst, regex) - - if DEBUGGING: - # Add debugging steps(if any)... - pass - - -if __name__ == '__main__': - # Run isolated - # -s for DEBUG mode - CURRENT_FILE = os.path.realpath(__file__) - pytest.main("-s %s" % CURRENT_FILE) -
389-commits@lists.fedoraproject.org