summaryrefslogblamecommitdiffstats
path: root/src/config-db/t/20-client_system_ref.t
blob: 93b869502143902ea67a45300e99ec9b781de0de (plain) (tree)
1
2
3
4
5

                           


             





















                                                                              



                                                                         


                                                         



                                                                         


   

                                                 

   

                                                               

   

                                                            


                                                                  

                                                            

   

                                                               

   

                                                            

   

                                                            



                                                                  

                                                         

   

                                                            

   

                                                            


                                                                  

                                                            



                                                                   

                                                            

   

                                                            


                                                                  

                                                            




                                                                   

                                                         

   

                                                            

   

                                                            

   

                                                            



                                                                  

                                                          

   

                                                            


   

                                                              

   

                                                            

   

                                                  

   

                                                            
  

                      


                                

   

                                                    

   

                                                            


                                                                        

                                                            

   

                                                            

   

                                                            

   

                                                            

   

                                                            

   

                                                            



                                                                  

                                                              

   

                                                            

   

                                                            

   

                                                            

  
                        
use Test::More qw(no_plan);

use strict;
use warnings;

use lib '/opt/openslx/lib';

# basic init
use OpenSLX::ConfigDB;

my $configDB = OpenSLX::ConfigDB->new;
$configDB->connect();

# fetch clients & systems
my @clients = sort { $a->{id} <=> $b->{id} } $configDB->fetchClientByFilter();
is(@clients, 3, 'should have got 3 clients (default, 1 and 3)');
my $defaultClient = shift @clients;
my $client1 = shift @clients;
my $client3 = shift @clients;

my @systems = sort { $a->{id} <=> $b->{id} } $configDB->fetchSystemByFilter();
is(@systems, 3, 'should have got 3 systems (default, 1 and 3)');
my $defaultSystem = shift @systems;
my $system1 = shift @systems;
my $system3 = shift @systems;

foreach my $client ($defaultClient, $client1, $client3) {
    is(
        my @systemIDs = $configDB->fetchSystemIDsOfClient($client->{id}),
        0, "client $client->{id} has no system-IDs yet"
    );
}

foreach my $system ($defaultSystem, $system1, $system3) {
    is(
        my @clientIDs = $configDB->fetchClientIDsOfSystem($system->{id}),
        0, "system $system->{id} has no client-IDs yet"
    );
}

ok(
    $configDB->addSystemIDsToClient(1, [3]),
    'system-ID 3 has been associated to client 1'
);
is(
    my @systemIDs = sort($configDB->fetchSystemIDsOfClient(0)),
    0, "default client should have no system-ID"
);
is(
    @systemIDs = sort($configDB->fetchSystemIDsOfClient(1)),
    1, "client 1 should have one system-ID"
);
is($systemIDs[0], 3, "first system of client 1 should have ID 3");
is(
    @systemIDs = sort($configDB->fetchSystemIDsOfClient(3)),
    0, "client 3 should have no system-ID"
);
is(
    my @clientIDs = sort($configDB->fetchClientIDsOfSystem(0)),
    0, "default system should have no client-IDs"
);
is(
    @clientIDs = sort($configDB->fetchClientIDsOfSystem(1)),
    0, "system 1 should have no client-IDs"
);
is(
    @clientIDs = sort($configDB->fetchClientIDsOfSystem(3)),
    1, "system 3 should have one client-ID"
);
is($clientIDs[0], 1, "first client of system 3 should have ID 1");

ok(
    $configDB->addSystemIDsToClient(3, [1,3,3,1,3]),
    'system-IDs 1 and 3 have been associated to client 3'
);
is(
    @systemIDs = sort($configDB->fetchSystemIDsOfClient(0)),
    0, "default client should have no system-IDs"
);
is(
    @systemIDs = sort($configDB->fetchSystemIDsOfClient(1)),
    1, "client 1 should have one system-ID"
);
is($systemIDs[0], 3, "first system of client 1 should have ID 3");
is(
    @systemIDs = sort($configDB->fetchSystemIDsOfClient(3)),
    2, "client 3 should have two system-IDs"
);
is($systemIDs[0], 1, "first system of client 3 should have ID 1");
is($systemIDs[1], 3, "second system of client 3 should have ID 3");
is(
    @clientIDs = sort($configDB->fetchClientIDsOfSystem(0)),
    0, "default system should have no client-ID"
);
is(
    @clientIDs = sort($configDB->fetchClientIDsOfSystem(1)),
    1, "system 1 should have one client-ID"
);
is($clientIDs[0], 3, "first client of system 1 should have ID 3");
is(
    @clientIDs = sort($configDB->fetchClientIDsOfSystem(3)),
    2, "system 3 should have two client-IDs"
);
is($clientIDs[0], 1, "first client of system 3 should have ID 1");
is($clientIDs[1], 3, "second client of system 3 should have ID 3");

ok(
    $configDB->setClientIDsOfSystem(3, []),
    'client-IDs of system 3 have been set to empty array'
);
is(
    @clientIDs = sort($configDB->fetchClientIDsOfSystem(3)),
    0, "system 3 should have no client-IDs"
);
is(
    @systemIDs = sort($configDB->fetchSystemIDsOfClient(1)),
    0, "client 1 should have no system-IDs"
);
is(
    @systemIDs = sort($configDB->fetchSystemIDsOfClient(3)),
    1, "client 3 should have one system-ID"
);
is($systemIDs[0], 1, "first system of client 3 should have ID 1");

ok(
    $configDB->addSystemIDsToClient(1, [0]),
    'associating the default system should have no effect'
);
is(
    @systemIDs = sort($configDB->fetchSystemIDsOfClient(1)),
    0, "client 1 should still have no system-ID"
);

ok(
    $configDB->removeClientIDsFromSystem(1, [1]),
    'removing an unassociated client-ID should have no effect'
);
is(
    @clientIDs = sort($configDB->fetchClientIDsOfSystem(1)),
    1, "system 1 should have one client-ID"
);
ok(
    $configDB->removeClientIDsFromSystem(1, [3]),
    'removing an associated client-ID should work'
);
is(
    @clientIDs = sort($configDB->fetchClientIDsOfSystem(1)),
    0, "system 1 should have no more client-ID"
);

$configDB->addSystem({
    'name'      => 'sys-4',
    'export_id' => 1,
    'comment'   => 'shortlived',
});
ok(
    $configDB->addClientIDsToSystem(4, [0]),
    'default client has been associated to system 4'
);
is(
    @systemIDs = sort($configDB->fetchSystemIDsOfClient(0)),
    1, "default client should have one system-ID"
);
is($systemIDs[0], 4, "first system of default client should have ID 4");
is(
    @systemIDs = sort($configDB->fetchSystemIDsOfClient(1)),
    0, "client 1 should have no system-ID"
);
is(
    @systemIDs = sort($configDB->fetchSystemIDsOfClient(3)),
    0, "client 3 should have no system-ID"
);
is(
    @clientIDs = sort($configDB->fetchClientIDsOfSystem(0)),
    0, "default system should have no client-IDs"
);
is(
    @clientIDs = sort($configDB->fetchClientIDsOfSystem(1)),
    0, "system 1 should have no client-ID"
);
is(
    @clientIDs = sort($configDB->fetchClientIDsOfSystem(3)),
    0, "system 3 should have no client-IDs"
);
is(
    @clientIDs = sort($configDB->fetchClientIDsOfSystem(4)),
    1, "system 4 should have one client-ID"
);
is($clientIDs[0], 0, "first client of system 4 should have ID 0");

ok(
    $configDB->removeSystemIDsFromClient(0, [6]),
    'removing an unassociated system-ID should have no effect'
);
is(
    @clientIDs = sort($configDB->fetchSystemIDsOfClient(0)),
    1, "default client should have one system-ID"
);
ok(
    $configDB->removeSystem(4),
    'removing a system should drop client associations, too'
);
is(
    @clientIDs = sort($configDB->fetchSystemIDsOfClient(0)),
    0, "default client should have no more system-ID"
);

$configDB->disconnect();