Skip to content

Commit

Permalink
r25948: Fix up the samba3sam test (which is very fragile) to work wit…
Browse files Browse the repository at this point in the history
…h the new

restrictions imposed by the samldb module.

This module is worth keeping, because when we go back to do more
extensive backend mapping, the testing of this module shows it is
still possible.

Andrew Bartlett
(This used to be commit a10d255)
  • Loading branch information
abartlet authored and metze-samba committed Dec 21, 2007
1 parent 3e0efe2 commit 58f9b57
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 135 deletions.
123 changes: 0 additions & 123 deletions testdata/samba3/provision_samba3sam.ldif
Original file line number Diff line number Diff line change
Expand Up @@ -75,127 +75,4 @@ isSynchronized: TRUE
vendorName: Samba Team (http://samba.org)
vendorVersion: ${VERSION}

dn: CN=Templates
objectClass: top
objectClass: container
cn: Templates
description: Container for SAM account templates
instanceType: 4
showInAdvancedViewOnly: TRUE
systemFlags: 2348810240
objectCategory: CN=Container,CN=Schema,CN=Configuration,${BASEDN}
isCriticalSystemObject: TRUE

###
# note! the template users must not match normal searches. Be careful
# with what classes you put them in
###

dn: CN=TemplateUser,CN=Templates
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: Template
objectClass: userTemplate
cn: TemplateUser
instanceType: 4
userAccountControl: 514
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 0
lastLogoff: 0
lastLogon: 0
pwdLastSet: 0
primaryGroupID: 513
accountExpires: -1
logonCount: 0
sAMAccountType: 805306368
objectCategory: CN=Person,CN=Schema,CN=Configuration,${BASEDN}

dn: CN=TemplateComputer,CN=Templates
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: Template
objectClass: userTemplate
cn: TemplateComputer
instanceType: 4
userAccountControl: 4098
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 0
lastLogoff: 0
lastLogon: 0
pwdLastSet: 0
primaryGroupID: 513
accountExpires: -1
logonCount: 0
sAMAccountType: 805306369
objectCategory: CN=Computer,CN=Schema,CN=Configuration,${BASEDN}

dn: CN=TemplateTrustingDomain,CN=Templates
objectClass: top
objectClass: Template
objectClass: userTemplate
cn: TemplateTrustingDomain
instanceType: 4
userAccountControl: 2080
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 0
lastLogoff: 0
lastLogon: 0
primaryGroupID: 513
accountExpires: -1
logonCount: 0
sAMAccountType: 805306370

dn: CN=TemplateGroup,CN=Templates
objectClass: top
objectClass: Template
objectClass: groupTemplate
cn: TemplateGroup
instanceType: 4
groupType: -2147483646
sAMAccountType: 268435456
objectCategory: CN=Group,CN=Schema,CN=Configuration,${BASEDN}

# Currently this isn't used, we don't have a way to detect it different from an incoming alias
#
# dn: CN=TemplateAlias,CN=Templates
# objectClass: top
# objectClass: Template
# objectClass: aliasTemplate
# cn: TemplateAlias
# instanceType: 4
# groupType: -2147483644
# sAMAccountType: 268435456

dn: CN=TemplateForeignSecurityPrincipal,CN=Templates
objectClass: top
objectClass: Template
objectClass: foreignSecurityPrincipalTemplate
cn: TemplateForeignSecurityPrincipal
instanceType: 4
showInAdvancedViewOnly: TRUE
objectCategory: CN=Foreign-Security-Principal,CN=Schema,CN=Configuration,${BASEDN}

dn: CN=TemplateSecret,CN=Templates
objectClass: top
objectClass: leaf
objectClass: Template
objectClass: secretTemplate
cn: TemplateSecret
instanceType: 4

dn: CN=TemplateTrustedDomain,CN=Templates
objectClass: top
objectClass: leaf
objectClass: Template
objectClass: trustedDomainTemplate
cn: TemplateTrustedDomain
instanceType: 4

54 changes: 42 additions & 12 deletions testprogs/ejs/samba3sam.js
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,20 @@ function test_map_search(ldb, s3, s4)
var dn;
var attrs;

/* Add a set of split records */

var ldif = "
dn: " + "sambaDomainName=TESTS," + s3.BASEDN + "
objectclass: sambaDomain
objectclass: top
sambaSID: S-1-5-21-4231626423-2410014848-2360679739
sambaNextRid: 2000
sambaDomainName: TESTS"
ldif = substitute_var(ldif, s3);
assert(ldif != undefined);
var ok = s3.db.add(ldif);
assert(ok.error == 0);

printf("Add a set of split records");
var ldif = "
dn: " + s4.dn("cn=X") + "
objectClass: user
Expand Down Expand Up @@ -297,6 +310,7 @@ nextRid: y
lastLogon: z
description: y
";

ldif = substitute_var(ldif, s4);
assert(ldif != undefined);
var ok = ldb.add(ldif);
Expand All @@ -305,7 +319,8 @@ description: y
assert(ok.error == 0);
}

/* Add a set of remote records */
println("Add a set of remote records");

var ldif = "
dn: " + s3.dn("cn=A") + "
objectClass: posixAccount
Expand Down Expand Up @@ -429,7 +444,7 @@ description: y
*/
res = ldb.search("(objectSid=*)", NULL, ldb. SCOPE_DEFAULT, attrs);
assert(res.error == 0);
assert(res.msgs.length == 2);
assert(res.msgs.length == 3);
assert(res.msgs[0].dn == s4.dn("cn=X"));
assert(res.msgs[0].dnsHostName == "x");
assert(res.msgs[0].lastLogon == "x");
Expand Down Expand Up @@ -610,7 +625,7 @@ description: y
attrs = new Array("dnsHostName", "lastLogon");
res = ldb.search("(!(revision=x))", NULL, ldb.SCOPE_DEFAULT, attrs);
assert(res.error == 0);
assert(res.msgs.length == 4);
assert(res.msgs.length == 5);
assert(res.msgs[0].dn == s4.dn("cn=B"));
assert(res.msgs[0].dnsHostName == undefined);
assert(res.msgs[0].lastLogon == "y");
Expand All @@ -628,7 +643,7 @@ description: y
attrs = new Array("dnsHostName", "lastLogon");
res = ldb.search("(!(description=x))", NULL, ldb.SCOPE_DEFAULT, attrs);
assert(res.error == 0);
assert(res.msgs.length == 2);
assert(res.msgs.length == 3);
assert(res.msgs[0].dn == s4.dn("cn=Z"));
assert(res.msgs[0].dnsHostName == "z");
assert(res.msgs[0].lastLogon == "z");
Expand All @@ -640,7 +655,7 @@ description: y
attrs = new Array("dnsHostName", "lastLogon");
res = ldb.search("(!(&(codePage=x)(revision=x)))", NULL, ldb.SCOPE_DEFAULT, attrs);
assert(res.error == 0);
assert(res.msgs.length == 4);
assert(res.msgs.length == 5);
assert(res.msgs[0].dn == s4.dn("cn=B"));
assert(res.msgs[0].dnsHostName == undefined);
assert(res.msgs[0].lastLogon == "y");
Expand All @@ -658,7 +673,7 @@ description: y
attrs = new Array("dnsHostName", "lastLogon");
res = ldb.search("(!(&(lastLogon=x)(description=x)))", NULL, ldb.SCOPE_DEFAULT, attrs);
assert(res.error == 0);
assert(res.msgs.length == 4);
assert(res.msgs.length == 5);
assert(res.msgs[0].dn == s4.dn("cn=Y"));
assert(res.msgs[0].dnsHostName == "y");
assert(res.msgs[0].lastLogon == "y");
Expand All @@ -676,7 +691,7 @@ description: y
attrs = new Array("dnsHostName", "lastLogon");
res = ldb.search("(!(&(codePage=x)(description=x)))", NULL, ldb.SCOPE_DEFAULT, attrs);
assert(res.error == 0);
assert(res.msgs.length == 4);
assert(res.msgs.length == 5);
assert(res.msgs[0].dn == s4.dn("cn=B"));
assert(res.msgs[0].dnsHostName == undefined);
assert(res.msgs[0].lastLogon == "y");
Expand Down Expand Up @@ -711,7 +726,7 @@ description: y
attrs = new Array("dnsHostName", "lastLogon");
res = ldb.search("(!(|(badPwdCount=x)(lastLogon=x)))", NULL, ldb.SCOPE_DEFAULT, attrs);
assert(res.error == 0);
assert(res.msgs.length == 3);
assert(res.msgs.length == 4);
assert(res.msgs[0].dn == s4.dn("cn=Y"));
assert(res.msgs[0].dnsHostName == "y");
assert(res.msgs[0].lastLogon == "y");
Expand All @@ -726,7 +741,7 @@ description: y
attrs = new Array("dnsHostName", "lastLogon");
res = ldb.search("(!(|(revision=x)(lastLogon=y)))", NULL, ldb.SCOPE_DEFAULT, attrs);
assert(res.error == 0);
assert(res.msgs.length == 3);
assert(res.msgs.length == 4);
assert(res.msgs[0].dn == s4.dn("cn=A"));
assert(res.msgs[0].dnsHostName == undefined);
assert(res.msgs[0].lastLogon == "x");
Expand All @@ -737,11 +752,11 @@ description: y
assert(res.msgs[2].dnsHostName == undefined);
assert(res.msgs[2].lastLogon == "z");

/* Search by complex parse tree */
println("Search by complex parse tree");
attrs = new Array("dnsHostName", "lastLogon");
res = ldb.search("(|(&(revision=x)(dnsHostName=x))(!(&(description=x)(nextRid=y)))(badPwdCount=y))", NULL, ldb.SCOPE_DEFAULT, attrs);
assert(res.error == 0);
assert(res.msgs.length == 5);
assert(res.msgs.length == 6);
assert(res.msgs[0].dn == s4.dn("cn=B"));
assert(res.msgs[0].dnsHostName == undefined);
assert(res.msgs[0].lastLogon == "y");
Expand Down Expand Up @@ -1174,18 +1189,28 @@ samba3.BASEDN = "cn=Samba3Sam";
samba3.db = ldb_init();
samba3.dn = make_dn;

var templates = new Object("templates partition info");
templates.file = prefix + "/" + "templates.ldb";
templates.url = "tdb://" + templates.file;
templates.BASEDN = "cn=templates";
templates.db = ldb_init();

sys.unlink(ldbfile);
sys.unlink(samba3.file);
sys.unlink(templates.file);
sys.unlink(samba4.file);

var ok = ldb.connect(ldburl);
assert(ok);
var ok = samba3.db.connect(samba3.url);
assert(ok);
var ok = templates.db.connect(templates.url);
assert(ok);
var ok = samba4.db.connect(samba4.url);
assert(ok);

setup_data(samba3, sys.file_load(datadir + "/" + "samba3.ldif"));
setup_data(templates, sys.file_load(datadir + "/" + "provision_samba3sam_templates.ldif"));
setup_modules(ldb, samba3, samba4, sys.file_load(datadir + "/" + "provision_samba3sam.ldif"));

ldb = ldb_init();
Expand All @@ -1197,6 +1222,7 @@ test_s3sam_modify(ldb, samba3);

sys.unlink(ldbfile);
sys.unlink(samba3.file);
sys.unlink(templates.file);
sys.unlink(samba4.file);

ldb = ldb_init();
Expand All @@ -1205,10 +1231,14 @@ assert(ok);
samba3.db = ldb_init();
var ok = samba3.db.connect(samba3.url);
assert(ok);
templates.db = ldb_init();
var ok = templates.db.connect(templates.url);
assert(ok);
samba4.db = ldb_init();
var ok = samba4.db.connect(samba4.url);
assert(ok);

setup_data(templates, sys.file_load(datadir + "/" + "provision_samba3sam_templates.ldif"));
setup_modules(ldb, samba3, samba4, sys.file_load(datadir + "provision_samba3sam.ldif"));

ldb = ldb_init();
Expand Down

0 comments on commit 58f9b57

Please sign in to comment.