1use strict;
2use warnings;
3
4use Test::More tests => 97;
5
6use Rex -feature => '0.31';
7use Rex::Group;
8use Symbol;
9
10delete $ENV{REX_USER};
11
12user("root3");
13password("pass3");
14private_key("priv.key3");
15public_key("pub.key3");
16
17no warnings;
18$::FORCE_SERVER = "server1 foo[01..10]";
19use warnings;
20
21group( "forcetest1", "bla1", "blah2", "bla1" );
22
23task( "tasktest3", "group", "forcetest1", sub { } );
24
25my @servers = Rex::Group->get_group("forcetest1");
26is( $servers[0], "bla1", "forceserver - 1" );
27ok( !defined $servers[2], "group - servername uniq" );
28
29my $task       = Rex::TaskList->create()->get_task("tasktest3");
30my @all_server = @{ $task->server };
31
32is( $all_server[0],  "server1", "forceserver - task - 0" );
33is( $all_server[1],  "foo01",   "forceserver - task - 1" );
34is( $all_server[5],  "foo05",   "forceserver - task - 5" );
35is( $all_server[10], "foo10",   "forceserver - task - 10" );
36
37for my $server (@all_server) {
38  my $auth = $task->merge_auth($server);
39  is( $auth->{user},        "root3",     "merge_auth - user" );
40  is( $auth->{password},    "pass3",     "merge_auth - pass" );
41  is( $auth->{public_key},  "pub.key3",  "merge_auth - pub" );
42  is( $auth->{private_key}, "priv.key3", "merge_auth - priv" );
43}
44
45auth( for => "tasktest3", user => "jan", password => "foo" );
46for my $server (@all_server) {
47  my $auth = $task->merge_auth($server);
48  is( $auth->{user},        "jan",       "merge_auth - user" );
49  is( $auth->{password},    "foo",       "merge_auth - pass" );
50  is( $auth->{public_key},  "pub.key3",  "merge_auth - pub" );
51  is( $auth->{private_key}, "priv.key3", "merge_auth - priv" );
52}
53
54group( "duplicated_by_list", "s[1..3,2..4]" );
55my @cleaned_servers = Rex::Group->get_group("duplicated_by_list");
56is_deeply [ $cleaned_servers[0]->get_servers ], [
57  qw/
58    s1 s2 s3 s4
59    /
60  ],
61  "duplicated_by_list";
62
63# test custom functions
64
65my $server = $servers[0];
66
67my $function_name   = 'dummy';
68my $function_result = $function_name . ' result';
69
70ok( $server->function( $function_name, sub { return $function_result } ),
71  'registering custom function' );
72
73my $function_ref = qualify_to_ref( $function_name, $server );
74is( *{$function_ref}->(), $function_result, 'calling custom function' );
75