r9834: More tests for the upgrade from Samba3
authorJelmer Vernooij <jelmer@samba.org>
Wed, 31 Aug 2005 16:51:09 +0000 (16:51 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:36:17 +0000 (13:36 -0500)
(This used to be commit d2db164d6f674cada470e871c558c75f98244141)

source4/script/tests/test_s3upgrade.sh
source4/scripting/ejs/smbcalls_samba3.c
source4/scripting/libjs/upgrade.js
source4/setup/upgrade
testdata/samba3/verify [new file with mode: 0755]

index 50aa52f..e4e5d82 100755 (executable)
@@ -7,11 +7,8 @@ then
        exit 1
 fi
 
-DATADIR=$PREFIX/upgrade
+mkdir -p $PREFIX
+rm -f $PREFIX/*
 
-mkdir -p $DATADIR
-rm -f $DATADIR/*
-
-bin/smbscript setup/upgrade --targetdir=$DATADIR ../testdata/samba3 ../testdata/samba3/smb.conf
-
-# FIXME: Do some sanity checks on the output files
+bin/smbscript ../testdata/samba3/verify ../testdata/samba3
+bin/smbscript setup/upgrade --verify --targetdir=$PREFIX ../testdata/samba3 ../testdata/samba3/smb.conf
index 0d54d54..0e4743e 100644 (file)
@@ -55,6 +55,10 @@ static struct MprVar mprRegistry(struct samba3_regdb *reg)
                mprAddArray(&ks, i, k);
        }
 
+       if (i == 0) {
+               mprSetVar(&ks, "length", mprCreateIntegerVar(i));
+       }
+
        mprSetVar(&mpv, "keys", ks);
 
        return mpv;
@@ -104,6 +108,11 @@ static struct MprVar mprIdmapDb(struct samba3_idmapdb *db)
                mprAddArray(&mps, i, mp);
        }
 
+       if (i == 0) {
+               mprSetVar(&mpv, "length", mprCreateIntegerVar(i));
+       }
+
+
        mprSetVar(&mpv, "mappings", mps);
 
        return mpv;
@@ -131,6 +140,11 @@ static struct MprVar mprGroupMappings(struct samba3_groupdb *db)
                mprAddArray(&mpv, i, g);
        }
 
+       if (i == 0) {
+               mprSetVar(&mpv, "length", mprCreateIntegerVar(i));
+       }
+
+
        return mpv;
 }
 
@@ -158,6 +172,10 @@ static struct MprVar mprAliases(struct samba3_groupdb *db)
                mprSetVar(&a, "members", am);
        }
 
+       if (i == 0) {
+               mprSetVar(&mpv, "length", mprCreateIntegerVar(i));
+       }
+
        return mpv;
 }
 
@@ -219,6 +237,10 @@ static struct MprVar mprSecrets(struct samba3_secrets *sec)
                mprAddArray(&es, i, mprDomainSecrets(&sec->domains[i]));
        }
 
+       if (i == 0) {
+               mprSetVar(&es, "length", mprCreateIntegerVar(i));
+       }
+
        mprSetVar(&mpv, "domains", es);
 
        es = mprObject("trusted_domains");
@@ -247,6 +269,10 @@ static struct MprVar mprSecrets(struct samba3_secrets *sec)
                mprAddArray(&es, i, e);
        }
 
+       if (i == 0) {
+               mprSetVar(&es, "length", mprCreateIntegerVar(i));
+       }
+
        mprSetVar(&mpv, "trusted_domains", es);
        
        es = mprObject("array");
@@ -279,6 +305,10 @@ static struct MprVar mprSecrets(struct samba3_secrets *sec)
                mprAddArray(&es, i, e);
        }
 
+       if (i == 0) {
+               mprSetVar(&es, "length", mprCreateIntegerVar(i));
+       }
+
        mprSetVar(&mpv, "afs_keyfiles", es);
 
        mprSetVar(&mpv, "ipc_cred", mprCredentials(sec->ipc_cred));
@@ -301,6 +331,10 @@ static struct MprVar mprShares(struct samba3 *samba3)
                mprAddArray(&mpv, i, s);
        }
 
+       if (i == 0) {
+               mprSetVar(&mpv, "length", mprCreateIntegerVar(i));
+       }
+
        return mpv;
 }
 
@@ -348,6 +382,10 @@ static struct MprVar mprSamAccounts(struct samba3 *samba3)
                mprAddArray(&mpv, i, m);
        }
 
+       if (i == 0) {
+               mprSetVar(&mpv, "length", mprCreateIntegerVar(i));
+       }
+
        return mpv;
 }
 
@@ -375,6 +413,10 @@ static struct MprVar mprWinsEntries(struct samba3 *samba3)
                mprAddArray(&mpv, i, w);
        }
 
+       if (i == 0) {
+               mprSetVar(&mpv, "length", mprCreateIntegerVar(i));
+       }
+
        return mpv;
 }
 
index e78865f..59e433b 100644 (file)
@@ -448,26 +448,26 @@ dn: @MAP=samba3sam
 
        message("Importing users\n");
        for (var i in samba3.samaccounts) {
-               message("... " + samba3.samaccounts[i].username);
+               var msg = "... " + samba3.samaccounts[i].username;
                var ldif = upgrade_sam_account(samba3.samaccounts[i],subobj.BASEDN);
                ok = samdb.add(ldif);
                if (!ok) { 
-                       message("... error: " + samdb.errstring()); 
+                       msg = msg + "... error: " + samdb.errstring();
                        ret = ret + 1; 
                }
-               message("\n");
+               message(msg + "\n");
        }
 
        message("Importing groups\n");
        for (var i in samba3.groupmappings) {
-               message("... " + samba3.groupmappings[i].nt_name);
+               var msg = "... " + samba3.groupmappings[i].nt_name;
                var ldif = upgrade_sam_group(samba3.groupmappings[i],subobj.BASEDN);
                ok = samdb.add(ldif);
                if (!ok) { 
-                       message("... error: " + samdb.errstring()); 
+                       msg = msg + "... error: " + samdb.errstring();
                        ret = ret + 1; 
                }
-               message("\n");
+               message(msg + "\n");
        }
 
        message("Importing registry data\n");
@@ -480,13 +480,13 @@ dn: @MAP=samba3sam
                assert(ok);
                var ldif = upgrade_registry(samba3.registry, hn, regdb);
                for (var j in ldif) {
-                       message("... ... " + j);
+                       var msg = "... ... " + j;
                        ok = regdb.add(ldif[j]);
                        if (!ok) { 
-                               message("... error: " + regdb.errstring()); 
+                               msg = msg + "... error: " + regdb.errstring();
                                ret = ret + 1; 
                        }
-                       message("\n");
+                       message(msg + "\n");
                }
        }
 
@@ -502,3 +502,15 @@ dn: @MAP=samba3sam
 
        return ret;
 }
+
+function upgrade_verify(subobj, samba3,paths,message)
+{
+       message("Verifying account policies\n");
+       var samldb = ldb_init();
+       var ne = 0;
+
+       var ok = samldb.connect(paths.samdb);
+       assert(ok);
+       
+       // FIXME
+}
index 331892c..8dc10ca 100755 (executable)
@@ -10,6 +10,7 @@ options = GetOptions(ARGV,
                "POPT_AUTOHELP",
                "POPT_COMMON_SAMBA",
                "POPT_COMMON_VERSION",
+               'verify',
                'targetdir=s',
                'quiet', 'blank');
 
@@ -92,4 +93,10 @@ if (ret > 0) {
 } else {
        message("All OK\n");
 }
-return 0;
+
+if (options.verify != undefined) {
+       message("Verifying...\n");
+       ret = upgrade_verify(subobj, samba3,paths,message);
+}
+
+return ret;
diff --git a/testdata/samba3/verify b/testdata/samba3/verify
new file mode 100755 (executable)
index 0000000..ed6ed95
--- /dev/null
@@ -0,0 +1,51 @@
+#!/usr/bin/env smbscript
+/* Verifies that the data present in this directory
+ Can be read correctly by Samba4. Do not update 
+ without changing the corresponding TDB file!
+ Written by Jelmer Vernooij, 2005.
+ */
+
+libinclude("base.js");
+
+var path = substr(ARGV[0], 0, -strlen("verify"));
+printf("Reading from %s\n", path);
+
+var s = samba3_read(path, path+"smb.conf");
+assert(s != undefined);
+
+// smb.conf checks
+assert(s.configuration.get("passdb backend") != undefined);
+
+var data = s.configuration.data();
+assert(data != undefined);
+var global = data["global"];
+assert(global != undefined);
+assert(global["passdb backend"] == s.configuration.get("passdb backend"));
+assert(global["passdb backend"] != undefined);
+
+println("smb.conf ok");
+
+assert(s.winsentries.length == 22);
+assert(s.samaccounts.length == 3);
+assert(s.shares.length == 0);
+assert(s.registry.keys.length == 28);
+assert(s.groupmappings.length == 13);
+assert(s.aliases.length == 0);
+assert(s.idmapdb.mappings.length == 4);
+
+println("database entry count correct");
+
+// account policies
+assert(s.policy.min_password_length == 5);
+assert(s.policy.minimum_password_age == 0);
+assert(s.policy.maximum_password_age == 999999999);
+assert(s.policy.refuse_machine_password_change == 0);
+assert(s.policy.reset_count_minutes == 0);
+assert(s.policy.disconnect_time == -1);
+assert(s.policy.user_must_logon_to_change_password == 0);
+assert(s.policy.password_history == 0);
+assert(s.policy.lockout_duration == 0);
+assert(s.policy.bad_lockout_minutes == 0);
+
+println("account policies ok");
+