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