From: Udo Spallek Date: Sat, 2 Dec 2006 16:36:15 +0000 (+0000) Subject: Testwerkzeug: cleanup.pl: (von Hand) aufgerufen werden alle testuser und testdatenban... X-Git-Tag: release-2.4.0^2~133 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=e3fa8c0879605971cebcd0958aea811f3075afe3;p=kivitendo-erp.git Testwerkzeug: cleanup.pl: (von Hand) aufgerufen werden alle testuser und testdatenbanken geloescht --- diff --git a/t/selenium/cleanup.pl b/t/selenium/cleanup.pl new file mode 100644 index 000000000..f5a0d552d --- /dev/null +++ b/t/selenium/cleanup.pl @@ -0,0 +1,157 @@ +#===================================================================== +# LX-Office ERP +# Copyright (C) 2006 +# Web http://www.lx-office.org +# +#===================================================================== +# +# Author: Udo Spallek +# Email: udono@gmx.net +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +#====================================================================== +# +# Selenium Cleanup Script +# To clean up all the messy databases and users while debugging testcases +# +####################################################################### + no strict; + push @INC, ['/t/selenium']; + use vars qw( $lxdebug $lxtest $sel ); + use strict; + use Carp; + + use WWW::Selenium; + use IO::Socket; + + my $cleanedupdb = ''; + my $cleanedupusers = ''; + + eval { require('t/lxtest.conf'); }; + if ($@) { + print "No test configuration found in t/lxtest.conf.\n + Maybe you forget to copy t/lxtest.conf.default to t/lxtest.conf. Exit test...\n"; + exit 0; + }; + + sub server_is_running { + return IO::Socket::INET->new(PeerAddr => $ENV{SRC_HOST} || $lxtest->{seleniumhost}, + PeerPort => $ENV{SRC_PORT} || $lxtest->{seleniumport}, + ); + } + if (server_is_running) { + } + else { + exit 0; + } + + $lxtest->{testuserlogin} = $lxtest->{testlogin}; + $lxtest->{db} = $lxtest->{db}; + + $lxtest->{lxadmin} = $lxtest->{lxbaseurl} . "admin.pl?path=$lxtest->{path}&rpw=$lxtest->{rpw}&nextsub=list_users&action=Weiter"; + + eval { $sel = WWW::Selenium->new( + host => $lxtest->{seleniumhost}, + port => $lxtest->{seleniumport}, + browser => $lxtest->{seleniumbrowser}, + browser_url => $lxtest->{lxadmin}, + auto_stop => '0', + ); + }; + if ($@) { + print "No Selenium Server running, or wrong preferences\n\n"; + exit 0; + } + + + print "\nStarting Testdebugging Cleanup...\n"; + + +### Delete user + +$sel->start; +print "Cleanup all users '$lxtest->{testuserlogin}*'\n"; +$sel->open($lxtest->{lxadmin}); + +my @links= $sel->get_all_links(); +my $testuserlogin = $lxtest->{testuserlogin}; + +foreach my $link (@links) { + + if ($link =~ /$testuserlogin\d\d\d\d\d\d\d\d\d\d/){ + $sel->click("link=$lxtest->{testuserlogin}11*"); + $sel->wait_for_page_to_load($lxtest->{timeout}); + $sel->click("//input[(\@name=\"action\") and (\@value=\"Löschen\")]"); + $sel->wait_for_page_to_load($lxtest->{timeout}); + $cleanedupusers .= " $link\n"; + } +} + +print "Lock the system\n"; +$sel->click("//input[(\@name=\"action\") and (\@value=\"System sperren\")]"); +$sel->wait_for_page_to_load($lxtest->{timeout}); + +print "Cleanup all test databasees: '$lxtest->{db}*'\n"; + + $sel->click("//input[(\@name=\"action\") and (\@value=\"Datenbankadministration\")]"); + $sel->wait_for_page_to_load($lxtest->{timeout}); + $sel->type("dbhost", $lxtest->{dbhost}); + $sel->type("dbport", $lxtest->{dbport}); + $sel->type("dbuser", $lxtest->{dbuser}); + $sel->type("dbpasswd", $lxtest->{dbpasswd}); + + $sel->click("//input[(\@name=\"action\") and (\@value=\"Datenbank löschen\")]"); + $sel->wait_for_page_to_load($lxtest->{timeoutlong}); + + my $field = $sel->get_body_text(); + my $database= $lxtest->{db}; + my @fields = split(' ', $field); + + + foreach my $field (@fields) { + + if ($field =~ /$database\d\d\d\d\d\d\d\d\d\d/){ + $sel->open($lxtest->{lxadmin}); + $sel->click("//input[(\@name=\"action\") and (\@value=\"Datenbankadministration\")]"); + $sel->wait_for_page_to_load($lxtest->{timeout}); + $sel->type("dbhost", $lxtest->{dbhost}); + $sel->type("dbport", $lxtest->{dbport}); + $sel->type("dbuser", $lxtest->{dbuser}); + $sel->type("dbpasswd", $lxtest->{dbpasswd}); + + $sel->click("//input[(\@name=\"action\") and (\@value=\"Datenbank löschen\")]"); + $sel->wait_for_page_to_load($lxtest->{timeoutlong}); + $sel->check("name=db value=$field"); + $sel->click("//input[(\@name=\"action\") and (\@value=\"Weiter\")]"); + $cleanedupdb .= " $field\n"; + + } + } + +$sel->open($lxtest->{lxadmin}); +print "Unlock the system\n"; + +$sel->click("//input[(\@name=\"action\") and (\@value=\"System entsperren\")]"); +$sel->wait_for_page_to_load($lxtest->{timeout}); + +$cleanedupdb = "none.\n" if ($cleanedupdb eq ''); +$cleanedupusers = "none.\n" if ($cleanedupusers eq ''); + +print "Ready. \nReport:\n--- Cleaned up Users:\n$cleanedupusers---Cleaned up Databases:\n$cleanedupdb"; + +$sel->stop; + +exit 1; + +