#!/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.
 */

var sys;
var options = GetOptions(ARGV, "POPT_AUTOHELP", "POPT_COMMON_SAMBA");
if (options == undefined) {
	println("Failed to parse options");
	return -1;
}

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");

exit(0);