bugzilla-4intranet/testopia/t/SE_environments.t

175 lines
4.9 KiB
Perl

# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Testopia System.
#
# The Initial Developer of the Original Code is Greg Hendricks.
# Portions created by Greg Hendricks are Copyright (C) 2006
# Novell. All Rights Reserved.
#
# Contributor(s): Greg Hendricks <ghendricks@novell.com>
# Jeff Dayley <jedayley@novell.com>
# Ben Warby <bwarby@novell.com>
use strict;
use lib "..";
use lib "../..";
use Test::More tests => 4;
use Test::Deep;
use Bugzilla;
use Bugzilla::Util;
use Bugzilla::Constants;
use Bugzilla::Testopia::Product;
use Bugzilla::Testopia::Environment;
use Testopia::Test::Util;
use Testopia::Test::Constants;
use Testopia::Test::Selenium::Util;
use Testopia::Test::Selenium::Constants;
my ($user_type, $login, $passwd) = @ARGV;
use constant DEBUG => 1;
Bugzilla->error_mode(ERROR_MODE_DIE);
my $isanon = 0;
# $se object from Test::Selenium::Util
$se->start();
if ($login && $passwd){
unless ( Testopia::Test::Selenium::Util->login( $login, $passwd) ) {
$se->stop();
fail('login');
exit;
}
}
else {
$se->open( 'tr_environments.cgi' );
$se->wait_for_page_to_load(TIMEOUT);
$se->pause(3000) if DEBUG;
ok( $se->is_text_present("I need a legitimate login and password to continue"), "anonymous user check" );
$isanon = 1;
}
SKIP: {
skip "Anonymous Login", 2 if $isanon;
test_add();
test_edit();
test_list();
}
sub test_list{
my $self = shift;
$se->open("tr_list_environments.cgi?ctype=json");
$se->wait_for_page_to_load(TIMEOUT);
ok($se->is_text_present('totalResultsAvailable'), "basic list - environments");
}
sub test_add {
# Create a unique name for the environment using the number of seconds since epoch
my $environment_name = "SELENIUM CREATE ". time();
my $rep = get_rep('products');
# Add new environment - supposed to error because missing name
my $product = new Bugzilla::Testopia::Product($rep->{'id'});
my $test = {
url => "tr_environments.cgi",
action => "add",
params => {
product_id => $rep->{'id'},
isactive => 1
}
};
$se->open( format_url($test) );
$se->wait_for_page_to_load(TIMEOUT);
$se->pause(3000) if DEBUG;
ok( $se->is_text_present("testopia-missing-required-field"), "missing params check" );
#Add valid environment
$test->{params}->{name} = $environment_name;
$se->open( format_url($test) );
$se->wait_for_page_to_load(TIMEOUT);
$se->pause(3000) if DEBUG;
ok( $se->is_text_present("'success': true"), "'action=add'" );
#check to make sure it was added properly
my $dbh = Bugzilla->dbh;
my $ref = $dbh->selectrow_hashref(
'SELECT *
FROM test_environments
WHERE name = ?
AND product_id = ?',
undef, ( $environment_name, $rep->{'id'} )
);
$test->{params}->{environment_id} = $ref->{environment_id};
diag(dump_all($ref, $test->{params})) if DEBUG;
cmp_deeply( $test->{params}, $ref, "Environment Hashes match" );
#check for adding duplicate names
$se->open( format_url($test) );
$se->wait_for_page_to_load(TIMEOUT);
$se->pause(3000) if DEBUG;
ok( $se->is_text_present("testopia-name-not-unique"), "duplicate check." );
}
sub test_edit {
my $dbh = Bugzilla->dbh;
#Get current environment inforamtion
my $rep = get_rep('test_environments');
my $test = {
url => "tr_environments.cgi",
action => "rename",
params => {
env_id => $rep->{'environment_id'},
name => "SELENIUM UPDATE ". time(),
}
};
#Try to update things
$se->open( format_url($test) );
$se->wait_for_page_to_load(TIMEOUT);
$se->pause(3000) if DEBUG;
ok( $se->is_text_present("'success': true"), "action=edit" );
$test->{action} = 'toggle';
$se->open( format_url($test) );
$se->wait_for_page_to_load(TIMEOUT);
$se->pause(3000) if DEBUG;
ok( $se->is_text_present("'success': true"), "action=toggle" );
#check edit succeded and values updated
my $environment = new Bugzilla::Testopia::Environment($rep->{'environment_id'});
diag(dump_all($environment, $test)) if DEBUG;
ok ($environment->name eq $test->{params}->{name}, "Names match");
ok ($rep->{'isactive'} != $environment->isactive, "Toggle successful");
}