]> git.sur5r.net Git - bacula/bacula/blob - regress/tests/bweb-test.pl
baculum: Tweak trim whitespaces from joblog
[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
222     $sel->click_ok("//button[\@name='action' and \@value='prune']");
223     $sel->wait_for_page_to_load_ok("30000");
224     $sel->is_text_present_ok("The current Volume retention period");
225
226     $sel->go_back_ok();
227     $sel->is_text_present_ok("Volume Infos");
228     $sel->click_ok("//button[\@name='action' and \@value='purge']");
229     $sel->wait_for_page_to_load_ok("30000");
230
231     $sel->is_text_present_ok("Marking it purged");
232 }
233
234 if ($part{missingjob}) {
235 # view missing jobs
236     $sel->click_ok("link=Main");
237     $sel->wait_for_page_to_load_ok("30000");
238     $sel->is_text_present_ok("Running Jobs");
239
240     $sel->click_ok("link=Missing Jobs");
241     $sel->wait_for_page_to_load_ok("30000");
242
243     $sel->is_text_present_ok("BackupClient1");
244     $sel->is_text_present_ok("BackupCatalog");
245     $sel->click_ok("job");
246     $sel->click_ok("//input[\@name='job' and \@value='BackupCatalog']");
247     $sel->click_ok("//button[\@name='action' and \@value='job']");
248     $sel->wait_for_page_to_load_ok("30000");
249
250     $sel->body_text_isnt("BackupCatalog");
251 }
252
253 if ($part{run}) {
254 # run a new job
255     $sel->click_ok("link=Main");
256     $sel->wait_for_page_to_load_ok("30000");
257     $sel->is_text_present_ok("Running Jobs");
258
259     $sel->click_ok("link=Defined Jobs");
260     $sel->wait_for_page_to_load_ok("30000");
261
262     $sel->select_ok("job", "label=BackupClient1");
263     $sel->is_text_present_ok("BackupClient1");
264     $sel->click_ok("//button[\@name='action' and \@value='run_job_mod']");
265     $sel->wait_for_page_to_load_ok("30000");
266
267     $sel->is_text_present_ok("Default");
268     $sel->is_text_present_ok("Full Set");
269     $sel->is_text_present_ok("Incremental");
270     $sel->click_ok("//button[\@name='action']");
271     $sel->wait_for_page_to_load_ok("30000");
272
273   WAIT: {
274       for (1..60) {
275           if (eval { $sel->is_text_present("Start Backup JobId") }) { pass; last WAIT }
276           sleep(1);
277       }
278     fail("timeout");
279     }
280     $sel->is_text_present_ok("Log: BackupClient1 on");
281     $sel->click_ok("//button[\@name='action']");
282     $sel->wait_for_page_to_load_ok("30000");
283
284   WAIT: {
285       for (1..60) {
286           if (eval { $sel->is_text_present("Termination: Backup OK") }) { pass; last WAIT }
287           sleep(1);
288       }
289       fail("timeout");
290     }
291     my $volume = $sel->get_text("//tr[\@id='even_row']/td[12]");
292     $sel->click_ok("//button[\@name='action' and \@value='media']");
293     $sel->wait_for_page_to_load_ok("30000");
294
295     my $volume_found = $sel->get_text("//tr[\@id='even_row']/td[1]");
296     $sel->click_ok("media");
297     $sel->text_is("//tr[\@id='even_row']/td[5]", "Append");
298     $sel->click_ok("//button[\@name='action' and \@value='media_zoom']");
299     $sel->wait_for_page_to_load_ok("30000");
300
301     $sel->is_text_present_ok("Volume Infos");
302     $sel->click_ok("//img[\@title='terminated normally']");
303     $sel->wait_for_page_to_load_ok("30000");
304
305     $sel->click_ok("//button[\@name='action' and \@value='fileset_view']");
306     $sel->wait_for_page_to_load_ok("30000");
307
308     $sel->is_text_present_ok("FileSet Full Set");
309     $sel->is_text_present_ok("What is included:");
310     $sel->is_text_present_ok("/regress/build");
311     $sel->go_back_ok();
312     $sel->wait_for_page_to_load_ok("30000");
313
314     $sel->click_ok("//button[\@name='action' and \@value='run_job_mod']");
315     $sel->wait_for_page_to_load_ok("30000");
316
317     $sel->is_element_present_ok("level");
318     $sel->selected_value_is("name=level", "Full");
319     $sel->selected_label_is("name=fileset", "Full Set");
320     $sel->selected_label_is("name=job", "BackupClient1");
321     $sel->click_ok("//button[\@name='action' and \@value='fileset_view']");
322     $sel->wait_for_page_to_load_ok("30000");
323
324     $sel->is_text_present_ok("FileSet Full Set");
325     $sel->is_text_present_ok("/regress/build");
326 }
327
328 if ($part{group}) {
329 # test group
330     $sel->click_ok("link=Main");
331     $sel->wait_for_page_to_load_ok("30000");
332     $sel->is_text_present_ok("Running Jobs");
333
334     $sel->click_ok("link=Groups");
335     $sel->wait_for_page_to_load_ok("30000");
336
337     $sel->text_is("//h1", "Groups");
338     $sel->click_ok("//button[\@name='action' and \@value='groups_edit']");
339     $sel->wait_for_page_to_load_ok("30000");
340
341     $sel->type_ok("newgroup", "All");
342     $sel->select_ok("name=client", "index=0");
343     $sel->click_ok("//button[\@name='action' and \@value='groups_save']");
344     $sel->wait_for_page_to_load_ok("30000");
345
346     $sel->is_text_present_ok("All");
347     $sel->click_ok("//input [\@name='client_group' and \@value='All']");
348     $sel->click_ok("//button[3]");
349     $sel->wait_for_page_to_load_ok("30000");
350
351     $sel->is_text_present_ok("Group: 'All'");
352     $sel->selected_index_is("name=client", "0");
353     $sel->click_ok("//button[\@name='action' and \@value='groups_save']");
354     $sel->wait_for_page_to_load_ok("30000");
355
356     $sel->click_ok("//input[\@name='client_group' and \@value='All']");
357     $sel->click_ok("//button[4]");
358     $sel->wait_for_page_to_load_ok("30000");
359
360     $sel->click_ok("//input[\@name='client']");
361     $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
362     $sel->wait_for_page_to_load_ok("30000");
363
364     $sel->is_text_present_ok("All");
365     $sel->click_ok("link=Groups");
366     $sel->wait_for_page_to_load_ok("30000");
367
368     $sel->click_ok("//button[\@name='action' and \@value='groups_edit']");
369     $sel->wait_for_page_to_load_ok("30000");
370
371     $sel->type_ok("newgroup", "Empty");
372     $sel->click_ok("//button[\@name='action']");
373     $sel->wait_for_page_to_load_ok("30000");
374
375     $sel->click_ok("client_group");
376     $sel->is_text_present_ok("Empty");
377     $sel->click_ok("//button[\@name='action' and \@value='client']");
378     $sel->wait_for_page_to_load_ok("30000");
379
380     $sel->click_ok("//input[\@name='client']");
381     $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
382     $sel->wait_for_page_to_load_ok("30000");
383
384     $sel->click_ok("link=Groups");
385     $sel->wait_for_page_to_load_ok("30000");
386
387     $sel->click_ok("//input[\@name='client_group' and \@value='Empty']");
388     $sel->click_ok("//button[\@name='action' and \@value='groups_del']");
389     ok($sel->get_confirmation() =~ /^Do you want to delete this group[\s\S]$/);
390     $sel->click_ok("link=Groups");
391     $sel->wait_for_page_to_load_ok("30000");
392
393     $sel->click_ok("//button[\@name='action']");
394     $sel->wait_for_page_to_load_ok("30000");
395
396     $sel->type_ok("newgroup", "Empty");
397     $sel->click_ok("//button[\@name='action']");
398     $sel->wait_for_page_to_load_ok("30000");
399
400     $sel->is_text_present_ok("Empty");
401     $sel->click_ok("//input[\@name='client_group' and \@value='All']");
402     $sel->click_ok("//button[\@name='action' and \@value='client']");
403     $sel->wait_for_page_to_load_ok("30000");
404
405     $sel->click_ok("//input[\@name='client']");
406     $sel->click_ok("//button[\@name='action' and \@value='client_edit']");
407     $sel->wait_for_page_to_load_ok("30000");
408
409     ok(not $sel->is_checked("//input[\@name='client_group' and \@value='Empty']"));
410
411     # click on Statistics -> Groups
412     $sel->click_ok("//ul[\@id='menu']/li[6]/ul/li[3]/a");
413     $sel->wait_for_page_to_load_ok("30000");
414
415     $sel->is_text_present_ok("All");
416     $sel->is_text_present_ok("Empty");
417     $sel->click_ok("link=Groups");
418     $sel->wait_for_page_to_load_ok("30000");
419
420     $sel->click_ok("//input[\@name='client_group' and \@value='Empty']");
421     $sel->click_ok("document.forms[1].elements[4]");
422     $sel->wait_for_page_to_load_ok("30000");
423
424     $sel->type_ok("newgroup", "EmptyGroup");
425     $sel->click_ok("//button[\@name='action']");
426     $sel->wait_for_page_to_load_ok("30000");
427
428     $sel->is_text_present_ok("EmptyGroup");
429 }
430
431 if ($part{location}) {
432 # test location
433     $sel->click_ok("link=Main");
434     $sel->wait_for_page_to_load_ok("30000");
435     $sel->is_text_present_ok("Running Jobs");
436
437     $sel->click_ok("link=Locations");
438     $sel->wait_for_page_to_load_ok("30000");
439
440     $sel->click_ok("//button[\@name='action' and \@value='location_add']");
441     $sel->wait_for_page_to_load_ok("30000");
442
443     $sel->type_ok("location", "Bank");
444     $sel->click_ok("//button[\@name='action']"); # save
445     $sel->wait_for_page_to_load_ok("30000");
446
447     $sel->is_text_present_ok("Bank");
448     $sel->click_ok("location");
449     $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
450     $sel->wait_for_page_to_load_ok("30000");
451
452     $sel->type_ok("cost", "100");
453     $sel->is_text_present_ok("Location: Bank");
454     $sel->click_ok("//button[\@name='action']");
455     $sel->wait_for_page_to_load_ok("30000");
456
457     $sel->is_text_present_ok("100");
458     $sel->is_element_present_ok("//img[\@src='/bweb/inflag1.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=no");
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/inflag0.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->select_ok("enabled", "label=archived");
473     $sel->click_ok("//button[\@name='action']");
474     $sel->wait_for_page_to_load_ok("30000");
475
476     $sel->is_element_present_ok("//img[\@src='/bweb/inflag2.png']");
477     $sel->click_ok("location");
478     $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
479     $sel->wait_for_page_to_load_ok("30000");
480
481     $sel->type_ok("newlocation", "Office");
482     $sel->click_ok("//button[\@name='action']");
483     $sel->wait_for_page_to_load_ok("30000");
484
485     $sel->is_text_present_ok("Office");
486     $sel->click_ok("link=All Media");
487     $sel->wait_for_page_to_load_ok("30000");
488
489     $sel->click_ok("media");
490     $sel->click_ok("//button[\@name='action' and \@value='update_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->selected_value_is("location", "Office");
498     $sel->click_ok("//button[\@name='action' and \@value='media']");
499     $sel->wait_for_page_to_load_ok("30000");
500
501     $sel->select_ok("location", "label=Office");
502     $sel->click_ok("//button[\@name='action']");
503     $sel->wait_for_page_to_load_ok("30000");
504
505     $sel->body_text_isnt("Vol0010");
506     $sel->click_ok("link=Locations");
507     $sel->wait_for_page_to_load_ok("30000");
508
509     $sel->click_ok("location");
510     $sel->click_ok("//button[\@name='action' and \@value='location_del']");
511     ok($sel->get_confirmation() =~ /^Do you want to remove this location[\s\S]$/);
512     $sel->wait_for_page_to_load_ok("30000");
513
514     $sel->is_text_present_ok("Sorry, the location must be empty");
515     $sel->click_ok("link=Locations");
516     $sel->wait_for_page_to_load_ok("30000");
517
518     $sel->click_ok("//button[\@name='action']");
519     $sel->wait_for_page_to_load_ok("30000");
520
521     $sel->type_ok("location", "OtherPlace");
522     $sel->click_ok("//button[\@name='action']");
523     $sel->wait_for_page_to_load_ok("30000");
524
525     $sel->click_ok("location");
526     $sel->click_ok("//button[\@name='action' and \@value='media']");
527     $sel->wait_for_page_to_load_ok("30000");
528
529     $sel->click_ok("media");
530     $sel->click_ok("//button[\@name='action' and \@value='update_media']");
531     $sel->wait_for_page_to_load_ok("30000");
532
533     $sel->select_ok("location", "label=OtherPlace");
534     $sel->click_ok("//button[\@name='action']");
535     $sel->wait_for_page_to_load_ok("30000");
536
537     $sel->click_ok("link=Locations");
538     $sel->wait_for_page_to_load_ok("30000");
539
540     $sel->click_ok("location");
541     $sel->click_ok("//button[\@name='action' and \@value='location_del']");
542     ok($sel->get_confirmation() =~ /^Do you want to remove this location[\s\S]$/);
543     $sel->wait_for_page_to_load_ok("30000");
544
545     $sel->body_text_isnt("Office");
546 }
547
548 if ($part{overview}) {
549     unless ($client) {
550         $sel->click_ok("link=Clients");
551         $sel->wait_for_page_to_load_ok("30000");
552         $client = $sel->get_text("//tr[\@id='even_row']/td[1]");
553     }
554     $sel->click_ok("link=Main");
555     $sel->wait_for_page_to_load_ok("30000");
556     $sel->is_text_present_ok("Running Jobs");
557
558     $sel->click_ok("link=Jobs overview");
559     $sel->wait_for_page_to_load_ok("30000");
560
561     $sel->is_text_present_ok("All");
562     $sel->click_ok("link=All");
563     $sel->wait_for_page_to_load_ok("30000");
564
565     $sel->click_ok("link=$client");
566     $sel->wait_for_page_to_load_ok("30000");
567
568     $sel->is_text_present_ok("BackupClient1");
569     $sel->is_text_present_ok("Full Set");
570 }
571
572 if ($part{config}) {
573     my ($dbi, $user, $pass, $histo);
574     $sel->open_ok("/cgi-bin/bweb/bweb.pl");
575     $sel->click_ok("link=Configuration");
576     $sel->wait_for_page_to_load_ok("30000");
577     $sel->is_text_present_ok("SQL Connection");
578
579     $sel->click_ok("//button[\@name='action' and \@value='edit_conf']");
580     $sel->wait_for_page_to_load_ok("30000");
581     $dbi = $sel->get_value("dbi");
582     $user = $sel->get_value("user");
583     $pass = $sel->get_value("password");
584     $histo = $sel->get_value("stat_job_table");
585
586     $sel->type_ok("dbi", "dbi:Pg:database=dbi1");
587     $sel->type_ok("user", "user1");
588     $sel->type_ok("password", "password1");
589
590     $sel->type_ok("stat_job_table", ($histo eq 'Job')?"JobHisto":"Job");
591
592     $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
593     $sel->wait_for_page_to_load_ok("30000");
594
595     $sel->click_ok("//button[\@name='action' and \@value='edit_conf']");
596     $sel->wait_for_page_to_load_ok("30000");
597
598     is($sel->get_value("dbi"), "dbi:Pg:database=dbi1", "verify dbi");
599     is($sel->get_value("user"), "user1", "verify user");
600     is($sel->get_value("password"), "password1", "verify passwd");
601
602     $sel->type_ok("dbi", $dbi);
603     $sel->type_ok("user", $user);
604     $sel->type_ok("password", $pass);
605     $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
606     $sel->wait_for_page_to_load_ok("30000");
607
608     $sel->is_text_present_ok("SQL Connection");
609
610     if(0) {                     # not used for now
611     # test create conf
612         $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
613         $sel->wait_for_page_to_load_ok("30000");
614         $sel->is_text_present_ok("Unnamed");
615         
616         $sel->type_ok("name", "MyBweb2");
617         $sel->type_ok("new_dir", "bweb2-dir");
618         
619         $sel->type_ok("dbi", $dbi);
620         $sel->type_ok("user", $user);
621         $sel->type_ok("password", $pass);
622         
623         $sel->type_ok("stat_job_table", "JobHisto");
624         $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
625         $sel->wait_for_page_to_load_ok("30000");
626         $sel->is_text_present_ok("MyBweb2");
627         $sel->is_text_present_ok("bweb2-dir");
628         
629         # test create other conf
630         $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
631         $sel->wait_for_page_to_load_ok("30000");
632         $sel->is_text_present_ok("Main Configuration");
633         
634         $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
635         $sel->wait_for_page_to_load_ok("30000");
636         $sel->is_text_present_ok("Unnamed");
637         
638         $sel->type_ok("name", "MyBweb3");
639         $sel->type_ok("new_dir", "bweb3-dir");
640         $sel->type_ok("user", "test");
641         
642         $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
643         $sel->wait_for_page_to_load_ok("30000");
644         $sel->is_text_present_ok("MyBweb3");
645         
646         $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
647         $sel->wait_for_page_to_load_ok("30000");
648         $sel->is_text_present_ok("Main Configuration");
649         $sel->is_text_present_ok("MyBweb3");
650         $sel->is_text_present_ok("MyBweb2");
651         
652         # test rename
653         $sel->click_ok("//input[\@name='dir' and \@value='bweb2-dir']");
654         $sel->click_ok("//button[\@name='action' and \@value='view_conf']");
655         $sel->wait_for_page_to_load_ok("30000");
656         $sel->is_text_present_ok("MyBweb2");
657         $sel->click_ok("//button[\@name='action' and \@value='edit_conf']");
658         $sel->wait_for_page_to_load_ok("30000");
659         $sel->is_text_present_ok("MyBweb2");
660         $sel->type_ok("new_dir", "bweb-dir");
661         $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
662         $sel->wait_for_page_to_load_ok("30000");
663         $sel->is_text_present_ok("MyBweb2");
664         $sel->is_text_present_ok("bweb-dir");
665         
666         # test delete
667         $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
668         $sel->wait_for_page_to_load_ok("30000");
669         $sel->is_text_present_ok("MyBweb3");
670         
671         $sel->click_ok("//input[\@name='dir' and \@value='bweb3-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("MyBweb3");
676         $sel->is_text_present_ok("MyBweb2");
677         
678         $sel->click_ok("//input[\@name='dir' and \@value='bweb-dir']");
679         $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
680         ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
681         $sel->wait_for_page_to_load_ok("30000");
682         $sel->body_text_isnt("MyBweb2");
683     }
684 }
685
686 if ($part{multidir}) {
687     # cleanup
688     $sel->click_ok("link=Configuration");
689     $sel->wait_for_page_to_load_ok("30000");
690     $sel->click_ok("//input[\@name='dir' and \@value='bweb1-dir']");
691     $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
692     ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
693     $sel->wait_for_page_to_load_ok("30000");
694     $sel->body_text_isnt("MyBweb");
695
696     if (-f "$tmp/bconsole.conf.$$") {
697         move("$tmp/bconsole.conf.$$", "$bin/bconsole.conf");
698     }
699 }