From 9b6ec1f545da1cc4088ddf9cc117747954e58e65 Mon Sep 17 00:00:00 2001 From: David Lawrence Date: Fri, 26 Feb 2016 17:57:55 +0000 Subject: Bug 1069799 - move the QA repository into the main repository r=LpSolit --- xt/webservice/group_create.t | 101 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 xt/webservice/group_create.t (limited to 'xt/webservice/group_create.t') diff --git a/xt/webservice/group_create.t b/xt/webservice/group_create.t new file mode 100644 index 000000000..e46546a31 --- /dev/null +++ b/xt/webservice/group_create.t @@ -0,0 +1,101 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +# This Source Code Form is "Incompatible With Secondary Licenses", as +# defined by the Mozilla Public License, v. 2.0. + +########################################## +# Test for xmlrpc call to Group.create() # +########################################## + +use 5.10.1; +use strict; +use warnings; + +use FindBin qw($RealBin); +use lib "$RealBin/../lib"; + +use Test::More tests => 77; +use QA::Util; + +use constant DESCRIPTION => 'Group created by Group.create'; + +sub post_success { + my $call = shift; + my $gid = $call->result->{id}; + ok($gid, "Got a non-zero group ID: $gid"); +} + +my ($config, $xmlrpc, $jsonrpc, $jsonrpc_get) = get_rpc_clients(); + +my @tests = ( + { args => { name => random_string(20), description => DESCRIPTION }, + error => 'You must log in', + test => 'Logged-out user cannot call Group.create', + }, + { user => 'unprivileged', + args => { name => random_string(20), description => DESCRIPTION }, + error => 'you are not authorized', + test => 'Unprivileged user cannot call Group.create', + }, + { user => 'admin', + args => { description => DESCRIPTION }, + error => 'You must enter a name', + test => 'Missing name to Group.create', + }, + { user => 'admin', + args => { name => random_string(20) }, + error => 'You must enter a description', + test => 'Missing description to Group.create', + }, + { user => 'admin', + args => { name => '', description => DESCRIPTION }, + error => 'You must enter a name', + test => 'Name to Group.create cannot be empty', + }, + { user => 'admin', + args => { name => random_string(20), description => '' }, + error => 'You must enter a description', + test => 'Description to Group.create cannot be empty', + }, + { user => 'admin', + args => { name => 'canconfirm', description => DESCRIPTION }, + error => 'already exists', + test => 'Name to Group.create already exists', + }, + { user => 'admin', + args => { name => 'caNConFIrm', description => DESCRIPTION }, + error => 'already exists', + test => 'Name to Group.create already exists but with a different case', + }, + { user => 'admin', + args => { name => random_string(20), description => DESCRIPTION, + user_regexp => '\\'}, + error => 'The regular expression you entered is invalid', + test => 'The regular expression passed to Group.create is invalid', + }, +); + +$jsonrpc_get->bz_call_fail('Group.create', + { name => random_string(20), description => 'Created with JSON-RPC via GET' }, + 'must use HTTP POST', 'Group.create fails over GET'); + +foreach my $rpc ($xmlrpc, $jsonrpc) { + # Tests which work must be called from here, + # to avoid creating twice the same group. + my @all_tests = (@tests, + { user => 'admin', + args => { name => random_string(20), description => DESCRIPTION }, + test => 'Passing the name and description only works', + }, + { user => 'admin', + args => { name => random_string(20), description => DESCRIPTION, + user_regexp => '\@foo.com$', is_active => 1, + icon_url => 'http://www.bugzilla.org/favicon.ico' }, + test => 'Passing all arguments works', + }, + ); + $rpc->bz_run_tests(tests => \@all_tests, method => 'Group.create', + post_success => \&post_success); +} -- cgit v1.2.3-24-g4f1b