]> git.sur5r.net Git - bacula/bacula/blob - regress/tests/bweb-test.pl
Tweak restart base
[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->back();
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     $sel->click_ok("link=Group Statistics");
411     $sel->wait_for_page_to_load_ok("30000");
412
413     $sel->is_text_present_ok("All");
414     $sel->is_text_present_ok("Empty");
415     $sel->click_ok("link=Groups");
416     $sel->wait_for_page_to_load_ok("30000");
417
418     $sel->click_ok("//input[\@name='client_group' and \@value='Empty']");
419     $sel->click_ok("document.forms[1].elements[4]");
420     $sel->wait_for_page_to_load_ok("30000");
421
422     $sel->type_ok("newgroup", "EmptyGroup");
423     $sel->click_ok("//button[\@name='action']");
424     $sel->wait_for_page_to_load_ok("30000");
425
426     $sel->is_text_present_ok("EmptyGroup");
427 }
428
429 if ($part{location}) {
430 # test location
431     $sel->click_ok("link=Main");
432     $sel->wait_for_page_to_load_ok("30000");
433     $sel->is_text_present_ok("Running Jobs");
434
435     $sel->click_ok("link=Locations");
436     $sel->wait_for_page_to_load_ok("30000");
437
438     $sel->click_ok("//button[\@name='action' and \@value='location_add']");
439     $sel->wait_for_page_to_load_ok("30000");
440
441     $sel->type_ok("location", "Bank");
442     $sel->click_ok("//button[\@name='action']"); # save
443     $sel->wait_for_page_to_load_ok("30000");
444
445     $sel->is_text_present_ok("Bank");
446     $sel->click_ok("location");
447     $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
448     $sel->wait_for_page_to_load_ok("30000");
449
450     $sel->type_ok("cost", "100");
451     $sel->is_text_present_ok("Location: Bank");
452     $sel->click_ok("//button[\@name='action']");
453     $sel->wait_for_page_to_load_ok("30000");
454
455     $sel->is_text_present_ok("100");
456     $sel->is_element_present_ok("//img[\@src='/bweb/inflag1.png']");
457     $sel->click_ok("location");
458     $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
459     $sel->wait_for_page_to_load_ok("30000");
460
461     $sel->select_ok("enabled", "label=no");
462     $sel->click_ok("//button[\@name='action']");
463     $sel->wait_for_page_to_load_ok("30000");
464
465     $sel->is_element_present_ok("//img[\@src='/bweb/inflag0.png']");
466     $sel->click_ok("location");
467     $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
468     $sel->wait_for_page_to_load_ok("30000");
469
470     $sel->select_ok("enabled", "label=archived");
471     $sel->click_ok("//button[\@name='action']");
472     $sel->wait_for_page_to_load_ok("30000");
473
474     $sel->is_element_present_ok("//img[\@src='/bweb/inflag2.png']");
475     $sel->click_ok("location");
476     $sel->click_ok("//button[\@name='action' and \@value='location_edit']");
477     $sel->wait_for_page_to_load_ok("30000");
478
479     $sel->type_ok("newlocation", "Office");
480     $sel->click_ok("//button[\@name='action']");
481     $sel->wait_for_page_to_load_ok("30000");
482
483     $sel->is_text_present_ok("Office");
484     $sel->click_ok("link=All Media");
485     $sel->wait_for_page_to_load_ok("30000");
486
487     $sel->click_ok("media");
488     $sel->click_ok("//button[\@name='action' and \@value='update_media']");
489     $sel->wait_for_page_to_load_ok("30000");
490
491     $sel->select_ok("location", "label=Office");
492     $sel->click_ok("//button[\@name='action']");
493     $sel->wait_for_page_to_load_ok("30000");
494
495     $sel->selected_value_is("location", "Office");
496     $sel->click_ok("//button[\@name='action' and \@value='media']");
497     $sel->wait_for_page_to_load_ok("30000");
498
499     $sel->select_ok("location", "label=Office");
500     $sel->click_ok("//button[\@name='action']");
501     $sel->wait_for_page_to_load_ok("30000");
502
503     $sel->body_text_isnt("Vol0010");
504     $sel->click_ok("link=Locations");
505     $sel->wait_for_page_to_load_ok("30000");
506
507     $sel->click_ok("location");
508     $sel->click_ok("//button[\@name='action' and \@value='location_del']");
509     ok($sel->get_confirmation() =~ /^Do you want to remove this location[\s\S]$/);
510     $sel->wait_for_page_to_load_ok("30000");
511
512     $sel->is_text_present_ok("Sorry, the location must be empty");
513     $sel->click_ok("link=Locations");
514     $sel->wait_for_page_to_load_ok("30000");
515
516     $sel->click_ok("//button[\@name='action']");
517     $sel->wait_for_page_to_load_ok("30000");
518
519     $sel->type_ok("location", "OtherPlace");
520     $sel->click_ok("//button[\@name='action']");
521     $sel->wait_for_page_to_load_ok("30000");
522
523     $sel->click_ok("location");
524     $sel->click_ok("//button[\@name='action' and \@value='media']");
525     $sel->wait_for_page_to_load_ok("30000");
526
527     $sel->click_ok("media");
528     $sel->click_ok("//button[\@name='action' and \@value='update_media']");
529     $sel->wait_for_page_to_load_ok("30000");
530
531     $sel->select_ok("location", "label=OtherPlace");
532     $sel->click_ok("//button[\@name='action']");
533     $sel->wait_for_page_to_load_ok("30000");
534
535     $sel->click_ok("link=Locations");
536     $sel->wait_for_page_to_load_ok("30000");
537
538     $sel->click_ok("location");
539     $sel->click_ok("//button[\@name='action' and \@value='location_del']");
540     ok($sel->get_confirmation() =~ /^Do you want to remove this location[\s\S]$/);
541     $sel->wait_for_page_to_load_ok("30000");
542
543     $sel->body_text_isnt("Office");
544 }
545
546 if ($part{overview}) {
547     unless ($client) {
548         $sel->click_ok("link=Clients");
549         $sel->wait_for_page_to_load_ok("30000");
550         $client = $sel->get_text("//tr[\@id='even_row']/td[1]");
551     }
552     $sel->click_ok("link=Main");
553     $sel->wait_for_page_to_load_ok("30000");
554     $sel->is_text_present_ok("Running Jobs");
555
556     $sel->click_ok("link=Jobs overview");
557     $sel->wait_for_page_to_load_ok("30000");
558
559     $sel->is_text_present_ok("All");
560     $sel->click_ok("link=All");
561     $sel->wait_for_page_to_load_ok("30000");
562
563     $sel->click_ok("link=$client");
564     $sel->wait_for_page_to_load_ok("30000");
565
566     $sel->is_text_present_ok("BackupClient1");
567     $sel->is_text_present_ok("Full Set");
568 }
569
570 if ($part{config}) {
571     my ($dbi, $user, $pass, $histo);
572     $sel->open_ok("/cgi-bin/bweb/bweb.pl");
573     $sel->click_ok("link=Configuration");
574     $sel->wait_for_page_to_load_ok("30000");
575     $sel->is_text_present_ok("Main Configuration");
576
577     $sel->click_ok("//button[\@name='action' and \@value='edit_main_conf']");
578     $sel->wait_for_page_to_load_ok("30000");
579     $sel->is_text_present_ok("Main Configuration");
580     
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_main_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("Main Configuration");
609
610     # test create conf
611     $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
612     $sel->wait_for_page_to_load_ok("30000");
613     $sel->is_text_present_ok("Unnamed");
614
615     $sel->type_ok("name", "MyBweb2");
616     $sel->type_ok("new_dir", "bweb2-dir");
617  
618     $sel->type_ok("dbi", $dbi);
619     $sel->type_ok("user", $user);
620     $sel->type_ok("password", $pass);
621  
622     $sel->type_ok("stat_job_table", "JobHisto");
623     $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
624     $sel->wait_for_page_to_load_ok("30000");
625     $sel->is_text_present_ok("MyBweb2");
626     $sel->is_text_present_ok("bweb2-dir");
627
628     # test create other conf
629     $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
630     $sel->wait_for_page_to_load_ok("30000");
631     $sel->is_text_present_ok("Main Configuration");
632
633     $sel->click_ok("//button[\@name='action' and \@value='add_conf']");
634     $sel->wait_for_page_to_load_ok("30000");
635     $sel->is_text_present_ok("Unnamed");
636
637     $sel->type_ok("name", "MyBweb3");
638     $sel->type_ok("new_dir", "bweb3-dir");
639     $sel->type_ok("user", "test");
640
641     $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
642     $sel->wait_for_page_to_load_ok("30000");
643     $sel->is_text_present_ok("MyBweb3");
644
645     $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
646     $sel->wait_for_page_to_load_ok("30000");
647     $sel->is_text_present_ok("Main Configuration");
648     $sel->is_text_present_ok("MyBweb3");
649     $sel->is_text_present_ok("MyBweb2");
650
651     # test rename
652     $sel->click_ok("//input[\@name='dir' and \@value='bweb2-dir']");
653     $sel->click_ok("//button[\@name='action' and \@value='view_conf']");
654     $sel->wait_for_page_to_load_ok("30000");
655     $sel->is_text_present_ok("MyBweb2");
656     $sel->click_ok("//button[\@name='action' and \@value='edit_conf']");
657     $sel->wait_for_page_to_load_ok("30000");
658     $sel->is_text_present_ok("MyBweb2");
659     $sel->type_ok("new_dir", "bweb-dir");
660     $sel->click_ok("//button[\@name='action' and \@value='apply_conf']");
661     $sel->wait_for_page_to_load_ok("30000");
662     $sel->is_text_present_ok("MyBweb2");
663     $sel->is_text_present_ok("bweb-dir");
664     
665     # test delete
666     $sel->click_ok("//button[\@name='action' and \@value='view_main_conf']");
667     $sel->wait_for_page_to_load_ok("30000");
668     $sel->is_text_present_ok("MyBweb3");
669
670     $sel->click_ok("//input[\@name='dir' and \@value='bweb3-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("MyBweb3");
675     $sel->is_text_present_ok("MyBweb2");
676
677     $sel->click_ok("//input[\@name='dir' and \@value='bweb-dir']");
678     $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
679     ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
680     $sel->wait_for_page_to_load_ok("30000");
681     $sel->body_text_isnt("MyBweb2");
682 }
683
684 if ($part{multidir}) {
685     # cleanup
686     $sel->click_ok("link=Configuration");
687     $sel->wait_for_page_to_load_ok("30000");
688     $sel->click_ok("//input[\@name='dir' and \@value='bweb1-dir']");
689     $sel->click_ok("//button[\@name='action' and \@value='del_conf']");
690     ok($sel->get_confirmation() =~ /^Do you really want to remove this Director[\s\S]$/);
691     $sel->wait_for_page_to_load_ok("30000");
692     $sel->body_text_isnt("MyBweb");
693
694     if (-f "$tmp/bconsole.conf.$$") {
695         move("$tmp/bconsole.conf.$$", "$bin/bconsole.conf");
696     }
697 }