#!/usr/bin/perl -w
# This script (sophomorix-test-2) is maintained by Rüdiger Beck
# It is Free Software (License GPLv3)
# If you find errors, contact the author
# jeffbeck@web.de  or  jeffbeck@linuxmuster.net

# device tests
# test 1 to 2:
# OK: * add 2 computer in 2 rooms in 2 schools and 1 printer (no examaccount)
# OK: * rename a computer in the same room
# OK: * change ip of computer
# OK: * update mac adress -> no action so far



# * add another computer and another printer in each room
# * move a computer, printer in another room
# * move a computer, printer in another school (filename must change)

# * rename computer AND move it to another room, another school
# * make computer to printer and back


# modules
use strict;
use Getopt::Long;
use Net::DNS;
Getopt::Long::Configure ("bundling");
use Sophomorix::SophomorixBase qw(
                                 print_line
                                 print_title
                                 check_options
                                 get_passwd_charlist
                                 get_plain_password
                                 );
use Sophomorix::SophomorixSambaAD qw(
                                 AD_school_create
                                 AD_bind_admin
                                 AD_unbind_admin
                                 AD_dns_get
                                 AD_user_create
                                 AD_group_create
                                 AD_group_addmember
                                 AD_user_kill
                                 AD_computer_kill
                                 AD_object_search
                                 AD_get_name_tokened
                                 AD_login_test
                                    );
use Sophomorix::SophomorixTest qw(
                                 AD_object_nonexist
                                 AD_test_object
                                 AD_test_dns
                                 AD_test_nondns
                                 AD_computer_count
                                 AD_devicegroup_count
                                 AD_examaccount_count
                                 AD_room_count
                                 AD_dnsnodes_count_lookup
                                 AD_dnsnodes_count_reverse
                                 AD_dnszones_count
                                 run_command
                                 directory_tree_test
                                 start_fs_test
                                 end_fs_test
                                 );

$Conf::log_level=1;
my $help=0;

my $copy_devfile_1=0;
my $copy_devfile_2=0;
my $copy_devfile_3=0;
my $copy_devfile_4=0;
my $copy_devfile_5=0;
my $test_ws_1=0;
my $test_ws_2=0;
my $test_ws_3=0;
my $test_ws_4=0;
my $test_ws_5=0;

my $full=0;

my $room="";
my $computer="";
my $role="";
# calculated

my $login="";
my $plain_password;
my $ws_count=0;
my $birthdate="1970-01-01";
my $all_options="";
my $json=0;
my $ntacl=1;
my $nontacl=0;

my %fs_test_result=();

# dns
my $res   = Net::DNS::Resolver->new;

my $testopt=GetOptions(
           "help|h" => \$help,
           "verbose|v+" => \$Conf::log_level,
           "json|j+" => \$json,
           "nontacl|n" => \$nontacl,
           "copy-devfile-1" => \$copy_devfile_1,
           "test-dev-1" => \$test_ws_1,
           "copy-devfile-2" => \$copy_devfile_2,
           "test-dev-2" => \$test_ws_2,
           "copy-devfile-3" => \$copy_devfile_3,
           "test-dev-3" => \$test_ws_3,
           "copy-devfile-4" => \$copy_devfile_4,
           "test-dev-4" => \$test_ws_4,
           "copy-devfile-5" => \$copy_devfile_5,
           "test-dev-5" => \$test_ws_5,
           "full|f" => \$full,
  );


# Prüfen, ob Optionen erkannt wurden, sonst Abbruch
&check_options($testopt);

if ($nontacl==1){
    $ntacl=0;
}

if ($Conf::log_level==1){
    $all_options="";
} elsif ($Conf::log_level==2){
    $all_options="-v";
} elsif ($Conf::log_level==3){
    $all_options="-vv";
}

if ($json==0){
    # nothing to do
} elsif ($json==1){
    $all_options=$all_options." -j";
} elsif ($json==2){
    $all_options=$all_options." -jj";
} elsif ($json==3){
    $all_options=$all_options." -jjj";
} 


my ($ldap,$root_dse) = &AD_bind_admin();
my $root_dns=&AD_dns_get($root_dse);


# --help
if ($help==1) {
   # Scriptname ermitteln
   my @list = split(/\//,$0);
   my $scriptname = pop @list;
   # Befehlsbeschreibung
   print('
sophomorix-test-2 tests the addition of DNSNodes and computer accounts.

Options
  -h  / --help

  --full  (run all tests automatically)

Step by step Test:
  Copy devices.csv/classrooms file (Step 1):
      sophomorix-test-2 --copy-devfile-1
  Import the file:
      sophomorix-device --sync
  Run the tests:
      sophomorix-test-2 --test-dev-1

  Copy devices.csv/classrooms file (Step 2):
      sophomorix-test-2 --copy-devfile-2
  Import the file:
      sophomorix-device --sync
  Run the tests:
      sophomorix-test-2 --test-dev-2

Step 3-4 are missing

  Copy EMPTY devices.csv/classrooms file (Step 5):
      sophomorix-test-2 --copy-devfile-5
  Import the file:
      sophomorix-device --sync
  Run the tests:
      sophomorix-test-2 --test-dev-5
');
   print "\n";
   exit;
}




############################################################
# Check preliminaries
############################################################
# --full
if ($full==1){
    $copy_devfile_1=1;
    $copy_devfile_2=1;
    $copy_devfile_5=1;
    $test_ws_1=1;
    $test_ws_2=1;
    $test_ws_5=1;
}

my $host_workstation=$DevelConf::path_conf_sophomorix."/".$DevelConf::name_default_school."/devices.csv";
my $host_classroom=$DevelConf::path_conf_sophomorix."/".$DevelConf::name_default_school."/classrooms";
my $host_workstation_bsz=$DevelConf::path_conf_sophomorix."/bsz/bsz.devices.csv";
my $host_classroom_bsz=$DevelConf::path_conf_sophomorix."/bsz/bsz.classrooms";

my $testdata="/usr/share/sophomorix-developer/testdata";
my $wsfile_1=$testdata."/devices.csv-1";
my $wsfile_2=$testdata."/devices.csv-2";
my $wsfile_3=$testdata."/devices.csv-3";
my $wsfile_4=$testdata."/devices.csv-4";
my $wsfile_5=$testdata."/devices.csv-5";
my $wsfile_1_bsz=$testdata."/bsz.devices.csv-1";
my $wsfile_2_bsz=$testdata."/bsz.devices.csv-2";
my $wsfile_3_bsz=$testdata."/bsz.devices.csv-3";
my $wsfile_4_bsz=$testdata."/bsz.devices.csv-4";
my $wsfile_5_bsz=$testdata."/bsz.devices.csv-5";

my $crfile_1=$testdata."/classrooms-1";
my $crfile_2=$testdata."/classrooms-2";
my $crfile_3=$testdata."/classrooms-3";
my $crfile_4=$testdata."/classrooms-4";
my $crfile_5=$testdata."/classrooms-5";
my $crfile_1_bsz=$testdata."/bsz.classrooms-1";
my $crfile_2_bsz=$testdata."/bsz.classrooms-2";
my $crfile_3_bsz=$testdata."/bsz.classrooms-3";
my $crfile_4_bsz=$testdata."/bsz.classrooms-4";
my $crfile_5_bsz=$testdata."/bsz.classrooms-5";

my @password_chars=&get_passwd_charlist();
my $room_token;
my $login_token;
my $examaccount_token;

############################################################
# Step 1
############################################################

# --copy-devfile-1
if ($copy_devfile_1==1){
    # copy devices.csv-1
    &run_command("cp -v $wsfile_1 $host_workstation");
    &run_command("cp -v $crfile_1 $host_classroom");
    &run_command("cp -v $wsfile_1_bsz $host_workstation_bsz");
    &run_command("cp -v $crfile_1_bsz $host_classroom_bsz");
}

if ($full==1){
    &run_command("sophomorix-device --sync $all_options");
}

if ($test_ws_1==1){
    ############################################################
    # devices.csv
    ############################################################
    # # j1008p01
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1008p01,OU=j1008,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"j1008p01",
    #                sAMAccountname=>"j1008p01",
    #                sn=>"Account",
    #                sophomorixAdminClass => "j1008",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "---",
    #                sophomorixSchoolname => "default-school",
    #                sophomorixAdminFile => "devices.csv",
    #                memberOf => "j1008",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1008,OU=j1008,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"j1008",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "default-school",
    #                memberOf => "examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=examaccounts,OU=examaccounts,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"examaccounts",
    #                memberOf => "all-examaccounts",
    #               });


    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=j1008,OU=j1008,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"j1008",
                   sophomorixStatus=>"P",
                   description=>"j1008 in default-school",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"172.16.0.50|172.16.0.52|172.16.0.30",
                   sophomorixRoomMACs=>"94:DE:80:B1:5B:2E|94:DE:80:B1:58:2A|00:01:E6:3E:1B:BA",
                   sophomorixRoomComputers=>"j1008p01|j1008p02|laser1008",
                   sophomorixSchoolname => "default-school",
                   member => "J1008P01|J1008P02|LASER1008",
                  });

    # J1008P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=J1008P01,OU=j1008,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer J1008P01",
                   name=>"J1008P01",
                   sophomorixDnsNodename=>"bsz-j1008p01",
                   sophomorixDnsNodename=>"j1008p01",
                   cn=>"J1008P01",
                   sAMAccountname=>"J1008P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"172.16.0.50",
                   sophomorixComputerMAC=>"94:DE:80:B1:5B:2E",
                   sophomorixComputerRoom=>"j1008",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "m13",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "J1008P01.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/J1008P01,".
                                           "HOST/J1008P01.".$root_dns.",".
                                           "RestrictedKrbHost/J1008P01,".
                                           "RestrictedKrbHost/J1008P01.".$root_dns.",",
                  });

    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"j1008p01","172.16.0.50");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=j1008p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"j1008p01",
                     cn=>"j1008p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "172.16.0.50",
                     sophomorixDnsNodename => "j1008p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=50,DC=0.16.172.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"50",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "172.16.0.50",
                     sophomorixDnsNodename => "j1008p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=0.16.172.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"0.16.172.in-addr.arpa",
                     cn=>"0.16.172.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # j1008p02
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1008p02,OU=j1008,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"j1008p02",
    #                sAMAccountname=>"j1008p02",
    #                sn=>"Account",
    #                sophomorixAdminClass => "j1008",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "---",
    #                sophomorixSchoolname => "default-school",
    #                sophomorixAdminFile => "devices.csv",
    #                memberOf => "j1008",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1008,OU=j1008,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"j1008",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "default-school",
    #                memberOf => "examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=examaccounts,OU=examaccounts,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"examaccounts",
    #                memberOf => "all-examaccounts",
    #               });

    # J1008P02$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=J1008P02,OU=j1008,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer J1008P02",
                   name=>"J1008P02",
                   sophomorixDnsNodename=>"j1008p02",
                   cn=>"J1008P02",
                   sAMAccountname=>"J1008P02\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"172.16.0.52",
                   sophomorixComputerMAC=>"94:DE:80:B1:58:2A",
                   sophomorixComputerRoom=>"j1008",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "m13",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "J1008P02.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/J1008P02,".
                                           "HOST/J1008P02.".$root_dns.",".
                                           "RestrictedKrbHost/J1008P02,".
                                           "RestrictedKrbHost/J1008P02.".$root_dns.",",
                  });

    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"j1008p02","172.16.0.52");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=j1008p02,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"j1008p02",
                     cn=>"j1008p02",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "172.16.0.52",
                     sophomorixDnsNodename => "j1008p02",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=52,DC=0.16.172.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"52",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "172.16.0.52",
                     sophomorixDnsNodename => "j1008p02",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=0.16.172.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"0.16.172.in-addr.arpa",
                     cn=>"0.16.172.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # laser1008
    &AD_object_nonexist($ldap,$root_dse,"examaccount","laser1008");

    # LASER1008$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=LASER1008,OU=j1008,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer LASER1008",
                   name=>"LASER1008",
                   sophomorixDnsNodename=>"laser1008",
                   cn=>"LASER1008",
                   sAMAccountname=>"LASER1008\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "printer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"172.16.0.30",
                   sophomorixComputerMAC=>"00:01:E6:3E:1B:BA",
                   sophomorixComputerRoom=>"j1008",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "xx",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "LASER1008.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/LASER1008,".
                                           "HOST/LASER1008.".$root_dns.",".
                                           "RestrictedKrbHost/LASER1008,".
                                           "RestrictedKrbHost/LASER1008.".$root_dns.",",
                  });

    # laser1008 host_group
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=laser1008,OU=printer-groups,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   description=>"Host group for LASER1008\$",
                   name=>"laser1008",
                   cn=>"laser1008",
                   sAMAccountname=>"laser1008",
                   sophomorixType => "printer",
                   sophomorixStatus=>"P",
                   sophomorixSchoolname => "default-school",
                   member => "",
                  });

    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"laser1008","172.16.0.30");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=laser1008,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"laser1008",
                     cn=>"laser1008",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "172.16.0.30",
                     sophomorixDnsNodename => "laser1008",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=30,DC=0.16.172.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"30",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "172.16.0.30",
                     sophomorixDnsNodename => "laser1008",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=0.16.172.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"0.16.172.in-addr.arpa",
                     cn=>"0.16.172.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });
    ############################################################
    # # j1010p01
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1010p01,OU=j1010,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"j1010p01",
    #                sAMAccountname=>"j1010p01",
    #                sn=>"Account",
    #                sophomorixAdminClass => "j1010",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "---",
    #                sophomorixSchoolname => "default-school",
    #                sophomorixAdminFile => "devices.csv",
    #                memberOf => "j1010",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1010,OU=j1010,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"j1010",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "default-school",
    #                memberOf => "examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=examaccounts,OU=examaccounts,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"examaccounts",
    #                memberOf => "all-examaccounts",
    #               });


    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=j1010,OU=j1010,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"j1010",
                   sophomorixStatus=>"P",
                   description=>"j1010 in default-school",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"10.170.210.1|10.170.210.2|10.170.210.30",
                   sophomorixRoomMACs=>"94:DE:80:B1:AF:A6|94:DE:80:B1:5B:6B|08:2E:5F:BB:57:DB",
                   sophomorixRoomComputers=>"j1010p01|j1010p02|laser1010",
                   sophomorixSchoolname => "default-school",
                   member => "J1010P01|J1010P02|LASER1010",
                  });

    # J1010P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=J1010P01,OU=j1010,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer J1010P01",
                   name=>"J1010P01",
                   sophomorixDnsNodename=>"j1010p01",
                   cn=>"J1010P01",
                   sAMAccountname=>"J1010P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.170.210.1",
                   sophomorixComputerMAC=>"94:DE:80:B1:AF:A6",
                   sophomorixComputerRoom=>"j1010",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "m13-t",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "J1010P01.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/J1010P01,".
                                           "HOST/J1010P01.".$root_dns.",".
                                           "RestrictedKrbHost/J1010P01,".
                                           "RestrictedKrbHost/J1010P01.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"j1010p01","10.170.210.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=j1010p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"j1010p01",
                     cn=>"j1010p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.210.1",
                     sophomorixDnsNodename => "j1010p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=210.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.210.1",
                     sophomorixDnsNodename => "j1010p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.170.10.in-addr.arpa",
                     cn=>"210.170.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });


    ############################################################
    # # j1010p02
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1010p02,OU=j1010,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"j1010p02",
    #                sAMAccountname=>"j1010p02",
    #                sn=>"Account",
    #                sophomorixAdminClass => "j1010",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "---",
    #                sophomorixSchoolname => "default-school",
    #                sophomorixAdminFile => "devices.csv",
    #                memberOf => "j1010",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1010,OU=j1010,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"j1010",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "default-school",
    #                memberOf => "examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=examaccounts,OU=examaccounts,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"examaccounts",
    #                memberOf => "all-examaccounts",
    #               });

    # J1010P02$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=J1010P02,OU=j1010,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer J1010P02",
                   name=>"J1010P02",
                   sophomorixDnsNodename=>"j1010p02",
                   cn=>"J1010P02",
                   sAMAccountname=>"J1010P02\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.170.210.2",
                   sophomorixComputerMAC=>"94:DE:80:B1:5B:6B",
                   sophomorixComputerRoom=>"j1010",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "m13-t",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "J1010P02.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/J1010P02,".
                                           "HOST/J1010P02.".$root_dns.",".
                                           "RestrictedKrbHost/J1010P02,".
                                           "RestrictedKrbHost/J1010P02.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"j1010p02","10.170.210.2");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=j1010p02,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"j1010p02",
                     cn=>"j1010p02",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.210.2",
                     sophomorixDnsNodename => "j1010p02",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=2,DC=210.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"2",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.210.2",
                     sophomorixDnsNodename => "j1010p02",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.170.10.in-addr.arpa",
                     cn=>"210.170.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # laser1010
    &AD_object_nonexist($ldap,$root_dse,"examaccount","laser1010");

    # LASER1010$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=LASER1010,OU=j1010,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer LASER1010",
                   name=>"LASER1010",
                   sophomorixDnsNodename=>"laser1010",
                   cn=>"LASER1010",
                   sAMAccountname=>"LASER1010\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "printer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.170.210.30",
                   sophomorixComputerMAC=>"08:2E:5F:BB:57:DB",
                   sophomorixComputerRoom=>"j1010",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "xx",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "LASER1010.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/LASER1010,".
                                           "HOST/LASER1010.".$root_dns.",".
                                           "RestrictedKrbHost/LASER1010,".
                                           "RestrictedKrbHost/LASER1010.".$root_dns.",",
                  });
    # laser1010 host_group
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=laser1010,OU=printer-groups,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   description=>"Host group for LASER1010\$",
                   name=>"laser1010",
                   cn=>"laser1010",
                   sAMAccountname=>"laser1010",
                   sophomorixType => "printer",
                   sophomorixStatus=>"P",
                   sophomorixSchoolname => "default-school",
                   member => "",
                  });

    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"laser1010","10.170.210.30");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=laser1010,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"laser1010",
                     cn=>"laser1010",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.210.30",
                     sophomorixDnsNodename => "laser1010",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=30,DC=210.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"30",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.210.30",
                     sophomorixDnsNodename => "laser1010",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.170.10.in-addr.arpa",
                     cn=>"210.170.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # c001p01
    &AD_object_nonexist($ldap,$root_dse,"examaccount","c001p01");

    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=c001,OU=c001,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"c001",
                   sophomorixStatus=>"P",
                   description=>"c001 in default-school",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"10.170.1.1",
                   sophomorixRoomMACs=>"94:DE:80:B1:5B:B8",
                   sophomorixRoomComputers=>"c001p01",
                   sophomorixSchoolname => "default-school",
                   member => "C001P01",
                  });

    # C001P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=C001P01,OU=c001,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer C001P01",
                   name=>"C001P01",
                   sophomorixDnsNodename=>"c001p01",
                   cn=>"C001P01",
                   sAMAccountname=>"C001P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.170.1.1",
                   sophomorixComputerMAC=>"94:DE:80:B1:5B:B8",
                   sophomorixComputerRoom=>"c001",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "m13",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "C001P01.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/C001P01,".
                                           "HOST/C001P01.".$root_dns.",".
                                           "RestrictedKrbHost/C001P01,".
                                           "RestrictedKrbHost/C001P01.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"c001p01","10.170.1.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=c001p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"c001p01",
                     cn=>"c001p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.1.1",
                     sophomorixDnsNodename => "c001p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=1.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.1.1",
                     sophomorixDnsNodename => "c001p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1.170.10.in-addr.arpa",
                     cn=>"1.170.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # c002p01
    &AD_object_nonexist($ldap,$root_dse,"examaccount","c002p01");

    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=c002,OU=c002,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"c002",
                   sophomorixStatus=>"P",
                   description=>"c002 in default-school",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"10.170.2.1",
                   sophomorixRoomMACs=>"94:DE:80:B1:5E:F2",
                   sophomorixRoomComputers=>"c002p01",
                   sophomorixSchoolname => "default-school",
                   member => "C002P01",
                  });

    # C002P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=C002P01,OU=c002,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer C002P01",
                   name=>"C002P01",
                   sophomorixDnsNodename=>"c002p01",
                   cn=>"C002P01",
                   sAMAccountname=>"C002P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.170.2.1",
                   sophomorixComputerMAC=>"94:DE:80:B1:5E:F2",
                   sophomorixComputerRoom=>"c002",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "m13-t",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "C002P01.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/C002P01,".
                                           "HOST/C002P01.".$root_dns.",".
                                           "RestrictedKrbHost/C002P01,".
                                           "RestrictedKrbHost/C002P01.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"c002p01","10.170.2.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=c002p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"c002p01",
                     cn=>"c002p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.2.1",
                     sophomorixDnsNodename => "c002p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=2.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.2.1",
                     sophomorixDnsNodename => "c002p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=2.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"2.170.10.in-addr.arpa",
                     cn=>"2.170.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # switch01
    # test that there is no examaccount
    &AD_object_nonexist($ldap,$root_dse,"examaccount","switch01");
    # test for sophomorixRole iponly that there is no account
    &AD_object_nonexist($ldap,$root_dse,"computer","SWITCH01\$");

    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"switch01","10.10.210.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=switch01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"switch01",
                     cn=>"switch01",
                     sophomorixRole => "switch",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.10.210.1",
                     sophomorixDnsNodename => "switch01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=210.10.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "switch",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.10.210.1",
                     sophomorixDnsNodename => "switch01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.10.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.10.10.in-addr.arpa",
                     cn=>"210.10.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });
    ############################################################
    # switch02
    # test that there is no examaccount
    &AD_object_nonexist($ldap,$root_dse,"examaccount","switch02");
    # test for sophomorixRole iponly that there is no account
    &AD_object_nonexist($ldap,$root_dse,"computer","SWITCH02\$");

    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"switch02","10.10.210.2");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=switch02,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"switch02",
                     cn=>"switch02",
                     sophomorixRole => "switch",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.10.210.2",
                     sophomorixDnsNodename => "switch02",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=2,DC=210.10.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"2",
                     sophomorixRole => "switch",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.10.210.2",
                     sophomorixDnsNodename => "switch02",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.10.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.10.10.in-addr.arpa",
                     cn=>"210.10.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });
    ############################################################
    # bsz.devices.csv
    ############################################################
    # # bsz-j1008p01
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1008p01,OU=j1008,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"bsz-j1008p01",
    #                sAMAccountname=>"bsz-j1008p01",
    #                sn=>"Account",
    #                sophomorixAdminClass => "bsz-j1008",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "bsz",
    #                sophomorixSchoolname => "bsz",
    #                sophomorixAdminFile => "bsz.devices.csv",
    #                memberOf => "bsz-j1008",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1008,OU=j1008,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-j1008",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "bsz",
    #                memberOf => "bsz-examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-examaccounts,OU=examaccounts,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-examaccounts",
    #                memberOf => "all-examaccounts",
    #               });

    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=bsz-j1008,OU=j1008,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"bsz-j1008",
                   sophomorixStatus=>"P",
                   description=>"j1008 in bsz",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"10.171.208.1|10.171.208.2|10.171.208.30",
                   sophomorixRoomMACs=>"95:DE:80:B1:5B:2E|95:DE:80:B1:58:2A|01:01:E6:3E:1B:BA",
                   sophomorixRoomComputers=>"bsz-j1008p01|bsz-j1008p02|bsz-laser1008",
                   sophomorixSchoolname => "bsz",
                   member => "BSZ-J1008P01|BSZ-J1008P02|BSZ-LASER1008",
                  });

    # BSZ-J1008P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-J1008P01,OU=j1008,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-J1008P01",
                   name=>"BSZ-J1008P01",
                   sophomorixDnsNodename=>"bsz-j1008p01",
                   cn=>"BSZ-J1008P01",
                   sAMAccountname=>"BSZ-J1008P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.208.1",
                   sophomorixComputerMAC=>"95:DE:80:B1:5B:2E",
                   sophomorixComputerRoom=>"bsz-j1008",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "m13",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-J1008P01.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-J1008P01,".
                                           "HOST/BSZ-J1008P01.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-J1008P01,".
                                           "RestrictedKrbHost/BSZ-J1008P01.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-j1008p01","10.171.208.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-j1008p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-j1008p01",
                     cn=>"bsz-j1008p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.208.1",
                     sophomorixDnsNodename => "bsz-j1008p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=208.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.208.1",
                     sophomorixDnsNodename => "bsz-j1008p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=208.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"208.171.10.in-addr.arpa",
                     cn=>"208.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # # bsz-j1008p02
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1008p02,OU=j1008,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"bsz-j1008p02",
    #                sAMAccountname=>"bsz-j1008p02",
    #                sn=>"Account",
    #                sophomorixAdminClass => "bsz-j1008",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "bsz",
    #                sophomorixSchoolname => "bsz",
    #                sophomorixAdminFile => "bsz.devices.csv",
    #                memberOf => "bsz-j1008",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1008,OU=j1008,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-j1008",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "bsz",
    #                memberOf => "bsz-examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-examaccounts,OU=examaccounts,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-examaccounts",
    #                memberOf => "all-examaccounts",
    #               });



    # BSZ-J1008P02$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-J1008P02,OU=j1008,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-J1008P02",
                   name=>"BSZ-J1008P02",
                   sophomorixDnsNodename=>"bsz-j1008p02",
                   cn=>"BSZ-J1008P02",
                   sAMAccountname=>"BSZ-J1008P02\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.208.2",
                   sophomorixComputerMAC=>"95:DE:80:B1:58:2A",
                   sophomorixComputerRoom=>"bsz-j1008",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "m13",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-J1008P02.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-J1008P02,".
                                           "HOST/BSZ-J1008P02.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-J1008P02,".
                                           "RestrictedKrbHost/BSZ-J1008P02.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-j1008p02","10.171.208.2");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-j1008p02,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-j1008p02",
                     cn=>"bsz-j1008p02",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.208.2",
                     sophomorixDnsNodename => "bsz-j1008p02",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=2,DC=208.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"2",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.208.2",
                     sophomorixDnsNodename => "bsz-j1008p02",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=208.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"208.171.10.in-addr.arpa",
                     cn=>"208.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",

                   });

    ############################################################
    # bsz-laser1008
    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-laser1008");

    # BSZ-LASER1008$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-LASER1008,OU=j1008,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-LASER1008",
                   name=>"BSZ-LASER1008",
                   sophomorixDnsNodename=>"bsz-laser1008",
                   cn=>"BSZ-LASER1008",
                   sAMAccountname=>"BSZ-LASER1008\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "printer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.208.30",
                   sophomorixComputerMAC=>"01:01:E6:3E:1B:BA",
                   sophomorixComputerRoom=>"bsz-j1008",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "xx",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-LASER1008.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-LASER1008,".
                                           "HOST/BSZ-LASER1008.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-LASER1008,".
                                           "RestrictedKrbHost/BSZ-LASER1008.".$root_dns.",",
                  });
    # bsz-laser1008 host_group
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=bsz-laser1008,OU=printer-groups,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   description=>"Host group for BSZ-LASER1008\$",
                   name=>"bsz-laser1008",
                   cn=>"bsz-laser1008",
                   sAMAccountname=>"bsz-laser1008",
                   sophomorixType => "printer",
                   sophomorixStatus=>"P",
                   sophomorixSchoolname => "bsz",
                   member => "",
                  });

    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-laser1008","10.171.208.30");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-laser1008,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-laser1008",
                     cn=>"bsz-laser1008",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.208.30",
                     sophomorixDnsNodename => "bsz-laser1008",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=30,DC=208.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"30",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.208.30",
                     sophomorixDnsNodename => "bsz-laser1008",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=208.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"208.171.10.in-addr.arpa",
                     cn=>"208.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # # bsz-j1010p01
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1010p01,OU=j1010,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"bsz-j1010p01",
    #                sAMAccountname=>"bsz-j1010p01",
    #                sn=>"Account",
    #                sophomorixAdminClass => "bsz-j1010",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "bsz",
    #                sophomorixSchoolname => "bsz",
    #                sophomorixAdminFile => "bsz.devices.csv",
    #                memberOf => "bsz-j1010",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1010,OU=j1010,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-j1010",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "bsz",
    #                memberOf => "bsz-examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-examaccounts,OU=examaccounts,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-examaccounts",
    #                memberOf => "all-examaccounts",
    #               });

    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=bsz-j1010,OU=j1010,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"bsz-j1010",
                   sophomorixStatus=>"P",
                   description=>"j1010 in bsz",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"10.171.210.1|10.171.210.2|10.171.210.30",
                   sophomorixRoomMACs=>"95:DE:80:B1:AF:A6|95:DE:80:B1:5B:6B|09:2E:5F:BB:57:DB",
                   sophomorixRoomComputers=>"bsz-j1010p01|bsz-j1010p02|bsz-laser1010",
                   sophomorixSchoolname => "bsz",
                   member => "BSZ-J1010P01|BSZ-J1010P02|BSZ-LASER1010",
                  });

    # BSZ-J1010P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-J1010P01,OU=j1010,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-J1010P01",
                   name=>"BSZ-J1010P01",
                   sophomorixDnsNodename=>"bsz-j1010p01",
                   cn=>"BSZ-J1010P01",
                   sAMAccountname=>"BSZ-J1010P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.210.1",
                   sophomorixComputerMAC=>"95:DE:80:B1:AF:A6",
                   sophomorixComputerRoom=>"bsz-j1010",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "m13-t",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-J1010P01.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-J1010P01,".
                                           "HOST/BSZ-J1010P01.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-J1010P01,".
                                           "RestrictedKrbHost/BSZ-J1010P01.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-j1010p01","10.171.210.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-j1010p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-j1010p01",
                     cn=>"bsz-j1010p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.210.1",
                     sophomorixDnsNodename => "bsz-j1010p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=210.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.210.1",
                     sophomorixDnsNodename => "bsz-j1010p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.171.10.in-addr.arpa",
                     cn=>"210.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # # bsz-j1010p02
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1010p02,OU=j1010,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"bsz-j1010p02",
    #                sAMAccountname=>"bsz-j1010p02",
    #                sn=>"Account",
    #                sophomorixAdminClass => "bsz-j1010",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "bsz",
    #                sophomorixSchoolname => "bsz",
    #                sophomorixAdminFile => "bsz.devices.csv",
    #                memberOf => "bsz-j1010",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1010,OU=j1010,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-j1010",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "bsz",
    #                memberOf => "bsz-examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-examaccounts,OU=examaccounts,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-examaccounts",
    #                memberOf => "all-examaccounts",
    #               });

    # BSZ-J1010P02$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-J1010P02,OU=j1010,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-J1010P02",
                   name=>"BSZ-J1010P02",
                   sophomorixDnsNodename=>"bsz-j1010p02",
                   cn=>"BSZ-J1010P02",
                   sAMAccountname=>"BSZ-J1010P02\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.210.2",
                   sophomorixComputerMAC=>"95:DE:80:B1:5B:6B",
                   sophomorixComputerRoom=>"bsz-j1010",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "m13-t",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-J1010P02.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-J1010P02,".
                                           "HOST/BSZ-J1010P02.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-J1010P02,".
                                           "RestrictedKrbHost/BSZ-J1010P02.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-j1010p02","10.171.210.2");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-j1010p02,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-j1010p02",
                     cn=>"bsz-j1010p02",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.210.2",
                     sophomorixDnsNodename => "bsz-j1010p02",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=2,DC=210.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"2",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.210.2",
                     sophomorixDnsNodename => "bsz-j1010p02",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.171.10.in-addr.arpa",
                     cn=>"210.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # bsz-laser1010
    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-laser1010");

    # BSZ-LASER1010$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-LASER1010,OU=j1010,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-LASER1010",
                   name=>"BSZ-LASER1010",
                   sophomorixDnsNodename=>"bsz-laser1010",
                   cn=>"BSZ-LASER1010",
                   sAMAccountname=>"BSZ-LASER1010\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "printer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.210.30",
                   sophomorixComputerMAC=>"09:2E:5F:BB:57:DB",
                   sophomorixComputerRoom=>"bsz-j1010",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "xx",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-LASER1010.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-LASER1010,".
                                           "HOST/BSZ-LASER1010.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-LASER1010,".
                                           "RestrictedKrbHost/BSZ-LASER1010.".$root_dns.",",
                  });
    # bsz-laser1010 host_group
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=bsz-laser1010,OU=printer-groups,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   description=>"Host group for BSZ-LASER1010\$",
                   name=>"bsz-laser1010",
                   cn=>"bsz-laser1010",
                   sAMAccountname=>"bsz-laser1010",
                   sophomorixType => "printer",
                   sophomorixStatus=>"P",
                   sophomorixSchoolname => "bsz",
                   member => "",
                  });

    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-laser1010","10.171.210.30");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-laser1010,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-laser1010",
                     cn=>"bsz-laser1010",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.210.30",
                     sophomorixDnsNodename => "bsz-laser1010",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=30,DC=210.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"30",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.210.30",
                     sophomorixDnsNodename => "bsz-laser1010",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.171.10.in-addr.arpa",
                     cn=>"210.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # bsz-d001p01
    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-d001p01");

    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=bsz-d001,OU=d001,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"bsz-d001",
                   sophomorixStatus=>"P",
                   description=>"d001 in bsz",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"10.171.1.1",
                   sophomorixRoomMACs=>"95:DE:80:B1:5B:B8",
                   sophomorixRoomComputers=>"bsz-d001p01",
                   sophomorixSchoolname => "bsz",
                   member => "BSZ-D001P01",
                  });

    # BSZ-D001P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-D001P01,OU=d001,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-D001P01",
                   name=>"BSZ-D001P01",
                   sophomorixDnsNodename=>"bsz-d001p01",
                   cn=>"BSZ-D001P01",
                   sAMAccountname=>"BSZ-D001P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.1.1",
                   sophomorixComputerMAC=>"95:DE:80:B1:5B:B8",
                   sophomorixComputerRoom=>"bsz-d001",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "m13",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-D001P01.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-D001P01,".
                                           "HOST/BSZ-D001P01.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-D001P01,".
                                           "RestrictedKrbHost/BSZ-D001P01.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-d001p01","10.171.1.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-d001p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-d001p01",
                     cn=>"bsz-d001p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.1.1",
                     sophomorixDnsNodename => "bsz-d001p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=1.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.1.1",
                     sophomorixDnsNodename => "bsz-d001p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1.171.10.in-addr.arpa",
                     cn=>"1.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # bsz-d002p01
    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-d002p01");

    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=bsz-d002,OU=d002,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"bsz-d002",
                   sophomorixStatus=>"P",
                   description=>"d002 in bsz",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"10.171.2.1",
                   sophomorixRoomMACs=>"95:DE:80:B1:5E:F2",
                   sophomorixRoomComputers=>"bsz-d002p01",
                   sophomorixSchoolname => "bsz",
                   member => "BSZ-D002P01",
                  });

    # BSZ-D002P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-D002P01,OU=d002,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-D002P01",
                   name=>"BSZ-D002P01",
                   sophomorixDnsNodename=>"bsz-d002p01",
                   cn=>"BSZ-D002P01",
                   sAMAccountname=>"BSZ-D002P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.2.1",
                   sophomorixComputerMAC=>"95:DE:80:B1:5E:F2",
                   sophomorixComputerRoom=>"bsz-d002",
                   sophomorixComment => "TEST",
                   sophomorixIntrinsic1 => "m13-t",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-D002P01.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-D002P01,".
                                           "HOST/BSZ-D002P01.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-D002P01,".
                                           "RestrictedKrbHost/BSZ-D002P01.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-d002p01","10.171.2.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-d002p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-d002p01",
                     cn=>"bsz-d002p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.2.1",
                     sophomorixDnsNodename => "bsz-d002p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=2.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.2.1",
                     sophomorixDnsNodename => "bsz-d002p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=2.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"2.171.10.in-addr.arpa",
                     cn=>"2.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # test device groups
    ############################################################
    # default-school
    &AD_test_object({ldap=>$ldap,
                     dn=>"CN=d_m13,OU=device-groups,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                     cn=>"d_m13",
                     name=>"d_m13",
                     description=>"d_m13",
                     mail => "d_m13@".$root_dns,
                     sAMAccountname=>"d_m13",
                     sophomorixType => "devicegroup",
                     sophomorixStatus=> "P",
  		     sophomorixMailAlias => "FALSE",
		     sophomorixMailList => "FALSE",
		     sophomorixHidden => "FALSE",
                     sophomorixMaxMembers => "0",
                     sophomorixSchoolname => "default-school",
                     member => "J1008P01|J1008P02|C001P01",
                   });

    &AD_test_object({ldap=>$ldap,
                     dn=>"CN=d_m13-t,OU=device-groups,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                     cn=>"d_m13-t",
                     name=>"d_m13-t",
                     description=>"d_m13-t",
                     mail => "d_m13-t@".$root_dns,
                     sAMAccountname=>"d_m13-t",
                     sophomorixType => "devicegroup",
                     sophomorixStatus=>"P",
                     sophomorixMailAlias => "FALSE",
                     sophomorixMailList => "FALSE",
                     sophomorixHidden => "FALSE",
                     sophomorixMaxMembers => "0",
                     sophomorixSchoolname => "default-school",
                     member => "J1010P01|J1010P02|C002P01",
                   });
    
    &AD_test_object({ldap=>$ldap,
                     dn=>"CN=d_xx,OU=device-groups,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                     cn=>"d_xx",
                     name=>"d_xx",
                     description=>"d_xx",
                     mail => "d_xx@".$root_dns,
                     sAMAccountname=>"d_xx",
                     sophomorixType => "devicegroup",
                     sophomorixStatus=>"P",
                     sophomorixMailAlias => "FALSE",
                     sophomorixMailList => "FALSE",
                     sophomorixHidden => "FALSE",
                     sophomorixMaxMembers => "0",
                     sophomorixSchoolname => "default-school",
                     member => "LASER1008|LASER1010|",
                   });
    
    &AD_test_object({ldap=>$ldap,
                     dn=>"CN=d_swi,OU=device-groups,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                     cn=>"d_swi",
                     name=>"d_swi",
                     description=>"d_swi",
                     mail => "d_swi@".$root_dns,
                     sAMAccountname=>"d_swi",
                     sophomorixType => "devicegroup",
                     sophomorixStatus=>"P",
                     sophomorixMailAlias => "FALSE",
                     sophomorixMailList => "FALSE",
                     sophomorixHidden => "FALSE",
                     sophomorixMaxMembers => "0",
                     sophomorixSchoolname => "default-school",
                   });
    
    
    # bsz
    &AD_test_object({ldap=>$ldap,
                     dn=>"CN=d_bsz-m13,OU=device-groups,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                     cn=>"d_bsz-m13",
                     name=>"d_bsz-m13",
                     description=>"d_bsz-m13",
                     mail => "d_bsz-m13@".$root_dns,
                     sAMAccountname=>"d_bsz-m13",
                     sophomorixType => "devicegroup",
                     sophomorixStatus=> "P",
  		     sophomorixMailAlias => "FALSE",
		     sophomorixMailList => "FALSE",
		     sophomorixHidden => "FALSE",
                     sophomorixMaxMembers => "0",
                     sophomorixSchoolname => "bsz",
                     member => "BSZ-J1008P01|BSZ-J1008P02|BSZ-D001P01",
                   });

    &AD_test_object({ldap=>$ldap,
                     dn=>"CN=d_bsz-m13-t,OU=device-groups,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                     cn=>"d_bsz-m13-t",
                     name=>"d_bsz-m13-t",
                     description=>"d_bsz-m13-t",
                     mail => "d_bsz-m13-t@".$root_dns,
                     sAMAccountname=>"d_bsz-m13-t",
                     sophomorixType => "devicegroup",
                     sophomorixStatus=>"P",
                     sophomorixMailAlias => "FALSE",
                     sophomorixMailList => "FALSE",
                     sophomorixHidden => "FALSE",
                     sophomorixMaxMembers => "0",
                     sophomorixSchoolname => "bsz",
                     member => "BSZ-J1010P01|BSZ-J1010P02|BSZ-D002P01",
                   });
    
    &AD_test_object({ldap=>$ldap,
                     dn=>"CN=d_bsz-xx,OU=device-groups,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                     cn=>"d_bsz-xx",
                     name=>"d_bsz-xx",
                     description=>"d_bsz-xx",
                     mail => "d_bsz-xx@".$root_dns,
                     sAMAccountname=>"d_bsz-xx",
                     sophomorixType => "devicegroup",
                     sophomorixStatus=>"P",
                     sophomorixMailAlias => "FALSE",
                     sophomorixMailList => "FALSE",
                     sophomorixHidden => "FALSE",
                     sophomorixMaxMembers => "0",
                     sophomorixSchoolname => "bsz",
                     member => "BSZ-LASER1008|BSZ-LASER1010",
                   });

    &AD_devicegroup_count(7,$ldap,$root_dse);
    &AD_room_count(8,$ldap,$root_dse);
    
    # 18 devices -> 36 dnsNode Objects (incl. reverse lookup)
    &AD_dnsnodes_count_lookup(18,$ldap,$root_dse);
    &AD_dnsnodes_count_reverse(18,$ldap,$root_dse);
    &AD_dnszones_count(9,$ldap,$root_dse);
}


############################################################
# Step 2
############################################################
# --copy-devfile-2
if ($copy_devfile_2==1){
    # copy devices.csv-2
    &run_command("cp -v $wsfile_2 $host_workstation");
    &run_command("cp -v $crfile_2 $host_classroom");
    &run_command("cp -v $wsfile_2_bsz $host_workstation_bsz");
    &run_command("cp -v $crfile_2_bsz $host_classroom_bsz");
}

if ($full==1){
    &run_command("sophomorix-device --sync $all_options");
}


if ($test_ws_2==1){
    ############################################################
    # devices.csv
    ############################################################
    # # j1008p03
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1008p03,OU=j1008,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"j1008p03",
    #                sAMAccountname=>"j1008p03",
    #                sn=>"Account",
    #                sophomorixAdminClass => "j1008",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "---",
    #                sophomorixSchoolname => "default-school",
    #                sophomorixAdminFile => "devices.csv",
    #                memberOf => "j1008",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1008,OU=j1008,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"j1008",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "default-school",
    #                memberOf => "examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=examaccounts,OU=examaccounts,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"examaccounts",
    #                memberOf => "all-examaccounts",
    #               });

    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=j1008,OU=j1008,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"j1008",
                   sophomorixStatus=>"P",
                   description=>"j1008 in default-school",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"172.16.0.50|172.16.0.54|172.16.0.30",
                   sophomorixRoomMACs=>"94:DE:80:B1:5B:2E|94:DE:80:B1:58:2A|00:01:E6:3E:1B:BA",
                   sophomorixRoomComputers=>"j1008p03|j1008p02|laser1008",
                   sophomorixSchoolname => "default-school",
                   member => "J1008P02|J1008P03|LASER1008",
                  });

    # J1008P03$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=J1008P03,OU=j1008,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer J1008P03",
                   name=>"J1008P03",
                   sophomorixDnsNodename=>"j1008p03",
                   cn=>"J1008P03",
                   sAMAccountname=>"J1008P03\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"172.16.0.50",
                   sophomorixComputerMAC=>"94:DE:80:B1:5B:2E",
                   sophomorixComputerRoom=>"j1008",
                   sophomorixComment => "TEST2",
                   sophomorixIntrinsic1 => "m13",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "J1008P03.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/J1008P03,".
                                           "HOST/J1008P03.".$root_dns.",".
                                           "RestrictedKrbHost/J1008P03,".
                                           "RestrictedKrbHost/J1008P03.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"j1008p03","172.16.0.50");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=j1008p03,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"j1008p03",
                     cn=>"j1008p03",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "172.16.0.50",
                     sophomorixDnsNodename => "j1008p03",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=50,DC=0.16.172.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"50",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "172.16.0.50",
                     sophomorixDnsNodename => "j1008p03",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=0.16.172.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"0.16.172.in-addr.arpa",
                     cn=>"0.16.172.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # # j1008p02
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1008p02,OU=j1008,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"j1008p02",
    #                sAMAccountname=>"j1008p02",
    #                sn=>"Account",
    #                sophomorixAdminClass => "j1008",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "---",
    #                sophomorixSchoolname => "default-school",
    #                sophomorixAdminFile => "devices.csv",
    #                memberOf => "j1008",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1008,OU=j1008,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"j1008",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "default-school",
    #                memberOf => "examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=examaccounts,OU=examaccounts,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"examaccounts",
    #                memberOf => "all-examaccounts",
    #               });

    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=j1010,OU=j1010,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"j1010",
                   sophomorixStatus=>"P",
                   description=>"j1010 in default-school",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"10.170.210.1|10.170.210.2|10.170.210.30",
                   sophomorixRoomMACs=>"94:DE:80:B1:AF:A6|94:DE:80:B1:5B:6B|08:2E:5F:BB:57:DB",
                   sophomorixRoomComputers=>"j1010p01|j1010p02|laser1010",
                   sophomorixSchoolname => "default-school",
                   member => "J1010P01|J1010P02|LASER1010",
                  });


    # J1008P02$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=J1008P02,OU=j1008,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer J1008P02",
                   name=>"J1008P02",
                   sophomorixDnsNodename=>"j1008p02",
                   cn=>"J1008P02",
                   sAMAccountname=>"J1008P02\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"172.16.0.54",
                   sophomorixComputerMAC=>"94:DE:80:B1:58:2A",
                   sophomorixComputerRoom=>"j1008",
                   sophomorixComment => "TEST2",
                   sophomorixIntrinsic1 => "m13",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "J1008P02.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/J1008P02,".
                                           "HOST/J1008P02.".$root_dns.",".
                                           "RestrictedKrbHost/J1008P02,".
                                           "RestrictedKrbHost/J1008P02.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"j1008p02","172.16.0.54");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=j1008p02,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"j1008p02",
                     cn=>"j1008p02",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "172.16.0.54",
                     sophomorixDnsNodename => "j1008p02",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=54,DC=0.16.172.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"54",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "172.16.0.54",
                     sophomorixDnsNodename => "j1008p02",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=0.16.172.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"0.16.172.in-addr.arpa",
                     cn=>"0.16.172.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # laser1008
    &AD_object_nonexist($ldap,$root_dse,"examaccount","laser1008");

    # LASER1008$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=LASER1008,OU=j1008,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer LASER1008",
                   name=>"LASER1008",
                   sophomorixDnsNodename=>"laser1008",
                   cn=>"LASER1008",
                   sAMAccountname=>"LASER1008\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "printer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"172.16.0.30",
                   sophomorixComputerMAC=>"00:01:E6:3E:1B:BA",
                   sophomorixComputerRoom=>"j1008",
                   sophomorixComment => "TEST2",
                   sophomorixIntrinsic1 => "xx",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "LASER1008.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/LASER1008,".
                                           "HOST/LASER1008.".$root_dns.",".
                                           "RestrictedKrbHost/LASER1008,".
                                           "RestrictedKrbHost/LASER1008.".$root_dns.",",
                  });
    # laser1008 host_group
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=laser1008,OU=printer-groups,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   description=>"Host group for LASER1008\$",
                   name=>"laser1008",
                   cn=>"laser1008",
                   sAMAccountname=>"laser1008",
                   sophomorixType => "printer",
                   sophomorixStatus=>"P",
                   sophomorixSchoolname => "default-school",
                   member => "",
                  });

    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"laser1008","172.16.0.30");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=laser1008,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"laser1008",
                     cn=>"laser1008",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "172.16.0.30",
                     sophomorixDnsNodename => "laser1008",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=30,DC=0.16.172.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"30",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "172.16.0.30",
                     sophomorixDnsNodename => "laser1008",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=0.16.172.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"0.16.172.in-addr.arpa",
                     cn=>"0.16.172.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # # j1010p01
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1010p01,OU=j1010,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"j1010p01",
    #                sAMAccountname=>"j1010p01",
    #                sn=>"Account",
    #                sophomorixAdminClass => "j1010",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "---",
    #                sophomorixSchoolname => "default-school",
    #                sophomorixAdminFile => "devices.csv",
    #                memberOf => "j1010",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1010,OU=j1010,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"j1010",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "bsz",
    #                memberOf => "examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=examaccounts,OU=examaccounts,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"examaccounts",
    #                memberOf => "all-examaccounts",
    #               });

    # J1010P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=J1010P01,OU=j1010,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer J1010P01",
                   name=>"J1010P01",
                   sophomorixDnsNodename=>"j1010p01",
                   cn=>"J1010P01",
                   sAMAccountname=>"J1010P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.170.210.1",
                   sophomorixComputerMAC=>"94:DE:80:B1:AF:A6",
                   sophomorixComputerRoom=>"j1010",
                   sophomorixComment => "TEST2",
                   sophomorixIntrinsic1 => "m13-t",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "J1010P01.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/J1010P01,".
                                           "HOST/J1010P01.".$root_dns.",".
                                           "RestrictedKrbHost/J1010P01,".
                                           "RestrictedKrbHost/J1010P01.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"j1010p01","10.170.210.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=j1010p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"j1010p01",
                     cn=>"j1010p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.210.1",
                     sophomorixDnsNodename => "j1010p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=210.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.210.1",
                     sophomorixDnsNodename => "j1010p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.170.10.in-addr.arpa",
                     cn=>"210.170.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # # j1010p02
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1010p02,OU=j1010,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"j1010p02",
    #                sAMAccountname=>"j1010p02",
    #                sn=>"Account",
    #                sophomorixAdminClass => "j1010",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "---",
    #                sophomorixSchoolname => "default-school",
    #                sophomorixAdminFile => "devices.csv",
    #                memberOf => "j1010",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=j1010,OU=j1010,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"j1010",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "bsz",
    #                memberOf => "examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=examaccounts,OU=examaccounts,OU=ExamAccounts,OU=default-school,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"examaccounts",
    #                memberOf => "all-examaccounts",
    #               });

    # J1010P02$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=J1010P02,OU=j1010,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer J1010P02",
                   name=>"J1010P02",
                   sophomorixDnsNodename=>"j1010p02",
                   cn=>"J1010P02",
                   sAMAccountname=>"J1010P02\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.170.210.2",
                   sophomorixComputerMAC=>"94:DE:80:B1:5B:6B",
                   sophomorixComputerRoom=>"j1010",
                   sophomorixComment => "TEST2",
                   sophomorixIntrinsic1 => "m13-t",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "J1010P02.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/J1010P02,".
                                           "HOST/J1010P02.".$root_dns.",".
                                           "RestrictedKrbHost/J1010P02,".
                                           "RestrictedKrbHost/J1010P02.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"j1010p02","10.170.210.2");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=j1010p02,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"j1010p02",
                     cn=>"j1010p02",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.210.2",
                     sophomorixDnsNodename => "j1010p02",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=2,DC=210.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"2",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.210.2",
                     sophomorixDnsNodename => "j1010p02",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.170.10.in-addr.arpa",
                     cn=>"210.170.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # laser1010
    &AD_object_nonexist($ldap,$root_dse,"examaccount","laser1010");

    # LASER1010$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=LASER1010,OU=j1010,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer LASER1010",
                   name=>"LASER1010",
                   sophomorixDnsNodename=>"laser1010",
                   cn=>"LASER1010",
                   sAMAccountname=>"LASER1010\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "printer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.170.210.30",
                   sophomorixComputerMAC=>"08:2E:5F:BB:57:DB",
                   sophomorixComputerRoom=>"j1010",
                   sophomorixComment => "TEST2",
                   sophomorixIntrinsic1 => "xx",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "LASER1010.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/LASER1010,".
                                           "HOST/LASER1010.".$root_dns.",".
                                           "RestrictedKrbHost/LASER1010,".
                                           "RestrictedKrbHost/LASER1010.".$root_dns.",",
                  });
    # laser1010 host_group
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=laser1010,OU=printer-groups,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   description=>"Host group for LASER1010\$",
                   name=>"laser1010",
                   cn=>"laser1010",
                   sAMAccountname=>"laser1010",
                   sophomorixType => "printer",
                   sophomorixStatus=>"P",
                   sophomorixSchoolname => "default-school",
                   member => "",
                  });

    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"laser1010","10.170.210.30");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=laser1010,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"laser1010",
                     cn=>"laser1010",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.210.30",
                     sophomorixDnsNodename => "laser1010",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=30,DC=210.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"30",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.210.30",
                     sophomorixDnsNodename => "laser1010",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.170.10.in-addr.arpa",
                     cn=>"210.170.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # c001p01
    &AD_object_nonexist($ldap,$root_dse,"examaccount","c001p01");

    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=c001,OU=c001,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"c001",
                   sophomorixStatus=>"P",
                   description=>"c001 in default-school",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"10.170.1.1",
                   sophomorixRoomMACs=>"94:DE:80:B1:5B:B8",
                   sophomorixRoomComputers=>"c001p01",
                   sophomorixSchoolname => "default-school",
                   member => "C001P01",
                  });

    # C001P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=C001P01,OU=c001,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer C001P01",
                   name=>"C001P01",
                   sophomorixDnsNodename=>"c001p01",
                   cn=>"C001P01",
                   sAMAccountname=>"C001P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.170.1.1",
                   sophomorixComputerMAC=>"94:DE:80:B1:5B:B8",
                   sophomorixComputerRoom=>"c001",
                   sophomorixComment => "TEST2",
                   sophomorixIntrinsic1 => "m13",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "C001P01.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/C001P01,".
                                           "HOST/C001P01.".$root_dns.",".
                                           "RestrictedKrbHost/C001P01,".
                                           "RestrictedKrbHost/C001P01.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"c001p01","10.170.1.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=c001p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"c001p01",
                     cn=>"c001p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.1.1",
                     sophomorixDnsNodename => "c001p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=1.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.1.1",
                     sophomorixDnsNodename => "c001p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1.170.10.in-addr.arpa",
                     cn=>"1.170.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # c002p01
    &AD_object_nonexist($ldap,$root_dse,"examaccount","c002p01");

    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=c002,OU=c002,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"c002",
                   sophomorixStatus=>"P",
                   description=>"c002 in default-school",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"10.170.2.1",
                   sophomorixRoomMACs=>"94:DE:80:B1:5E:F2",
                   sophomorixRoomComputers=>"c002p01",
                   sophomorixSchoolname => "default-school",
                   member => "C002P01",
                  });

    # C002P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=C002P01,OU=c002,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer C002P01",
                   name=>"C002P01",
                   sophomorixDnsNodename=>"c002p01",
                   cn=>"C002P01",
                   sAMAccountname=>"C002P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.170.2.1",
                   sophomorixComputerMAC=>"94:DE:80:B1:5E:F2",
                   sophomorixComputerRoom=>"c002",
                   sophomorixComment => "TEST2",
                   sophomorixIntrinsic1 => "m13-t",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "C002P01.".$root_dns,
                   sophomorixSchoolPrefix => "---",
                   sophomorixSchoolname => "default-school",
                   sophomorixAdminFile => "devices.csv",
                   servicePrincipalName => "HOST/C002P01,".
                                           "HOST/C002P01.".$root_dns.",".
                                           "RestrictedKrbHost/C002P01,".
                                           "RestrictedKrbHost/C002P01.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"c002p01","10.170.2.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=c002p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"c002p01",
                     cn=>"c002p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.2.1",
                     sophomorixDnsNodename => "c002p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=2.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.170.2.1",
                     sophomorixDnsNodename => "c002p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=2.170.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"2.170.10.in-addr.arpa",
                     cn=>"2.170.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });
    ############################################################
    # switch01
    # test that there is no examaccount
    &AD_object_nonexist($ldap,$root_dse,"examaccount","switch01");
    # test for sophomorixRole iponly that there is no account
    &AD_object_nonexist($ldap,$root_dse,"computer","SWITCH01\$");

    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"switch01","10.10.210.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=switch01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"switch01",
                     cn=>"switch01",
                     sophomorixRole => "switch",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.10.210.1",
                     sophomorixDnsNodename => "switch01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=210.10.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "switch",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.10.210.1",
                     sophomorixDnsNodename => "switch01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.10.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.10.10.in-addr.arpa",
                     cn=>"210.10.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });
    ############################################################
    # switch02
    # test that there is no examaccount
    &AD_object_nonexist($ldap,$root_dse,"examaccount","switch02");
    # test for sophomorixRole iponly that there is no account
    &AD_object_nonexist($ldap,$root_dse,"computer","SWITCH02\$");

    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"switch02","10.10.210.2");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=switch02,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"switch02",
                     cn=>"switch02",
                     sophomorixRole => "switch",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.10.210.2",
                     sophomorixDnsNodename => "switch02",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=2,DC=210.10.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"2",
                     sophomorixRole => "switch",
                     sophomorixAdminFile => "devices.csv",
                     sophomorixSchoolname => "default-school",
                     sophomorixComputerIP => "10.10.210.2",
                     sophomorixDnsNodename => "switch02",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.10.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.10.10.in-addr.arpa",
                     cn=>"210.10.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # bsz.devices.csv
    ############################################################
    # # bsz-j1008p01
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1008p01,OU=j1008,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"bsz-j1008p01",
    #                sAMAccountname=>"bsz-j1008p01",
    #                sn=>"Account",
    #                sophomorixAdminClass => "bsz-j1008",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "bsz",
    #                sophomorixSchoolname => "bsz",
    #                sophomorixAdminFile => "bsz.devices.csv",
    #                memberOf => "bsz-j1008",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1008,OU=j1008,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-j1008",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "bsz",
    #                memberOf => "bsz-examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-examaccounts,OU=examaccounts,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-examaccounts",
    #                memberOf => "all-examaccounts",
    #               });

    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=bsz-j1008,OU=j1008,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"bsz-j1008",
                   sophomorixStatus=>"P",
                   description=>"j1008 in bsz",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"10.171.208.1|10.171.208.2|10.171.208.30",
                   sophomorixRoomMACs=>"95:DE:80:B1:5B:2E|95:DE:80:B1:58:2A|01:01:E6:3E:1B:BA",
                   sophomorixRoomComputers=>"bsz-j1008p01|bsz-j1008p02|bsz-laser1008",
                   sophomorixSchoolname => "bsz",
                   member => "BSZ-J1008P01|BSZ-J1008P02|BSZ-LASER1008",
                  });

    # BSZ-J1008P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-J1008P01,OU=j1008,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-J1008P01",
                   name=>"BSZ-J1008P01",
                   sophomorixDnsNodename=>"bsz-j1008p01",
                   cn=>"BSZ-J1008P01",
                   sAMAccountname=>"BSZ-J1008P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.208.1",
                   sophomorixComputerMAC=>"95:DE:80:B1:5B:2E",
                   sophomorixComputerRoom=>"bsz-j1008",
                   sophomorixComment => "TEST2",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-J1008P01.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-J1008P01,".
                                           "HOST/BSZ-J1008P01.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-J1008P01,".
                                           "RestrictedKrbHost/BSZ-J1008P01.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-j1008p01","10.171.208.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-j1008p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-j1008p01",
                     cn=>"bsz-j1008p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.208.1",
                     sophomorixDnsNodename => "bsz-j1008p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=208.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.208.1",
                     sophomorixDnsNodename => "bsz-j1008p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=208.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"208.171.10.in-addr.arpa",
                     cn=>"208.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # # bsz-j1008p02
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1008p02,OU=j1008,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"bsz-j1008p02",
    #                sAMAccountname=>"bsz-j1008p02",
    #                sn=>"Account",
    #                sophomorixAdminClass => "bsz-j1008",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "bsz",
    #                sophomorixSchoolname => "bsz",
    #                sophomorixAdminFile => "bsz.devices.csv",
    #                memberOf => "bsz-j1008",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1008,OU=j1008,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-j1008",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "bsz",
    #                memberOf => "bsz-examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-examaccounts,OU=examaccounts,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-examaccounts",
    #                memberOf => "all-examaccounts",
    #               });

    # BSZ-J1008P02$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-J1008P02,OU=j1008,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-J1008P02",
                   name=>"BSZ-J1008P02",
                   sophomorixDnsNodename=>"bsz-j1008p02",
                   cn=>"BSZ-J1008P02",
                   sAMAccountname=>"BSZ-J1008P02\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.208.2",
                   sophomorixComputerMAC=>"95:DE:80:B1:58:2A",
                   sophomorixComputerRoom=>"bsz-j1008",
                   sophomorixComment => "TEST2",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-J1008P02.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-J1008P02,".
                                           "HOST/BSZ-J1008P02.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-J1008P02,".
                                           "RestrictedKrbHost/BSZ-J1008P02.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-j1008p02","10.171.208.2");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-j1008p02,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-j1008p02",
                     cn=>"bsz-j1008p02",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.208.2",
                     sophomorixDnsNodename => "bsz-j1008p02",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=2,DC=208.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"2",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.208.2",
                     sophomorixDnsNodename => "bsz-j1008p02",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=208.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"208.171.10.in-addr.arpa",
                     cn=>"208.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # bsz-laser1008
    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-laser1008");

    # BSZ-LASER1008$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-LASER1008,OU=j1008,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-LASER1008",
                   name=>"BSZ-LASER1008",
                   sophomorixDnsNodename=>"bsz-laser1008",
                   cn=>"BSZ-LASER1008",
                   sAMAccountname=>"BSZ-LASER1008\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "printer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.208.30",
                   sophomorixComputerMAC=>"01:01:E6:3E:1B:BA",
                   sophomorixComputerRoom=>"bsz-j1008",
                   sophomorixComment => "TEST2",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-LASER1008.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-LASER1008,".
                                           "HOST/BSZ-LASER1008.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-LASER1008,".
                                           "RestrictedKrbHost/BSZ-LASER1008.".$root_dns.",",
                  });
    # bsz-laser1008 host_group
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=bsz-laser1008,OU=printer-groups,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   description=>"Host group for BSZ-LASER1008\$",
                   name=>"bsz-laser1008",
                   cn=>"bsz-laser1008",
                   sAMAccountname=>"bsz-laser1008",
                   sophomorixType => "printer",
                   sophomorixStatus=>"P",
                   sophomorixSchoolname => "bsz",
                   member => "",
                  });

    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-laser1008","10.171.208.30");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-laser1008,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-laser1008",
                     cn=>"bsz-laser1008",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.208.30",
                     sophomorixDnsNodename => "bsz-laser1008",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=30,DC=208.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"30",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.208.30",
                     sophomorixDnsNodename => "bsz-laser1008",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=208.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"208.171.10.in-addr.arpa",
                     cn=>"208.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # # bsz-j1010p01
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1010p01,OU=j1010,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"bsz-j1010p01",
    #                sAMAccountname=>"bsz-j1010p01",
    #                sn=>"Account",
    #                sophomorixAdminClass => "bsz-j1010",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "bsz",
    #                sophomorixSchoolname => "bsz",
    #                sophomorixAdminFile => "bsz.devices.csv",
    #                memberOf => "bsz-j1010",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1010,OU=j1010,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-j1010",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "bsz",
    #                memberOf => "bsz-examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-examaccounts,OU=examaccounts,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-examaccounts",
    #                memberOf => "all-examaccounts",
    #               });

    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=bsz-j1010,OU=j1010,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"bsz-j1010",
                   sophomorixStatus=>"P",
                   description=>"j1010 in bsz",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"10.171.210.1|10.171.210.2|10.171.210.30",
                   sophomorixRoomMACs=>"95:DE:80:B1:AF:A6|95:DE:80:B1:5B:6B|09:2E:5F:BB:57:DB",
                   sophomorixRoomComputers=>"bsz-j1010p01|bsz-j1010p02|bsz-laser1010",
                   sophomorixSchoolname => "bsz",
                   member => "BSZ-J1010P01|BSZ-J1010P02|BSZ-LASER1010",
                  });

    # BSZ-J1010P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-J1010P01,OU=j1010,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-J1010P01",
                   name=>"BSZ-J1010P01",
                   sophomorixDnsNodename=>"bsz-j1010p01",
                   cn=>"BSZ-J1010P01",
                   sAMAccountname=>"BSZ-J1010P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.210.1",
                   sophomorixComputerMAC=>"95:DE:80:B1:AF:A6",
                   sophomorixComputerRoom=>"bsz-j1010",
                   sophomorixComment => "TEST2",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-J1010P01.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-J1010P01,".
                                           "HOST/BSZ-J1010P01.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-J1010P01,".
                                           "RestrictedKrbHost/BSZ-J1010P01.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-j1010p01","10.171.210.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-j1010p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-j1010p01",
                     cn=>"bsz-j1010p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.210.1",
                     sophomorixDnsNodename => "bsz-j1010p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=210.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.210.1",
                     sophomorixDnsNodename => "bsz-j1010p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.171.10.in-addr.arpa",
                     cn=>"210.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # # bsz-j1010p02
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1010p02,OU=j1010,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                #####
    #                displayName=>"Exam Account",
    #                givenName=>"Exam",
    #                name=>"bsz-j1010p02",
    #                sAMAccountname=>"bsz-j1010p02",
    #                sn=>"Account",
    #                sophomorixAdminClass => "bsz-j1010",
    #                sophomorixExitAdminClass => "unknown",
    #                #sophomorixFirstPassword => "Muster!",
    #                sophomorixFirstnameASCII => "Exam",
    #                sophomorixSurnameASCII  => "Account",
    #                sophomorixRole => "examaccount",
    #                sophomorixStatus=>"P",
    #                sophomorixSchoolPrefix => "bsz",
    #                sophomorixSchoolname => "bsz",
    #                sophomorixAdminFile => "bsz.devices.csv",
    #                memberOf => "bsz-j1010",
    #               });
    # ##### Testing the exam accounts room
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-j1010,OU=j1010,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-j1010",
    #                sophomorixStatus=>"P",
    #                sophomorixType=>"room",
    #                sophomorixSchoolname => "bsz",
    #                memberOf => "bsz-examaccounts",
    #               });
    # ##### Testing the examaccounts <token>-examaccounts group
    # &AD_test_object({ldap=>$ldap,
    #                dn=>"CN=bsz-examaccounts,OU=examaccounts,OU=ExamAccounts,OU=bsz,OU=SCHOOLS,".$root_dse,
    #                sAMAccountname=>"bsz-examaccounts",
    #                memberOf => "all-examaccounts",
    #               });

    # BSZ-J1010P02$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-J1010P02,OU=j1010,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-J1010P02",
                   name=>"BSZ-J1010P02",
                   sophomorixDnsNodename=>"bsz-j1010p02",
                   cn=>"BSZ-J1010P02",
                   sAMAccountname=>"BSZ-J1010P02\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.210.2",
                   sophomorixComputerMAC=>"95:DE:80:B1:5B:6B",
                   sophomorixComputerRoom=>"bsz-j1010",
                   sophomorixComment => "TEST2",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-J1010P02.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-J1010P02,".
                                           "HOST/BSZ-J1010P02.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-J1010P02,".
                                           "RestrictedKrbHost/BSZ-J1010P02.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-j1010p02","10.171.210.2");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-j1010p02,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-j1010p02",
                     cn=>"bsz-j1010p02",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.210.2",
                     sophomorixDnsNodename => "bsz-j1010p02",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=2,DC=210.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"2",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.210.2",
                     sophomorixDnsNodename => "bsz-j1010p02",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.171.10.in-addr.arpa",
                     cn=>"210.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # bsz-laser1010
    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-laser1010");

    # BSZ-LASER1010$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-LASER1010,OU=j1010,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-LASER1010",
                   name=>"BSZ-LASER1010",
                   sophomorixDnsNodename=>"bsz-laser1010",
                   cn=>"BSZ-LASER1010",
                   sAMAccountname=>"BSZ-LASER1010\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "printer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.210.30",
                   sophomorixComputerMAC=>"09:2E:5F:BB:57:DB",
                   sophomorixComputerRoom=>"bsz-j1010",
                   sophomorixComment => "TEST2",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-LASER1010.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-LASER1010,".
                                           "HOST/BSZ-LASER1010.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-LASER1010,".
                                           "RestrictedKrbHost/BSZ-LASER1010.".$root_dns.",",
                  });
    # bsz-laser1010 host_group
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=bsz-laser1010,OU=printer-groups,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   description=>"Host group for BSZ-LASER1010\$",
                   name=>"bsz-laser1010",
                   cn=>"bsz-laser1010",
                   sAMAccountname=>"bsz-laser1010",
                   sophomorixType => "printer",
                   sophomorixStatus=>"P",
                   sophomorixSchoolname => "bsz",
                   member => "",
                  });

    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-laser1010","10.171.210.30");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-laser1010,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-laser1010",
                     cn=>"bsz-laser1010",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.210.30",
                     sophomorixDnsNodename => "bsz-laser1010",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=30,DC=210.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"30",
                     sophomorixRole => "printer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.210.30",
                     sophomorixDnsNodename => "bsz-laser1010",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=210.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"210.171.10.in-addr.arpa",
                     cn=>"210.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # bsz-d001p01
    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-d001p01");

    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=bsz-d001,OU=d001,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"bsz-d001",
                   sophomorixStatus=>"P",
                   description=>"d001 in bsz",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"10.171.1.1",
                   sophomorixRoomMACs=>"95:DE:80:B1:5B:B8",
                   sophomorixRoomComputers=>"bsz-d001p01",
                   sophomorixSchoolname => "bsz",
                   member => "BSZ-D001P01",
                  });

    # BSZ-D001P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-D001P01,OU=d001,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-D001P01",
                   name=>"BSZ-D001P01",
                   sophomorixDnsNodename=>"bsz-d001p01",
                   cn=>"BSZ-D001P01",
                   sAMAccountname=>"BSZ-D001P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.1.1",
                   sophomorixComputerMAC=>"95:DE:80:B1:5B:B8",
                   sophomorixComputerRoom=>"bsz-d001",
                   sophomorixComment => "TEST2",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-D001P01.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-D001P01,".
                                           "HOST/BSZ-D001P01.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-D001P01,".
                                           "RestrictedKrbHost/BSZ-D001P01.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-d001p01","10.171.1.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-d001p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-d001p01",
                     cn=>"bsz-d001p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.1.1",
                     sophomorixDnsNodename => "bsz-d001p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=1.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.1.1",
                     sophomorixDnsNodename => "bsz-d001p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1.171.10.in-addr.arpa",
                     cn=>"1.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # bsz-d002p01
    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-d002p01");

    ##### Testing the computers room
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=bsz-d002,OU=d002,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   sAMAccountname=>"bsz-d002",
                   sophomorixStatus=>"P",
                   description=>"d002 in bsz",
                   sophomorixType=>"room",
                   sophomorixRoomIPs=>"10.171.2.1",
                   sophomorixRoomMACs=>"95:DE:80:B1:5E:F2",
                   sophomorixRoomComputers=>"bsz-d002p01",
                   sophomorixSchoolname => "bsz",
                   member => "BSZ-D002P01",
                  });

    # BSZ-D002P01$
    &AD_test_object({ldap=>$ldap,
                   dn=>"CN=BSZ-D002P01,OU=d002,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                   #####
                   displayName=>"Computer BSZ-D002P01",
                   name=>"BSZ-D002P01",
                   sophomorixDnsNodename=>"bsz-d002p01",
                   cn=>"BSZ-D002P01",
                   sAMAccountname=>"BSZ-D002P01\$",
                   #sophomorixFirstPassword => "Muster!",
                   sophomorixRole => "classroom-studentcomputer",
                   sophomorixStatus=>"P",
                   sophomorixComputerIP=>"10.171.2.1",
                   sophomorixComputerMAC=>"95:DE:80:B1:5E:F2",
                   sophomorixComputerRoom=>"bsz-d002",
                   sophomorixComment => "TEST2",
                   accountExpires => "0",
                   userAccountControl => "4096",
                   dNSHostName => "BSZ-D002P01.".$root_dns,
                   sophomorixSchoolPrefix => "bsz",
                   sophomorixSchoolname => "bsz",
                   sophomorixAdminFile => "bsz.devices.csv",
                   servicePrincipalName => "HOST/BSZ-D002P01,".
                                           "HOST/BSZ-D002P01.".$root_dns.",".
                                           "RestrictedKrbHost/BSZ-D002P01,".
                                           "RestrictedKrbHost/BSZ-D002P01.".$root_dns.",",
                  });
    ##############################
    #dns 
    ##############################
    &AD_test_dns($res,"bsz-d002p01","10.171.2.1");
    # dnsNode
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=bsz-d002p01,DC=linuxmuster.local,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"bsz-d002p01",
                     cn=>"bsz-d002p01",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.2.1",
                     sophomorixDnsNodename => "bsz-d002p01",
                     sophomorixDnsNodetype => "lookup",
                     sophomorixComment => "TEST2",
                   });
    # dns reverse lookup
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=1,DC=2.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"1",
                     sophomorixRole => "classroom-studentcomputer",
                     sophomorixAdminFile => "bsz.devices.csv",
                     sophomorixSchoolname => "bsz",
                     sophomorixComputerIP => "10.171.2.1",
                     sophomorixDnsNodename => "bsz-d002p01",
                     sophomorixDnsNodetype => "reverse",
                     sophomorixComment => "TEST2",
                   });
    # dnsZone
    &AD_test_object({ldap=>$ldap,
                     dn=>"DC=2.171.10.in-addr.arpa,CN=MicrosoftDNS,DC=DomainDnsZones,".$root_dse,
                     #####
                     name=>"2.171.10.in-addr.arpa",
                     cn=>"2.171.10.in-addr.arpa",
                     sophomorixRole => "sophomorixdnsZone",
                   });

    ############################################################
    # test device groups
    ############################################################
    # default-school
    &AD_test_object({ldap=>$ldap,
                     dn=>"CN=d_m13,OU=device-groups,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                     cn=>"d_m13",
                     name=>"d_m13",
                     description=>"d_m13",
                     mail => "d_m13@".$root_dns,
                     sAMAccountname=>"d_m13",
                     sophomorixType => "devicegroup",
                     sophomorixStatus=> "P",
  		     sophomorixMailAlias => "FALSE",
		     sophomorixMailList => "FALSE",
		     sophomorixHidden => "FALSE",
                     sophomorixMaxMembers => "0",
                     sophomorixSchoolname => "default-school",
                     member => "J1008P03|J1008P02|C001P01",
                   });

    &AD_test_object({ldap=>$ldap,
                     dn=>"CN=d_m13-t,OU=device-groups,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                     cn=>"d_m13-t",
                     name=>"d_m13-t",
                     description=>"d_m13-t",
                     mail => "d_m13-t@".$root_dns,
                     sAMAccountname=>"d_m13-t",
                     sophomorixType => "devicegroup",
                     sophomorixStatus=>"P",
                     sophomorixMailAlias => "FALSE",
                     sophomorixMailList => "FALSE",
                     sophomorixHidden => "FALSE",
                     sophomorixMaxMembers => "0",
                     sophomorixSchoolname => "default-school",
                     member => "J1010P01|J1010P02|C002P01",
                   });
    
    &AD_test_object({ldap=>$ldap,
                     dn=>"CN=d_xx,OU=device-groups,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                     cn=>"d_xx",
                     name=>"d_xx",
                     description=>"d_xx",
                     mail => "d_xx@".$root_dns,
                     sAMAccountname=>"d_xx",
                     sophomorixType => "devicegroup",
                     sophomorixStatus=>"P",
                     sophomorixMailAlias => "FALSE",
                     sophomorixMailList => "FALSE",
                     sophomorixHidden => "FALSE",
                     sophomorixMaxMembers => "0",
                     sophomorixSchoolname => "default-school",
                     member => "LASER1008|LASER1010|",
                   });
    
    &AD_test_object({ldap=>$ldap,
                     dn=>"CN=d_swi,OU=device-groups,OU=Devices,OU=default-school,OU=SCHOOLS,".$root_dse,
                     cn=>"d_swi",
                     name=>"d_swi",
                     description=>"d_swi",
                     mail => "d_swi@".$root_dns,
                     sAMAccountname=>"d_swi",
                     sophomorixType => "devicegroup",
                     sophomorixStatus=>"P",
                     sophomorixMailAlias => "FALSE",
                     sophomorixMailList => "FALSE",
                     sophomorixHidden => "FALSE",
                     sophomorixMaxMembers => "0",
                     sophomorixSchoolname => "default-school",
                   });
    
    
    # bsz
    &AD_test_object({ldap=>$ldap,
                     dn=>"CN=d_bsz-m13,OU=device-groups,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                     cn=>"d_bsz-m13",
                     name=>"d_bsz-m13",
                     description=>"d_bsz-m13",
                     mail => "d_bsz-m13@".$root_dns,
                     sAMAccountname=>"d_bsz-m13",
                     sophomorixType => "devicegroup",
                     sophomorixStatus=> "P",
  		     sophomorixMailAlias => "FALSE",
		     sophomorixMailList => "FALSE",
		     sophomorixHidden => "FALSE",
                     sophomorixMaxMembers => "0",
                     sophomorixSchoolname => "bsz",
                     member => "BSZ-J1008P01|BSZ-J1008P02|BSZ-D001P01",
                   });

    &AD_test_object({ldap=>$ldap,
                     dn=>"CN=d_bsz-m13-t,OU=device-groups,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                     cn=>"d_bsz-m13-t",
                     name=>"d_bsz-m13-t",
                     description=>"d_bsz-m13-t",
                     mail => "d_bsz-m13-t@".$root_dns,
                     sAMAccountname=>"d_bsz-m13-t",
                     sophomorixType => "devicegroup",
                     sophomorixStatus=>"P",
                     sophomorixMailAlias => "FALSE",
                     sophomorixMailList => "FALSE",
                     sophomorixHidden => "FALSE",
                     sophomorixMaxMembers => "0",
                     sophomorixSchoolname => "bsz",
                     member => "BSZ-J1010P01|BSZ-J1010P02|BSZ-D002P01",
                   });
    
    &AD_test_object({ldap=>$ldap,
                     dn=>"CN=d_bsz-xx,OU=device-groups,OU=Devices,OU=bsz,OU=SCHOOLS,".$root_dse,
                     cn=>"d_bsz-xx",
                     name=>"d_bsz-xx",
                     description=>"d_bsz-xx",
                     mail => "d_bsz-xx@".$root_dns,
                     sAMAccountname=>"d_bsz-xx",
                     sophomorixType => "devicegroup",
                     sophomorixStatus=>"P",
                     sophomorixMailAlias => "FALSE",
                     sophomorixMailList => "FALSE",
                     sophomorixHidden => "FALSE",
                     sophomorixMaxMembers => "0",
                     sophomorixSchoolname => "bsz",
                     member => "BSZ-LASER1008|BSZ-LASER1010",
                   });
    
    &AD_devicegroup_count(7,$ldap,$root_dse);
    &AD_room_count(8,$ldap,$root_dse);

    # 18 devices -> 36 dnsNode Objects (incl. reverse lookup)
    &AD_dnsnodes_count_lookup(18,$ldap,$root_dse);
    &AD_dnsnodes_count_reverse(18,$ldap,$root_dse);
    &AD_dnszones_count(9,$ldap,$root_dse);
}


############################################################
# Step 3
############################################################
# --copy-devfile-3
if ($copy_devfile_3==1){
    # copy devices.csv-3
    &run_command("cp -v $wsfile_3 $host_workstation");
    &run_command("cp -v $crfile_3 $host_classroom");
    &run_command("cp -v $wsfile_3_bsz $host_workstation_bsz");
    &run_command("cp -v $crfile_3_bsz $host_classroom_bsz");
}


if ($test_ws_3==1){


}


############################################################
# Step 4
############################################################
# --copy-devfile-4
if ($copy_devfile_4==1){
    # copy devices.csv-4
    &run_command("cp -v $wsfile_4 $host_workstation");
    &run_command("cp -v $crfile_4 $host_classroom");
    &run_command("cp -v $wsfile_4_bsz $host_workstation_bsz");
    &run_command("cp -v $crfile_4_bsz $host_classroom_bsz");
}

if ($test_ws_4==1){


}


############################################################
# Step 5  empty file
############################################################
# --copy-devfile-5
if ($copy_devfile_5==1){
    # copy devices.csv-5
    &run_command("cp -v $wsfile_5 $host_workstation");
    &run_command("cp -v $crfile_5 $host_classroom");
    &run_command("cp -v $wsfile_5_bsz $host_workstation_bsz");
    &run_command("cp -v $crfile_5_bsz $host_classroom_bsz");
}

if ($full==1){
    &run_command("sophomorix-device --sync $all_options");
}

if ($test_ws_5==1){
    ############################################################
    # default-school
    &AD_object_nonexist($ldap,$root_dse,"examaccount","j1008p01");
    &AD_object_nonexist($ldap,$root_dse,"computer","J1008P01\$");
    &AD_test_nondns($res,"j1008p01");
    &AD_object_nonexist($ldap,$root_dse,"examaccount","j1008p02");
    &AD_object_nonexist($ldap,$root_dse,"computer","J1008P02\$");
    &AD_test_nondns($res,"j1008p02");
    &AD_object_nonexist($ldap,$root_dse,"examaccount","laser1008");
    &AD_object_nonexist($ldap,$root_dse,"computer","LASER1008\$");
    &AD_test_nondns($res,"laser1008");
    &AD_object_nonexist($ldap,$root_dse,"group","laser1008");

    &AD_object_nonexist($ldap,$root_dse,"examaccount","j1010p01");
    &AD_object_nonexist($ldap,$root_dse,"computer","J1010P01\$");
    &AD_test_nondns($res,"j1010p01");
    &AD_object_nonexist($ldap,$root_dse,"examaccount","j1010p02");
    &AD_object_nonexist($ldap,$root_dse,"computer","J1010P02\$");
    &AD_test_nondns($res,"j1010p02");
    &AD_object_nonexist($ldap,$root_dse,"examaccount","laser1010");
    &AD_object_nonexist($ldap,$root_dse,"computer","LASER1010\$");
    &AD_test_nondns($res,"laser1010");
    &AD_object_nonexist($ldap,$root_dse,"group","laser1010");

    &AD_object_nonexist($ldap,$root_dse,"examaccount","c001p01");
    &AD_object_nonexist($ldap,$root_dse,"computer","C001P01\$");
    &AD_test_nondns($res,"c001p01");
    &AD_object_nonexist($ldap,$root_dse,"examaccount","c002p01");
    &AD_object_nonexist($ldap,$root_dse,"computer","C002P01\$");
    &AD_test_nondns($res,"c002p01");

    &AD_object_nonexist($ldap,$root_dse,"examaccount","switch01");
    &AD_object_nonexist($ldap,$root_dse,"computer","SWITCH01\$");
    &AD_test_nondns($res,"switch01");
    &AD_object_nonexist($ldap,$root_dse,"examaccount","switch02");
    &AD_object_nonexist($ldap,$root_dse,"computer","SWITCH02\$");
    &AD_test_nondns($res,"switch02");

    &AD_object_nonexist($ldap,$root_dse,"group","bsz-m13");
    &AD_object_nonexist($ldap,$root_dse,"group","d_bsz-m13");
    &AD_object_nonexist($ldap,$root_dse,"group","bsz-m13-t");
    &AD_object_nonexist($ldap,$root_dse,"group","d_bsz-m13-t");
    &AD_object_nonexist($ldap,$root_dse,"group","bsz-xx");
    &AD_object_nonexist($ldap,$root_dse,"group","d_bsz-xx");
    
    ############################################################
    # bsz
    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-j1008p01");
    &AD_object_nonexist($ldap,$root_dse,"computer","BSZ-J1008P01\$");
    &AD_test_nondns($res,"bsz-j1008p01");
    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-j1008p02");
    &AD_object_nonexist($ldap,$root_dse,"computer","BSZ-J1008P02\$");
    &AD_test_nondns($res,"bsz-j1008p02");
    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-laser1008");
    &AD_object_nonexist($ldap,$root_dse,"computer","BSZ-LASER1008\$");
    &AD_test_nondns($res,"bsz-laser1008");
    &AD_object_nonexist($ldap,$root_dse,"group","bsz-laser1008");

    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-j1010p01");
    &AD_object_nonexist($ldap,$root_dse,"computer","BSZ-J1010P01\$");
    &AD_test_nondns($res,"bsz-j1010p01");
    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-j1010p02");
    &AD_object_nonexist($ldap,$root_dse,"computer","BSZ-J1010P02\$");
    &AD_test_nondns($res,"bsz-j1010p02");
    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-laser1010");
    &AD_object_nonexist($ldap,$root_dse,"computer","BSZ-LASER1010\$");
    &AD_test_nondns($res,"bsz-laser1010");
    &AD_object_nonexist($ldap,$root_dse,"group","bsz-laser1010");

    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-d001p01");
    &AD_object_nonexist($ldap,$root_dse,"computer","BSZ-D001P01\$");
    &AD_test_nondns($res,"bsz-d001p01");
    &AD_object_nonexist($ldap,$root_dse,"examaccount","bsz-d002p01");
    &AD_object_nonexist($ldap,$root_dse,"computer","BSZ-D002P01\$");
    &AD_test_nondns($res,"bsz-d002p01");

    &AD_object_nonexist($ldap,$root_dse,"group","m13");
    &AD_object_nonexist($ldap,$root_dse,"group","d_m13");
    &AD_object_nonexist($ldap,$root_dse,"group","m13-t");
    &AD_object_nonexist($ldap,$root_dse,"group","d_m13-t");
    &AD_object_nonexist($ldap,$root_dse,"group","xx");
    &AD_object_nonexist($ldap,$root_dse,"group","d_xx");

    &AD_devicegroup_count(0,$ldap,$root_dse);
    &AD_room_count(0,$ldap,$root_dse);
    &AD_computer_count(0,$ldap,$root_dse);
    &AD_examaccount_count(0,$ldap,$root_dse);

    &AD_dnsnodes_count_lookup(0,$ldap,$root_dse);
    &AD_dnsnodes_count_reverse(0,$ldap,$root_dse);
    &AD_dnszones_count(0,$ldap,$root_dse);
}



############################################################
# Delete Accounts
############################################################


############################################################
# Check deletion
############################################################


## --test-kill-ea  
#if ($test_kill_ea==1){
#
#&AD_object_nonexist($ldap,$root_dse,"user","j1010p01");
#&AD_object_nonexist($ldap,$root_dse,"user","j1010p02");
#
#}

&AD_unbind_admin($ldap);



