]> git.sur5r.net Git - bacula/bacula/blob - regress/tests/bweb-test.pl
regress: Add tests with multi-directors
[bacula/bacula] / regress / tests / bweb-test.pl
1 #!/usr/bin/perl -w
2 use strict;
3
4 =head1 LICENSE
5
6    Bweb - A Bacula web interface
7    Bacula® - The Network Backup Solution
8
9    Copyright (C) 2000-2010 Free Software Foundation Europe e.V.
10
11    The main author of Bweb is Eric Bollengier.
12    The main author of Bacula is Kern Sibbald, with contributions from
13    many others, a complete list can be found in the file AUTHORS.
14
15    This program is Free Software; you can redistribute it and/or
16    modify it under the terms of version two of the GNU General Public
17    License as published by the Free Software Foundation plus additions
18    that are listed in the file LICENSE.
19
20    This program is distributed in the hope that it will be useful, but
21    WITHOUT ANY WARRANTY; without even the implied warranty of
22    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23    General Public License for more details.
24
25    You should have received a copy of the GNU General Public License
26    along with this program; if not, write to the Free Software
27    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
28    02110-1301, USA.
29
30    Bacula® is a registered trademark of Kern Sibbald.
31    The licensor of Bacula is the Free Software Foundation Europe
32    (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zurich,
33    Switzerland, email:ftf@fsfeurope.org.
34
35 =head1 USAGE
36
37     - You need to be in a X session
38     - Install Selenium IDE addon from http://seleniumhq.org/
39     - Install through CPAN WWW::Selenium
40       $ perl -e 'install WWW::Selenium' -MCPAN 
41     - Download Selenium RC (remote control) from  http://seleniumhq.org/
42     - unzip the archive, and start the Selenium server (require java >= 1.5)
43       $ java -jar selenium-server.jar
44     - Load bweb sql file
45     - run backup-bacula-test
46     - uncomment schedule
47     - Start the test
48       $ ./tests/bweb-test.pl
49
50 =cut
51
52 use warnings;
53 use Time::HiRes qw(sleep);
54 use Test::WWW::Selenium;
55 use Test::More "no_plan";
56 use Test::Exception;
57 use Getopt::Long;
58 use scripts::functions;
59 use File::Copy qw/copy move/;
60
61 my ($login, $pass, $verbose, %part, @part, $noclean, $client, $multi);
62 my $url = "http://localhost:9180";
63 my @available = qw/client group location run missingjob media overview config/;
64
65 GetOptions ("login=s"   => \$login,
66             "passwd=s"  => \$pass,
67             "url|u=s"   => \$url,
68             "module=s@" => \@part,
69             "verbose"   => \$verbose,
70             "nocleanup" => \$noclean,
71             "client=s"  => \$client,
72             "dirs"      => \$multi,
73             );
74
75 die "Usage: $0 --url http://.../cgi-bin/bweb/bweb.pl [-m module] [-n]"
76     unless ($url);
77
78 if (scalar(@part)) {
79     %part = map { $_ => 1 } @part;
80 } else {
81     %part = map { $_ => 1 } @available;
82 }
83
84 if ($multi) {
85     $part{multidir} = 1;
86 }
87
88 if (!$noclean) {
89     cleanup();
90     `scripts/copy-confs`;
91     `sed -i 's/# Sched/ Sched/' $conf/bacula-dir.conf`;
92     start_bacula();
93 }
94
95 my $sel = Test::WWW::Selenium->new( host => "localhost", 
96                                     port => 4444, 
97                                     browser => "*firefox", 
98                                     browser_url => $url );
99
100 $sel->open_ok("/cgi-bin/bweb/bweb.pl?");
101 $sel->set_speed(100);
102
103 if ($part{multidir}) {
104     # if the current bconsole.conf doesn't contain two sections, we
105     # create it
106     if (!get_resource("$conf/bconsole.conf", "Director", "bweb-dir")) {
107         copy("$conf/bconsole.conf", "$tmp/bconsole.conf.$$");
108         my $r = get_resource("$conf/bconsole.conf", "Director", ".+?");
109         open(FP, ">>$conf/bconsole.conf");
110         $r =~ s/Name = .+$/Name = bweb1-dir/m;
111         print FP $r;
112         $r =~ s/Name = .+$/Name = bweb2-dir/m;
113         print FP $r;
114         close(FP);
115     }
116     $sel->open_ok("/cgi-bin/bweb/bweb.pl");
117     $sel->click_ok("link=Configuration");
118     $sel->wait_for_page_to_load_ok("30000");
119     $sel->is_text_present_ok("Main Configuration");
120     
121     # create subconf
122     $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
123     $sel->wait_for_page_to_load_ok("30000");
124     $sel->is_text_present_ok("Unnamed");
125
126     $sel->type_ok("name", "MyBweb");
127     $sel->type_ok("new_dir", "bweb1-dir");
128  
129     $sel->type_ok("stat_job_table", "JobHisto");
130     $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
131     $sel->wait_for_page_to_load_ok("30000");
132     $sel->is_text_present_ok("MyBweb");
133     $sel->is_text_present_ok("bweb1-dir");
134
135     $sel->click_ok("link=Main");
136     $sel->wait_for_page_to_load_ok("30000");
137     $sel->is_text_present_ok("Directors");
138     $sel->click_ok("link=MyBweb");
139     $sel->wait_for_page_to_load_ok("30000");
140     $sel->is_text_present_ok("Informations on MyBweb");
141 }
142
143 if ($part{client}) {
144 # test client
145     $sel->click_ok("link=Main");
146     $sel->wait_for_page_to_load_ok("30000");
147     $sel->is_text_present_ok("Running Jobs");
148
149     $sel->click_ok("link=Clients");
150     $sel->wait_for_page_to_load_ok("30000");
151     $client = $sel->get_text("//tr[\@id='even_row']/td[1]");
152
153     $sel->click_ok("//input[\@name='client']"); # click the first client
154     $sel->click_ok("//button[\@name='action' and \@value='client_status']");
155     $sel->wait_for_page_to_load_ok("30000");
156
157     $sel->is_text_present_ok("Command output");
158     $sel->click_ok("link=Clients");
159     $sel->wait_for_page_to_load_ok("30000");
160
161     $sel->is_text_present_ok("Running Jobs"); # This message is in client status
162 }
163
164 if ($part{media}) {
165 # add media
166     $sel->click_ok("link=Main");
167     $sel->wait_for_page_to_load_ok("30000");
168     $sel->is_text_present_ok("Running Jobs");
169
170     $sel->click_ok("link=Add Media");
171     $sel->wait_for_page_to_load_ok("30000");
172
173     $sel->select_ok("pool", "label=Scratch");
174     $sel->select_ok("storage", "label=File");
175     $sel->type_ok("nb", "10");
176     $sel->click_ok("//button[\@name='action']"); # create 10 volumes
177     $sel->wait_for_page_to_load_ok("30000");
178
179   WAIT: {
180       for (1..60) {
181           if (eval { $sel->is_text_present("Select") }) { pass; last WAIT }
182         sleep(1);
183       }
184       fail("timeout");
185 }
186     $sel->click_ok("link=All Media");
187     $sel->wait_for_page_to_load_ok("30000");
188
189     $sel->is_text_present_ok("Vol0001");
190     $sel->is_text_present_ok("Vol0010");
191     $sel->select_ok("mediatype", "label=File");
192     $sel->select_ok("volstatus", "label=Append");
193     $sel->select_ok("pool", "label=Scratch");
194     $sel->click_ok("//button[\@name='action']");
195     $sel->wait_for_page_to_load_ok("30000");
196
197     $sel->is_text_present_ok("Vol0001");
198     $sel->click_ok("media");
199     $sel->click_ok("//button[\@name='action' and \@value='update_media']");
200     $sel->wait_for_page_to_load_ok("30000");
201
202     $sel->select_ok("volstatus", "label=Archive");
203     $sel->select_ok("enabled", "label=no");
204     $sel->click_ok("//button[\@name='action']");
205     $sel->wait_for_page_to_load_ok("30000");
206
207     $sel->click_ok("arrow_0");
208     $sel->is_text_present_ok("New Volume status is: Archive");
209     $sel->click_ok("link=All Media");
210     $sel->wait_for_page_to_load_ok("30000");
211
212     $sel->is_text_present_ok("Archive");
213     $sel->select_ok("volstatus", "label=Append");
214     $sel->click_ok("//button[\@name='action']");
215     $sel->wait_for_page_to_load_ok("30000");
216
217     $sel->click_ok("media");
218     $sel->click_ok("//button[\@name='action' and \@value='media_zoom']");
219     $sel->wait_for_page_to_load_ok("30000");
220
221     $sel->is_text_present_ok("Volume Infos");
222     $sel->click_ok("//button[\@name='action' and \@value='purge']");
223     $sel->wait_for_page_to_load_ok("30000");
224
225     $sel->is_text_present_ok("Marking it purged");
226 }
227
228 if ($part{missingjob}) {
229 # view missing jobs
230     $sel->click_ok("link=Main");
231     $sel->wait_for_page_to_load_ok("30000");
232     $sel->is_text_present_ok("Running Jobs");
233
234     $sel->click_ok("link=Missing Jobs");
235     $sel->wait_for_page_to_load_ok("30000");
236
237     $sel->is_text_present_ok("backup");
238     $sel->is_text_present_ok("BackupCatalog");
239     $sel->click_ok("job");
240     $sel->click_ok("//input[\@name='job' and \@value='BackupCatalog']");
241     $sel->click_ok("//button[\@name='action' and \@value='job']");
242     $sel->wait_for_page_to_load_ok("30000");
243
244     $sel->body_text_isnt("BackupCatalog");
245 }
246
247 if ($part{run}) {
248 # run a new job
249     $sel->click_ok("link=Main");
250     $sel->wait_for_page_to_load_ok("30000");
251     $sel->is_text_present_ok("Running Jobs");
252
253     $sel->click_ok("link=Defined Jobs");
254     $sel->wait_for_page_to_load_ok("30000");
255
256     $sel->select_ok("job", "label=backup");
257     $sel->is_text_present_ok("backup");
258     $sel->click_ok("//button[\@name='action' and \@value='run_job_mod']");
259     $sel->wait_for_page_to_load_ok("30000");
260
261     $sel->is_text_present_ok("Default");
262     $sel->is_text_present_ok("Full Set");
263     $sel->is_text_present_ok("Incremental");
264     $sel->click_ok("//button[\@name='action']");
265     $sel->wait_for_page_to_load_ok("30000");
266
267   WAIT: {
268       for (1..60) {
269           if (eval { $sel->is_text_present("Start Backup JobId") }) { pass; last WAIT }
270           sleep(1);
271       }
272     fail("timeout");
273     }
274     $sel->is_text_present_ok("Log: backup on");
275     $sel->click_ok("//button[\@name='action']");
276     $sel->wait_for_page_to_load_ok("30000");
277
278   WAIT: {
279       for (1..60) {
280           if (eval { $sel->is_text_present("Termination: Backup OK") }) { pass; last WAIT }
281           sleep(1);
282       }
283       fail("timeout");
284     }
285     my $volume = $sel->get_text("//tr[\@id='even_row']/td[12]");
286     $sel->click_ok("//button[\@name='action' and \@value='media']");
287     $sel->wait_for_page_to_load_ok("30000");
288
289     my $volume_found = $sel->get_text("//tr[\@id='even_row']/td[1]");
290     $sel->click_ok("media");
291     $sel->text_is("//tr[\@id='even_row']/td[5]", "Append");
292     $sel->click_ok("//button[\@name='action' and \@value='media_zoom']");
293     $sel->wait_for_page_to_load_ok("30000");
294
295     $sel->is_text_present_ok("Volume Infos");
296     $sel->click_ok("//img[\@title='terminated normally']");
297     $sel->wait_for_page_to_load_ok("30000");
298
299     $sel->click_ok("//button[\@name='action' and \@value='fileset_view']");
300     $sel->wait_for_page_to_load_ok("30000");
301
302     $sel->is_text_present_ok("FileSet Full Set");
303     $sel->is_text_present_ok("What is included:");
304     $sel->is_text_present_ok("/regress/build");
305     $sel->go_back_ok();
306     $sel->wait_for_page_to_load_ok("30000");
307
308     $sel->click_ok("//button[\@name='action' and \@value='run_job_mod']");
309     $sel->wait_for_page_to_load_ok("30000");
310
311     $sel->is_element_present_ok("level");
312     $sel->selected_value_is("name=level", "Full");
313     $sel->selected_label_is("name=fileset", "Full Set");
314     $sel->selected_label_is("name=job", "backup");
315     $sel->click_ok("//button[\@name='action' and \@value='fileset_view']");
316     $sel->wait_for_page_to_load_ok("30000");
317
318     $sel->is_text_present_ok("FileSet Full Set");
319     $sel->is_text_present_ok("/regress/build");
320 }
321
322 if ($part{group}) {
323 # test group
324     $sel->click_ok("link=Main");
325     $sel->wait_for_page_to_load_ok("30000");
326     $sel->is_text_present_ok("Running Jobs");
327
328     $sel->click_ok("link=Groups");
329     $sel->wait_for_page_to_load_ok("30000");
330
331     $sel->text_is("//h1", "Groups");
332     $sel->click_ok("//button[\@name='action' and \@value='groups_edit']");
333     $sel->wait_for_page_to_load_ok("30000");
334
335     $sel->type_ok("newgroup", "All");
336     $sel->select_ok("name=client", "index=0");
337     $sel->click_ok("//button[\@name='action' and \@value='groups_save']");
338     $sel->wait_for_page_to_load_ok("30000");
339
340     $sel->is_text_present_ok("All");
341     $sel->click_ok("//input [\@name='client_group' and \@value='All']");
342     $sel->click_ok("//button[3]");
343     $sel->wait_for_page_to_load_ok("30000");
344
345     $sel->is_text_present_ok("Group: 'All'");
346     $sel->selected_index_is("name=client", "0");
347     $sel->click_ok("//button[\@name='action' and \@value='groups_save']");
348     $sel->wait_for_page_to_load_ok("30000");
349
350     $sel->click_ok("//input[\@name='client_group' and \@value='All']");
351     $sel->click_ok("//button[4]");
352     $sel->wait_for_page_to_load_ok("30000");
353
354     $sel->click_ok("//input[\@name='client']");
355     $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
356     $sel->wait_for_page_to_load_ok("30000");
357
358     $sel->is_text_present_ok("All");
359     $sel->click_ok("link=Groups");
360     $sel->wait_for_page_to_load_ok("30000");
361
362     $sel->click_ok("//button[\@name='action' and \@value='groups_edit']");
363     $sel->wait_for_page_to_load_ok("30000");
364
365     $sel->type_ok("newgroup", "Empty");
366     $sel->click_ok("//button[\@name='action']");
367     $sel->wait_for_page_to_load_ok("30000");
368
369     $sel->click_ok("client_group");
370     $sel->is_text_present_ok("Empty");
371     $sel->click_ok("//button[\@name='action' and \@value='client']");
372     $sel->wait_for_page_to_load_ok("30000");
373
374     $sel->click_ok("//input[\@name='client']");
375     $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
376     $sel->wait_for_page_to_load_ok("30000");
377
378     $sel->click_ok("link=Groups");
379     $sel->wait_for_page_to_load_ok("30000");
380
381     $sel->click_ok("//input[\@name='client_group' and \@value='Empty']");
382     $sel->click_ok("//button[\@name='action' and \@value='groups_del']");
383     ok($sel->get_confirmation() =~ /^Do you want to delete this group[\s\S]$/);
384     $sel->click_ok("link=Groups");
385     $sel->wait_for_page_to_load_ok("30000");
386
387     $sel->click_ok("//button[\@name='action']");
388     $sel->wait_for_page_to_load_ok("30000");
389
390     $sel->type_ok("newgroup", "Empty");
391     $sel->click_ok("//button[\@name='action']");
392     $sel->wait_for_page_to_load_ok("30000");
393
394     $sel->is_text_present_ok("Empty");
395     $sel->click_ok("//input[\@name='client_group' and \@value='All']");
396     $sel->click_ok("//button[\@name='action' and \@value='client']");
397     $sel->wait_for_page_to_load_ok("30000");
398
399     $sel->click_ok("//input[\@name='client']");
400     $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
401     $sel->wait_for_page_to_load_ok("30000");
402
403     ok(not $sel->is_checked("//input[\@name='client_group' and \@value='Empty']"));
404     $sel->click_ok("link=Group Statistics");
405     $sel->wait_for_page_to_load_ok("30000");
406
407     $sel->is_text_present_ok("All");
408     $sel->is_text_present_ok("Empty");
409     $sel->click_ok("link=Groups");
410     $sel->wait_for_page_to_load_ok("30000");
411
412     $sel->click_ok("//input[\@name='client_group' and \@value='Empty']");
413     $sel->click_ok("document.forms[1].elements[4]");
414     $sel->wait_for_page_to_load_ok("30000");
415
416     $sel->type_ok("newgroup", "EmptyGroup");
417     $sel->click_ok("//button[\@name='action']");
418     $sel->wait_for_page_to_load_ok("30000");
419
420     $sel->is_text_present_ok("EmptyGroup");
421 }
422
423 if ($part{location}) {
424 # test location
425     $sel->click_ok("link=Main");
426     $sel->wait_for_page_to_load_ok("30000");
427     $sel->is_text_present_ok("Running Jobs");
428
429     $sel->click_ok("link=Locations");
430     $sel->wait_for_page_to_load_ok("30000");
431
432     $sel->click_ok("//button[\@name='action' and \@value='location_add']");
433     $sel->wait_for_page_to_load_ok("30000");
434
435     $sel->type_ok("location", "Bank");
436     $sel->click_ok("//button[\@name='action']"); # save
437     $sel->wait_for_page_to_load_ok("30000");
438
439     $sel->is_text_present_ok("Bank");
440     $sel->click_ok("location");
441     $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
442     $sel->wait_for_page_to_load_ok("30000");
443
444     $sel->type_ok("cost", "100");
445     $sel->is_text_present_ok("Location: Bank");
446     $sel->click_ok("//button[\@name='action']");
447     $sel->wait_for_page_to_load_ok("30000");
448
449     $sel->is_text_present_ok("100");
450     $sel->is_element_present_ok("//img[\@src='/bweb/inflag1.png']");
451     $sel->click_ok("location");
452     $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
453     $sel->wait_for_page_to_load_ok("30000");
454
455     $sel->select_ok("enabled", "label=no");
456     $sel->click_ok("//button[\@name='action']");
457     $sel->wait_for_page_to_load_ok("30000");
458
459     $sel->is_element_present_ok("//img[\@src='/bweb/inflag0.png']");
460     $sel->click_ok("location");
461     $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
462     $sel->wait_for_page_to_load_ok("30000");
463
464     $sel->select_ok("enabled", "label=archived");
465     $sel->click_ok("//button[\@name='action']");
466     $sel->wait_for_page_to_load_ok("30000");
467
468     $sel->is_element_present_ok("//img[\@src='/bweb/inflag2.png']");
469     $sel->click_ok("location");
470     $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
471     $sel->wait_for_page_to_load_ok("30000");
472
473     $sel->type_ok("newlocation", "Office");
474     $sel->click_ok("//button[\@name='action']");
475     $sel->wait_for_page_to_load_ok("30000");
476
477     $sel->is_text_present_ok("Office");
478     $sel->click_ok("link=All Media");
479     $sel->wait_for_page_to_load_ok("30000");
480
481     $sel->click_ok("media");
482     $sel->click_ok("//button[\@name='action' and \@value='update_media']");
483     $sel->wait_for_page_to_load_ok("30000");
484
485     $sel->select_ok("location", "label=Office");
486     $sel->click_ok("//button[\@name='action']");
487     $sel->wait_for_page_to_load_ok("30000");
488
489     $sel->selected_value_is("location", "Office");
490     $sel->click_ok("//button[\@name='action' and \@value='media']");
491     $sel->wait_for_page_to_load_ok("30000");
492
493     $sel->select_ok("location", "label=Office");
494     $sel->click_ok("//button[\@name='action']");
495     $sel->wait_for_page_to_load_ok("30000");
496
497     $sel->body_text_isnt("Vol0010");
498     $sel->click_ok("link=Locations");
499     $sel->wait_for_page_to_load_ok("30000");
500
501     $sel->click_ok("location");
502     $sel->click_ok("//button[\@name='action' and \@value='location_del']");
503     ok($sel->get_confirmation() =~ /^Do you want to remove this location[\s\S]$/);
504     $sel->wait_for_page_to_load_ok("30000");
505
506     $sel->is_text_present_ok("Sorry, the location must be empty");
507     $sel->click_ok("link=Locations");
508     $sel->wait_for_page_to_load_ok("30000");
509
510     $sel->click_ok("//button[\@name='action']");
511     $sel->wait_for_page_to_load_ok("30000");
512
513     $sel->type_ok("location", "OtherPlace");
514     $sel->click_ok("//button[\@name='action']");
515     $sel->wait_for_page_to_load_ok("30000");
516
517     $sel->click_ok("location");
518     $sel->click_ok("//button[\@name='action' and \@value='media']");
519     $sel->wait_for_page_to_load_ok("30000");
520
521     $sel->click_ok("media");
522     $sel->click_ok("//button[\@name='action' and \@value='update_media']");
523     $sel->wait_for_page_to_load_ok("30000");
524
525     $sel->select_ok("location", "label=OtherPlace");
526     $sel->click_ok("//button[\@name='action']");
527     $sel->wait_for_page_to_load_ok("30000");
528
529     $sel->click_ok("link=Locations");
530     $sel->wait_for_page_to_load_ok("30000");
531
532     $sel->click_ok("location");
533     $sel->click_ok("//button[\@name='action' and \@value='location_del']");
534     ok($sel->get_confirmation() =~ /^Do you want to remove this location[\s\S]$/);
535     $sel->wait_for_page_to_load_ok("30000");
536
537     $sel->body_text_isnt("Office");
538 }
539
540 if ($part{overview}) {
541     unless ($client) {
542         $sel->click_ok("link=Clients");
543         $sel->wait_for_page_to_load_ok("30000");
544         $client = $sel->get_text("//tr[\@id='even_row']/td[1]");
545     }
546     $sel->click_ok("link=Main");
547     $sel->wait_for_page_to_load_ok("30000");
548     $sel->is_text_present_ok("Running Jobs");
549
550     $sel->click_ok("link=Jobs overview");
551     $sel->wait_for_page_to_load_ok("30000");
552
553     $sel->is_text_present_ok("All");
554     $sel->click_ok("link=All");
555     $sel->wait_for_page_to_load_ok("30000");
556
557     $sel->click_ok("link=$client");
558     $sel->wait_for_page_to_load_ok("30000");
559
560     $sel->is_text_present_ok("backup");
561     $sel->is_text_present_ok("Full Set");
562 }
563
564 if ($part{config}) {
565     my ($dbi, $user, $pass, $histo);
566     $sel->open_ok("/cgi-bin/bweb/bweb.pl");
567     $sel->click_ok("link=Configuration");
568     $sel->wait_for_page_to_load_ok("30000");
569     $sel->is_text_present_ok("Main Configuration");
570
571     $sel->click_ok("//button[\@name='action' and \@value='edit_main_conf']");
572     $sel->wait_for_page_to_load_ok("30000");
573     $sel->is_text_present_ok("Main Configuration");
574     
575     $dbi = $sel->get_value("dbi");
576     $user = $sel->get_value("user");
577     $pass = $sel->get_value("password");
578     $histo = $sel->get_value("stat_job_table");
579
580     $sel->type_ok("dbi", "dbi:Pg:database=dbi1");
581     $sel->type_ok("user", "user1");
582     $sel->type_ok("password", "password1");
583
584     $sel->type_ok("stat_job_table", ($histo eq 'Job')?"JobHisto":"Job");
585
586     $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
587     $sel->wait_for_page_to_load_ok("30000");
588
589     $sel->click_ok("//button[\@name='action' and \@value='edit_main_conf']");
590     $sel->wait_for_page_to_load_ok("30000");
591
592     is($sel->get_value("dbi"), "dbi:Pg:database=dbi1", "verify dbi");
593     is($sel->get_value("user"), "user1", "verify user");
594     is($sel->get_value("password"), "password1", "verify passwd");
595
596     $sel->type_ok("dbi", $dbi);
597     $sel->type_ok("user", $user);
598     $sel->type_ok("password", $pass);
599     $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
600     $sel->wait_for_page_to_load_ok("30000");
601
602     $sel->is_text_present_ok("Main Configuration");
603
604     # test create conf
605     $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
606     $sel->wait_for_page_to_load_ok("30000");
607     $sel->is_text_present_ok("Unnamed");
608
609     $sel->type_ok("name", "MyBweb2");
610     $sel->type_ok("new_dir", "bweb2-dir");
611  
612     $sel->type_ok("dbi", $dbi);
613     $sel->type_ok("user", $user);
614     $sel->type_ok("password", $pass);
615  
616     $sel->type_ok("stat_job_table", "JobHisto");
617     $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
618     $sel->wait_for_page_to_load_ok("30000");
619     $sel->is_text_present_ok("MyBweb2");
620     $sel->is_text_present_ok("bweb2-dir");
621
622     # test create other conf
623     $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
624     $sel->wait_for_page_to_load_ok("30000");
625     $sel->is_text_present_ok("Main Configuration");
626
627     $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
628     $sel->wait_for_page_to_load_ok("30000");
629     $sel->is_text_present_ok("Unnamed");
630
631     $sel->type_ok("name", "MyBweb3");
632     $sel->type_ok("new_dir", "bweb3-dir");
633     $sel->type_ok("user", "test");
634
635     $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
636     $sel->wait_for_page_to_load_ok("30000");
637     $sel->is_text_present_ok("MyBweb3");
638
639     $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
640     $sel->wait_for_page_to_load_ok("30000");
641     $sel->is_text_present_ok("Main Configuration");
642     $sel->is_text_present_ok("MyBweb3");
643     $sel->is_text_present_ok("MyBweb2");
644
645     # test rename
646     $sel->click_ok("//input[\@name='dir' and \@value='bweb2-dir']");
647     $sel->click_ok("//button[\@name='action' and \@value='view_conf']");
648     $sel->wait_for_page_to_load_ok("30000");
649     $sel->is_text_present_ok("MyBweb2");
650     $sel->click_ok("//button[\@name='action' and \@value='edit_conf']");
651     $sel->wait_for_page_to_load_ok("30000");
652     $sel->is_text_present_ok("MyBweb2");
653     $sel->type_ok("new_dir", "bweb-dir");
654     $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
655     $sel->wait_for_page_to_load_ok("30000");
656     $sel->is_text_present_ok("MyBweb2");
657     $sel->is_text_present_ok("bweb-dir");
658     
659     # test delete
660     $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
661     $sel->wait_for_page_to_load_ok("30000");
662     $sel->is_text_present_ok("MyBweb3");
663
664     $sel->click_ok("//input[\@name='dir' and \@value='bweb3-dir']");
665     $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
666     ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
667     $sel->wait_for_page_to_load_ok("30000");
668     $sel->body_text_isnt("MyBweb3");
669     $sel->is_text_present_ok("MyBweb2");
670
671     $sel->click_ok("//input[\@name='dir' and \@value='bweb-dir']");
672     $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
673     ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
674     $sel->wait_for_page_to_load_ok("30000");
675     $sel->body_text_isnt("MyBweb2");
676 }
677
678 if ($part{multidir}) {
679     # cleanup
680     $sel->click_ok("link=Configuration");
681     $sel->wait_for_page_to_load_ok("30000");
682     $sel->click_ok("//input[\@name='dir' and \@value='bweb1-dir']");
683     $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
684     ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
685     $sel->wait_for_page_to_load_ok("30000");
686     $sel->body_text_isnt("MyBweb");
687
688     if (-f "$tmp/bconsole.conf.$$") {
689         move("$tmp/bconsole.conf", "$bin/bconsole.conf");
690     }
691 }