def test_includes_timing_output(self): io = BytesIO() runner = SubunitTestRunner(stream=io) test = PlaceHolder('name') runner.run(test) client = TimeCollectingTestResult() io.seek(0) subunit.TestProtocolServer(client).readFrom(io) self.assertTrue(len(client.time_called) > 0)
def test_includes_timing_output(self): bytestream = io.BytesIO() runner = SubunitTestRunner(stream=bytestream) test = PlaceHolder('name') runner.run(test) bytestream.seek(0) eventstream = StreamResult() subunit.ByteStreamToStreamResult(bytestream).run(eventstream) timestamps = [event[-1] for event in eventstream._events if event is not None] self.assertNotEqual([], timestamps)
def test_includes_timing_output(self): io = BytesIO() runner = SubunitTestRunner(stream=io) test = PlaceHolder('name') runner.run(test) io.seek(0) eventstream = StreamResult() subunit.ByteStreamToStreamResult(io).run(eventstream) timestamps = [event[-1] for event in eventstream._events if event is not None] self.assertNotEqual([], timestamps)
def test_enumerates_tests_before_run(self): io = BytesIO() runner = SubunitTestRunner(stream=io) test1 = PlaceHolder('name1') test2 = PlaceHolder('name2') case = unittest.TestSuite([test1, test2]) runner.run(case) io.seek(0) eventstream = StreamResult() subunit.ByteStreamToStreamResult(io).run(eventstream) self.assertEqual([ ('status', 'name1', 'exists'), ('status', 'name2', 'exists'), ], [event[:3] for event in eventstream._events[:2]])
def main(argv, prepare_args=prepare_argv, find_tests=find_tests): """CLI entry point to adapt a test run to parallel testing.""" child_args = prepare_argv(argv) test_ids = find_tests(argv) # We could create a proxy object per test id if desired in future) def parallelise_tests(suite): test_ids = list(suite)[0]._test_ids count = concurrency() partitions = partition_tests(test_ids, count) return [ ListTestCase(partition, child_args) for partition in partitions ] suite = ConcurrentTestSuite(ListTestCase(test_ids, None), parallelise_tests) if '--subunit' in argv: runner = SubunitTestRunner(sys.stdout) result = runner.run(suite) else: stream = unicode_output_stream(sys.stdout) result = TextTestResult(stream) result.startTestRun() try: suite.run(result) finally: result.stopTestRun() if result.wasSuccessful(): return 0 return -1
def main(argv, prepare_args=prepare_argv, find_tests=find_tests): """CLI entry point to adapt a test run to parallel testing.""" child_args = prepare_argv(argv) test_ids = find_tests(argv) # We could create a proxy object per test id if desired in future) def parallelise_tests(suite): test_ids = list(suite)[0]._test_ids count = concurrency() partitions = partition_tests(test_ids, count) return [ListTestCase(partition, child_args) for partition in partitions] suite = ConcurrentTestSuite(ListTestCase(test_ids, None), parallelise_tests) if '--subunit' in argv: runner = SubunitTestRunner(sys.stdout) result = runner.run(suite) else: stream = unicode_output_stream(sys.stdout) result = TextTestResult(stream) result.startTestRun() try: suite.run(result) finally: result.stopTestRun() if result.wasSuccessful(): return 0 return -1
parser.add_option_group(sambaopts) parser.add_option_group(options.VersionOptions(parser)) # use command line creds if available credopts = options.CredentialsOptions(parser) parser.add_option_group(credopts) opts, args = parser.parse_args() if len(args) < 1: parser.print_usage() sys.exit(1) host = args[0] lp = sambaopts.get_loadparm() creds = credopts.get_credentials(lp) if not "://" in host: if os.path.isfile(host): host = "tdb://%s" % host else: host = "ldap://%s" % host runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(MatchRulesTests)).wasSuccessful(): rc = 1 sys.exit(rc)
ctl[1] = "1" ctl[2] = "1" ctl[3] = "10000" control1 = str(":".join(ctl)) # So now delete the object and check that # we can see the object but deleted when admin # we just see the objectGUID when simple user delete_force(self.ldb_admin, ouname) res = self.ldb_simple.search(self.base_dn, expression="(objectClass=organizationalUnit)", controls=[control1]) self.assertEqual(len(res), 1) guid2 = str(ndr_unpack(misc.GUID,res[0].get("objectGUID")[0])) self.assertEqual(guid2, guid) self.assertEqual(str(res[0].dn), "") ldb = SamDB(ldapshost, credentials=creds, session_info=system_session(lp), lp=lp) runner = SubunitTestRunner() rc = 0 # if not runner.run(unittest.makeSuite(SimpleDirsyncTests)).wasSuccessful(): rc = 1 if not runner.run(unittest.makeSuite(ExtendedDirsyncTests)).wasSuccessful(): rc = 1 sys.exit(rc)
sambaopts = options.SambaOptions(parser) parser.add_option_group(sambaopts) parser.add_option_group(options.VersionOptions(parser)) # use command line creds if available credopts = options.CredentialsOptions(parser) parser.add_option_group(credopts) opts, args = parser.parse_args() if len(args) < 1: parser.print_usage() sys.exit(1) host = args[0] lp = sambaopts.get_loadparm() creds = credopts.get_credentials(lp) if not "://" in host: if os.path.isfile(host): host = "tdb://%s" % host else: host = "ldap://%s" % host runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(MatchRulesTests)).wasSuccessful(): rc = 1 sys.exit(rc)
session = gensec_server.session_info() token = session.security_token pac_sids = [] for s in token.sids: pac_sids.append(str(s)) sidset1 = set(pac_sids) sidset2 = set(self.user_sids) if len(sidset1.difference(sidset2)): print("token sids don't match") print("difference : %s" % sidset1.difference(sidset2)) self.fail( msg="calculated groups don't match against user PAC tokenGroups" ) if not "://" in url: if os.path.isfile(url): url = "tdb://%s" % url else: url = "ldap://%s" % url samdb = SamDB(url, credentials=creds, session_info=system_session(lp), lp=lp) runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(TokenTest)).wasSuccessful(): rc = 1 sys.exit(rc)
# attribute m = Message() m.dn = Dn(ldb, "cn=user UrgAttr test,cn=users," + self.base_dn) m["description"] = MessageElement("updated urgent attributes test description", FLAG_MOD_REPLACE, "description") ldb.modify(m) res = self.ldb.load_partition_usn(self.base_dn) self.assertNotEquals(res["uSNHighest"], res["uSNUrgent"]) # urgent replication should NOT be enabled when deleting self.delete_force(self.ldb, "cn=user UrgAttr test,cn=users," + self.base_dn) res = self.ldb.load_partition_usn(self.base_dn) self.assertNotEquals(res["uSNHighest"], res["uSNUrgent"]) if not "://" in host: if os.path.isfile(host): host = "tdb://%s" % host else: host = "ldap://%s" % host ldb = SamDB(host, credentials=creds, session_info=system_session(lp), lp=lp, global_schema=False) runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(UrgentReplicationTests)).wasSuccessful(): rc = 1 sys.exit(rc)
def test_22_01_delete_all_groups(self): for i in range(self.state.n_groups): self.ldb.delete("cn=g%d,%s" % (i, self.ou_groups)) self.state.n_groups = 0 self.state.active_links = set() # XXX assert the state is as we think, using searches def test_23_01_delete_users_5900_after_groups(self): # we do not delete everything because it takes too long n = 4 * DELETE_BATCH_SIZE self._test_delete_many_users(n=n) test_24_02_join_after_partial_cleanup = _test_join if "://" not in host: if os.path.isfile(host): host = "tdb://%s" % host else: host = "ldap://%s" % host if ANCIENT_SAMBA: runner = SubunitTestRunner() if not runner.run(unittest.makeSuite(UserTests)).wasSuccessful(): sys.exit(1) sys.exit(0) else: TestProgram(module=__name__, opts=subunitopts)
self.add_computer_ldap(computername, others={"userAccountControl": [str(UF_WORKSTATION_TRUST_ACCOUNT)]}, samdb=self.admin_samdb) res = self.admin_samdb.search("%s" % self.base_dn, expression="(&(objectClass=computer)(samAccountName=%s$))" % computername, scope=SCOPE_SUBTREE, attrs=[""]) m = ldb.Message() m.dn = ldb.Dn(self.admin_samdb, "<SID=%s-%d>" % (str(self.domain_sid), security.DOMAIN_RID_ADMINS)) m["member"]= ldb.MessageElement( [str(res[0].dn)], ldb.FLAG_MOD_ADD, "member") self.admin_samdb.modify(m) m = ldb.Message() m.dn = res[0].dn m["primaryGroupID"]= ldb.MessageElement( [str(security.DOMAIN_RID_ADMINS)], ldb.FLAG_MOD_REPLACE, "primaryGroupID") self.admin_samdb.modify(m) runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(UserAccountControlTests)).wasSuccessful(): rc = 1 sys.exit(rc)
res = self.ldb.search(self.user_sid_dn, scope=ldb.SCOPE_BASE, attrs=["tokenGroupsGlobalAndUniversal"]) self.assertEquals(len(res), 1) dn_tokengroups = [] for sid in res[0]['tokenGroupsGlobalAndUniversal']: sid = ndr_unpack(samba.dcerpc.security.dom_sid, sid) res3 = self.admin_ldb.search(base="<SID=%s>" % sid, scope=ldb.SCOPE_BASE, attrs=[]) tokenGroupsSet.add(res3[0].dn.get_casefold()) if len(T.difference(tokenGroupsSet)): self.fail(msg="additional calculated: %s" % T.difference(tokenGroupsSet)) if len(tokenGroupsSet.difference(T)): self.fail(msg="additional tokenGroupsGlobalAndUniversal: %s" % tokenGroupsSet.difference(T)) if not "://" in url: if os.path.isfile(url): url = "tdb://%s" % url else: url = "ldap://%s" % url runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(StaticTokenTest)).wasSuccessful(): rc = 1 if not runner.run(unittest.makeSuite(DynamicTokenTest)).wasSuccessful(): rc = 1 sys.exit(rc)
# So now delete the object and check that # we can see the object but deleted when admin # we just see the objectGUID when simple user delete_force(self.ldb_admin, ouname) res = self.ldb_simple.search( self.base_dn, expression="(objectClass=organizationalUnit)", controls=[control1]) self.assertEqual(len(res), 1) guid2 = str(ndr_unpack(misc.GUID, res[0].get("objectGUID")[0])) self.assertEqual(guid2, guid) self.assertEqual(str(res[0].dn), "") ldb = SamDB(ldapshost, credentials=creds, session_info=system_session(lp), lp=lp) runner = SubunitTestRunner() rc = 0 # if not runner.run(unittest.makeSuite(SimpleDirsyncTests)).wasSuccessful(): rc = 1 if not runner.run(unittest.makeSuite(ExtendedDirsyncTests)).wasSuccessful(): rc = 1 sys.exit(rc)
self.assertTrue("msDS-isRODC" in ldb_msg) if not "://" in host: if os.path.isfile(host): host = "tdb://%s" % host else: host = "ldap://%s" % host ldb_options = [] if host.startswith("ldap://"): # user 'paged_search' module when connecting remotely ldb_options = ["modules:paged_searches"] ldb = SamDB(host, credentials=creds, session_info=system_session(lp), lp=lp, options=ldb_options) runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(SchemaTests)).wasSuccessful(): rc = 1 if not runner.run(unittest.makeSuite(SchemaTests_msDS_IntId)).wasSuccessful(): rc = 1 if not runner.run(unittest.makeSuite(SchemaTests_msDS_isRODC)).wasSuccessful(): rc = 1 sys.exit(rc)
dn_tokengroups = [] for sid in res[0]['tokenGroupsGlobalAndUniversal']: sid = ndr_unpack(samba.dcerpc.security.dom_sid, sid) res3 = self.admin_ldb.search(base="<SID=%s>" % sid, scope=ldb.SCOPE_BASE, attrs=[]) tokenGroupsSet.add(res3[0].dn.get_casefold()) if len(T.difference(tokenGroupsSet)): self.fail(msg="additional calculated: %s" % T.difference(tokenGroupsSet)) if len(tokenGroupsSet.difference(T)): self.fail(msg="additional tokenGroupsGlobalAndUniversal: %s" % tokenGroupsSet.difference(T)) if not "://" in url: if os.path.isfile(url): url = "tdb://%s" % url else: url = "ldap://%s" % url runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(StaticTokenTest)).wasSuccessful(): rc = 1 if not runner.run(unittest.makeSuite(DynamicTokenTest)).wasSuccessful(): rc = 1 sys.exit(rc)
session = gensec_server.session_info() token = session.security_token pac_sids = [] for s in token.sids: pac_sids.append(str(s)) sidset1 = set(pac_sids) sidset2 = set(self.user_sids) if len(sidset1.difference(sidset2)): print("token sids don't match") print("tokengroups: %s" % tokengroups) print("calculated : %s" % sids); print("difference : %s" % sidset1.difference(sidset2)) self.fail(msg="calculated groups don't match against user PAC tokenGroups") if not "://" in url: if os.path.isfile(url): url = "tdb://%s" % url else: url = "ldap://%s" % url samdb = SamDB(url, credentials=creds, session_info=system_session(lp), lp=lp) runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(TokenTest)).wasSuccessful(): rc = 1 sys.exit(rc)
self.dn_binary_class_ldap_display_name, self.dn_binary_attribute, ": B:4:1234:<SID=%s>" % self.ldb.get_domain_sid()) try: self.ldb.add_ldif(ldif) except LdbError, (num, _): self.assertEquals(num, ERR_CONSTRAINT_VIOLATION) # add object with random string instead of DN object_name5 = "obj-DN-Binary5" + time.strftime("%s", time.gmtime()) ldif = self._get_object_ldif(object_name5, self.dn_binary_class_name, self.dn_binary_class_ldap_display_name, self.dn_binary_attribute, ": B:4:1234:randomSTRING") try: self.ldb.add_ldif(ldif) except LdbError, (num, _): self.assertEquals(num, ERR_CONSTRAINT_VIOLATION) pass ldb = samba.tests.connect_samdb(host, credentials=creds, session_info=system_session(lp), lp=lp) runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(SyntaxTests)).wasSuccessful(): rc = 1 sys.exit(rc)
def test_search_01000(self): self.run_search_bundle(1000, self.ldb_admin) def test_search2_01000(self): # allow the user to see objects but not attributes, all attributes will be filtered out mod = "(A;;LC;;;%s)(D;;RP;;;%s)" % (str( self.user_sid), str(self.user_sid)) self.sd_utils.dacl_add_ace("CN=Users,%s" % self.base_dn, mod) self.run_search_bundle(1000, self.ldb_user) # Important unit running information if not "://" in host: host = "ldap://%s" % host ldb_options = ["modules:paged_searches"] ldb = SamDB(host, credentials=creds, session_info=system_session(), lp=lp, options=ldb_options) runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(SpeedTestAddDel)).wasSuccessful(): rc = 1 if not runner.run(unittest.makeSuite(AclSearchSpeedTest)).wasSuccessful(): rc = 1 sys.exit(rc)
attrs=["serverReferenceBL","msDS-isRODC"], controls=["search_options:1:2"]) for ldb_msg in res: if "serverReferenceBL" not in ldb_msg: print("Computer entry %s doesn't have a serverReferenceBL attribute" % ldb_msg['dn']) else: self.assertTrue("msDS-isRODC" in ldb_msg) if not "://" in host: if os.path.isfile(host): host = "tdb://%s" % host else: host = "ldap://%s" % host ldb_options = [] if host.startswith("ldap://"): # user 'paged_search' module when connecting remotely ldb_options = ["modules:paged_searches"] ldb = SamDB(host, credentials=creds, session_info=system_session(lp), lp=lp, options=ldb_options) runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(SchemaTests)).wasSuccessful(): rc = 1 if not runner.run(unittest.makeSuite(SchemaTests_msDS_IntId)).wasSuccessful(): rc = 1 if not runner.run(unittest.makeSuite(SchemaTests_msDS_isRODC)).wasSuccessful(): rc = 1 sys.exit(rc)
self.ldb.add_ldif(ldif) except LdbError, (num, _): self.assertEquals(num, ERR_CONSTRAINT_VIOLATION) # add object with SID instead of DN object_name4 = "obj-DN-Binary4" + time.strftime("%s", time.gmtime()) ldif = self._get_object_ldif(object_name4, self.dn_binary_class_name, self.dn_binary_class_ldap_display_name, self.dn_binary_attribute, ": B:4:1234:<SID=%s>" % self.ldb.get_domain_sid()) try: self.ldb.add_ldif(ldif) except LdbError, (num, _): self.assertEquals(num, ERR_CONSTRAINT_VIOLATION) # add object with random string instead of DN object_name5 = "obj-DN-Binary5" + time.strftime("%s", time.gmtime()) ldif = self._get_object_ldif(object_name5, self.dn_binary_class_name, self.dn_binary_class_ldap_display_name, self.dn_binary_attribute, ": B:4:1234:randomSTRING") try: self.ldb.add_ldif(ldif) except LdbError, (num, _): self.assertEquals(num, ERR_CONSTRAINT_VIOLATION) pass ldb = samba.tests.connect_samdb(host, credentials=creds, session_info=system_session(lp), lp=lp) runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(SyntaxTests)).wasSuccessful(): rc = 1 sys.exit(rc)
"updated urgent attributes test description", FLAG_MOD_REPLACE, "description") ldb.modify(m) res = self.ldb.load_partition_usn(self.base_dn) self.assertNotEquals(res["uSNHighest"], res["uSNUrgent"]) # urgent replication should NOT be enabled when deleting self.delete_force(self.ldb, "cn=user UrgAttr test,cn=users," + self.base_dn) res = self.ldb.load_partition_usn(self.base_dn) self.assertNotEquals(res["uSNHighest"], res["uSNUrgent"]) if not "://" in host: if os.path.isfile(host): host = "tdb://%s" % host else: host = "ldap://%s" % host ldb = SamDB(host, credentials=creds, session_info=system_session(lp), lp=lp, global_schema=False) runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(UrgentReplicationTests)).wasSuccessful(): rc = 1 sys.exit(rc)
creds_tmp.set_workstation(creds.get_workstation()) creds_tmp.set_gensec_features(creds_tmp.get_gensec_features() | gensec.FEATURE_SEAL) ldb_target = SamDB(url=host, credentials=creds_tmp, lp=lp) return ldb_target def test_search_01000(self): self.run_search_bundle(1000, self.ldb_admin) def test_search2_01000(self): # allow the user to see objects but not attributes, all attributes will be filtered out mod = "(A;;LC;;;%s)(D;;RP;;;%s)" % (str(self.user_sid), str(self.user_sid)) self.sd_utils.dacl_add_ace("CN=Users,%s" % self.base_dn, mod) self.run_search_bundle(1000, self.ldb_user) # Important unit running information if not "://" in host: host = "ldap://%s" % host ldb_options = ["modules:paged_searches"] ldb = SamDB(host, credentials=creds, session_info=system_session(), lp=lp, options=ldb_options) runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(SpeedTestAddDel)).wasSuccessful(): rc = 1 if not runner.run(unittest.makeSuite(AclSearchSpeedTest)).wasSuccessful(): rc = 1 sys.exit(rc)
self.delete_deleted(ldb, usr1) self.delete_deleted(ldb, usr2) self.delete_deleted(ldb, grp1) self.delete_deleted(ldb, sit1) self.delete_deleted(ldb, ss1) self.delete_deleted(ldb, srv1) self.delete_deleted(ldb, srv2) self.assertTrue("CN=Deleted Objects" in str(objDeleted1.dn)) self.assertTrue("CN=Deleted Objects" in str(objDeleted2.dn)) self.assertTrue("CN=Deleted Objects" in str(objDeleted3.dn)) self.assertFalse("CN=Deleted Objects" in str(objDeleted4.dn)) self.assertTrue("CN=Deleted Objects" in str(objDeleted5.dn)) self.assertFalse("CN=Deleted Objects" in str(objDeleted6.dn)) self.assertFalse("CN=Deleted Objects" in str(objDeleted7.dn)) if not "://" in host: if os.path.isfile(host): host = "tdb://%s" % host else: host = "ldap://%s" % host ldb = SamDB(host, credentials=creds, session_info=system_session(lp), lp=lp) runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(BasicDeleteTests)).wasSuccessful(): rc = 1 sys.exit(rc)
cmd = cmd_sambatool.subcommands['domain'].subcommands['provision'] result = cmd._run("samba-tool domain provision", '--targetdir=%s' % self.tmpdir, '--use-ntvfs') def test_03_00_provision_server_role(self): for role in ('member', 'server', 'member', 'standalone'): self._test_provision_subprocess(options=['--server-role', role], subdir=role) def test_04_00_provision_blank(self): for i in range(2): self._test_provision_subprocess(options=['--blank'], subdir=i) def test_05_00_provision_partitions_only(self): self._test_provision_subprocess(options=['--partitions-only']) if "://" not in host: if os.path.isfile(host): host = "tdb://%s" % host else: host = "ldap://%s" % host if ANCIENT_SAMBA: runner = SubunitTestRunner() if not runner.run(unittest.makeSuite(UserTests)).wasSuccessful(): sys.exit(1) sys.exit(0) else: TestProgram(module=__name__, opts=subunitopts)
"""test removal of 1 site""" self.ldb_admin.transaction_start() ok = sites.delete_site(self.ldb_admin, self.ldb_admin.get_config_basedn(), "testsamba") self.ldb_admin.transaction_commit() self.assertRaises(sites.SiteNotFoundException, sites.delete_site, self.ldb_admin, self.ldb_admin.get_config_basedn(), "testsamba") def test_delete_not_empty(self): """test removal of 1 site with servers""" self.assertRaises(sites.SiteServerNotEmptyException, sites.delete_site, self.ldb_admin, self.ldb_admin.get_config_basedn(), "Default-First-Site-Name") ldb = SamDB(ldapshost, credentials=creds, session_info=system_session(lp), lp=lp) runner = SubunitTestRunner() rc = 0 if not runner.run(unittest.makeSuite(SimpleSitesTests)).wasSuccessful(): rc = 1 sys.exit(rc)