This is an automated email from the git hooks/post-receive script.
mreynolds pushed a commit to branch master
in repository 389-ds-base.
commit a6d2c684721d8d02bf8009513cb092c00aee852e
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Tue Oct 3 08:30:33 2017 -0400
Ticket 49092 - Add CI test for schema-reload
Description: ADD CI test for schema reload task
https://pagure.io/389-ds-base/issue/49092
Reviewed by: spichugi & firstyear(Thanks!!)
---
.../tests/suites/schema/schema_reload_test.py | 153 +++++++++++++++++++++
1 file changed, 153 insertions(+)
diff --git a/dirsrvtests/tests/suites/schema/schema_reload_test.py
b/dirsrvtests/tests/suites/schema/schema_reload_test.py
new file mode 100644
index 0000000..a42d038
--- /dev/null
+++ b/dirsrvtests/tests/suites/schema/schema_reload_test.py
@@ -0,0 +1,153 @@
+# --- 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 ldap
+import os
+from lib389.topologies import topology_st as topo
+from lib389._constants import TASK_WAIT
+
+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__)
+
+INVALID_SCHEMA = 'givenName $ cn $ MoZiLLaATTRiBuTe'
+
+
+def test_valid_schema(topo):
+ """Test schema-reload task with valid schema
+
+ :id: 2ab304c0-3e58-4d34-b23b-a14b5997c7a8
+ :setup: Standalone instance
+ :steps:
+ 1. Create schema file with valid schema
+ 2. Run schema-reload.pl script
+ 3. Run ldapsearch and check if schema was added
+ :expectedresults:
+ 1. File creation should work
+ 2. The schema reload task should be successful
+ 3. Searching the server should return the new schema
+ """
+
+ log.info("Test schema-reload task with valid schema")
+
+ # Step 1 - Create schema file
+ log.info("Create valid schema file (99user.ldif)...")
+ schema_filename = (topo.standalone.schemadir + "/99user.ldif")
+ try:
+ with open(schema_filename, 'w') as schema_file:
+ schema_file.write("dn: cn=schema\n")
+ schema_file.write("attributetypes: ( 8.9.10.11.12.13.13 NAME " +
+ "'ValidAttribute' SYNTAX
1.3.6.1.4.1.1466.115.121.1.15" +
+ " X-ORIGIN 'Mozilla Dummy Schema' )\n")
+ schema_file.write("objectclasses: ( 1.2.3.4.5.6.7.8 NAME
'TestObject' " +
+ "SUP top MUST ( objectclass $ cn ) MAY ( givenName $
" +
+ "sn $ ValidAttribute ) X-ORIGIN 'user defined'
)')\n")
+ except OSError as e:
+ log.fatal("Failed to create schema file: " +
+ "{} Error: {}".format(schema_filename, str(e)))
+
+ # Step 2 - Run the schema-reload task
+ log.info("Run the schema-reload task...")
+ reload_result = topo.standalone.tasks.schemaReload(args={TASK_WAIT: True})
+ if reload_result != 0:
+ log.fatal("The schema reload task failed")
+ assert False
+ else:
+ log.info("The schema reload task worked as expected")
+
+ # Step 3 - Verify valid schema was added to the server
+ log.info("Check cn=schema to verify the valid schema was added")
+ subschema = topo.standalone.schema.get_subschema()
+
+ oc_obj = subschema.get_obj(ldap.schema.ObjectClass, 'TestObject')
+ assert oc_obj is not None, "The new objectclass was not found on server"
+
+ at_obj = subschema.get_obj(ldap.schema.AttributeType, 'ValidAttribute')
+ assert at_obj is not None, "The new attribute was not found on server"
+
+
+def test_invalid_schema(topo):
+ """Test schema-reload task with invalid schema
+
+ :id: 2ab304c0-3e58-4d34-b23b-a14b5997c7a9
+ :setup: Standalone instance
+ :steps:
+ 1. Create schema files with invalid schema
+ 2. Run schema-reload.pl script
+ 3. Run ldapsearch and check if schema was added
+ :expectedresults:
+ 1. File creation should work
+ 2. The schema reload task should return an error
+ 3. Searching the server should not return the invalid schema
+ """
+ log.info("Test schema-reload task with invalid schema")
+
+ # Step 1 - Create schema files: one valid, one invalid
+ log.info("Create valid schema file (98user.ldif)...")
+ schema_filename = (topo.standalone.schemadir + "/98user.ldif")
+ try:
+ with open(schema_filename, 'w') as schema_file:
+ schema_file.write("dn: cn=schema\n")
+ schema_file.write("attributetypes: ( 8.9.10.11.12.13.14 NAME " +
+ "'MozillaAttribute' SYNTAX
1.3.6.1.4.1.1466.115.121.1.15" +
+ " X-ORIGIN 'Mozilla Dummy Schema' )\n")
+ schema_file.write("objectclasses: ( 1.2.3.4.5.6.7 NAME
'MoZiLLaOBJeCT' " +
+ "SUP top MUST ( objectclass $ cn ) MAY ( givenName $
" +
+ "sn $ MozillaAttribute ) X-ORIGIN 'user
defined' )')\n")
+ except OSError as e:
+ log.fatal("Failed to create schema file: " +
+ "{} Error: {}".format(schema_filename, str(e)))
+
+ log.info("Create invalid schema file (99user.ldif)...")
+ schema_filename = (topo.standalone.schemadir + "/99user.ldif")
+ try:
+ with open(schema_filename, 'w') as schema_file:
+ schema_file.write("dn: cn=schema\n")
+ # Same attribute/objclass names, but different OIDs and MAY attributes
+ schema_file.write("attributetypes: ( 8.9.10.11.12.13.140 NAME " +
+ "'MozillaAttribute' SYNTAX
1.3.6.1.4.1.1466.115.121.1.15" +
+ " X-ORIGIN 'Mozilla Dummy Schema' )\n")
+ schema_file.write("objectclasses: ( 1.2.3.4.5.6.70 NAME
'MoZiLLaOBJeCT' " +
+ "SUP top MUST ( objectclass $ cn ) MAY ( givenName $
" +
+ "cn $ MoZiLLaATTRiBuTe ) X-ORIGIN 'user
defined' )')\n")
+ except OSError as e:
+ log.fatal("Failed to create schema file: " +
+ "{} Error: {}".format(schema_filename, str(e)))
+
+ # Step 2 - Run the schema-reload task
+ log.info("Run the schema-reload task, it should fail...")
+ reload_result = topo.standalone.tasks.schemaReload(args={TASK_WAIT: True})
+ if reload_result == 0:
+ log.fatal("The schema reload task incorectly reported success")
+ assert False
+ else:
+ log.info("The schema reload task failed as expected:" +
+ " error {}".format(reload_result))
+
+ # Step 3 - Verify invalid schema was not added to the server
+ log.info("Check cn=schema to verify the invalid schema was not added")
+ subschema = topo.standalone.schema.get_subschema()
+ oc_obj = subschema.get_obj(ldap.schema.ObjectClass, 'MoZiLLaOBJeCT')
+ if oc_obj is not None and INVALID_SCHEMA in str(oc_obj):
+ log.fatal("The invalid schema was returned from the server: " +
str(oc_obj))
+ assert False
+ else:
+ log.info("The invalid schema is not present on the server")
+
+
+if __name__ == '__main__':
+ # Run isolated
+ # -s for DEBUG mode
+ CURRENT_FILE = os.path.realpath(__file__)
+ pytest.main("-s %s" % CURRENT_FILE)
+
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.