722e3f4e77c812ebb31bb1533a4918f0cab8fee4
hiram
  Thu May 2 11:37:03 2019 -0700
adding tests to check for extraneous arguments refs #18869

diff --git src/hg/hubApi/tests/jsonConsumer.pl src/hg/hubApi/tests/jsonConsumer.pl
index 1911fa7..30da64a 100755
--- src/hg/hubApi/tests/jsonConsumer.pl
+++ src/hg/hubApi/tests/jsonConsumer.pl
@@ -1,30 +1,32 @@
 #!/usr/bin/env perl
 
 use strict;
 use warnings;
 use HTTP::Tiny;
 use Time::HiRes;
 use JSON;
 use Getopt::Long;
 
 my $http = HTTP::Tiny->new();
 # my $server = 'https://apibeta.soe.ucsc.edu';
+# my $server = 'http://localhost:1236/cgi-bin/hubApi';
 my $server = 'https://api-test.gi.ucsc.edu';
 # my $server="https://genome-euro.ucsc.edu/cgi-bin/loader/hubApi";
 # my $server = 'https://hgwdev-api.gi.ucsc.edu';
 # my $server = 'https://hgwbeta.soe.ucsc.edu/cgi-bin/hubApi';
+# my $server = 'https://hgwdev-hiram.gi.ucsc.edu/cgi-bin/hubApi';
 my $globalHeaders = { 'Content-Type' => 'application/json' };
 my $lastRequestTime = Time::HiRes::time();
 my $processStartTime = Time::HiRes::time();
 my $requestCount = 0;
 
 ##############################################################################
 # command line options
 my $endpoint = "";
 my $hubUrl = "";
 my $genome = "";
 my $track = "";
 my $chrom = "";
 my $start = "";
 my $end = "";
 my $test0 = 0;
@@ -237,104 +239,135 @@
 	my %parameters;
 	# allow no hubUrl argument to test error reports
         if (length($hubUrl)) {
 	   $parameters{"hubUrl"} = "$hubUrl";
         }
         if (length($genome)) {
 	   $parameters{"genome"} = "$genome";
         }
 	$jsonReturn = performJsonAction($endpoint, \%parameters);
 	$errReturn = 1 if (defined ($jsonReturn->{'error'}));
 	printf "%s", $json->pretty->encode( $jsonReturn );
      } elsif ($endpoint eq "/list/tracks") {
 	# no need to verify arguments here, pass them along, or not,
 	# so that error returns can be verified
 	my %parameters;
+	if (length($chrom)) {
+	    $parameters{"chrom"} = "$chrom";
+	}
 	if ($trackLeavesOnly) {
 	    $parameters{"trackLeavesOnly"} = "1";
 	}
 	# allow no hubUrl argument to test error reports
         if (length($hubUrl)) {
 	  $parameters{"hubUrl"} = "$hubUrl";
 	}
 	# allow call to go through without a genome specified to test error
 	if (length($genome)) {
 	  $parameters{"genome"} = "$genome";
 	}
 	$jsonReturn = performJsonAction($endpoint, \%parameters);
 	$errReturn = 1 if (defined ($jsonReturn->{'error'}));
 	printf "%s", $json->pretty->encode( $jsonReturn );
      } elsif ($endpoint eq "/list/chromosomes") {
 	my %parameters;
+	if (length($chrom)) {
+	    $parameters{"chrom"} = "$chrom";
+	}
+	if ($trackLeavesOnly) {
+	    $parameters{"trackLeavesOnly"} = "1";
+	}
 	if (length($hubUrl)) {
 	    $parameters{"hubUrl"} = "$hubUrl";
 	}
 	# allow call to go through without a genome specified to test error
 	if (length($genome)) {
 	    $parameters{"genome"} = "$genome";
 	}
 	if (length($track)) {
 	    $parameters{"track"} = "$track";
 	}
 	$jsonReturn = performJsonAction($endpoint, \%parameters);
 	$errReturn = 1 if (defined ($jsonReturn->{'error'}));
 	printf "%s", $json->pretty->encode( $jsonReturn );
      } elsif ($endpoint eq "/getData/sequence") {
 	my %parameters;
+	if ($trackLeavesOnly) {
+	    $parameters{"trackLeavesOnly"} = "1";
+	}
 	if (length($hubUrl)) {
 	  $parameters{"hubUrl"} = "$hubUrl";
 	}
 	# allow call to go through without a genome specified to test error
 	if (length($genome)) {
 	  $parameters{"genome"} = "$genome";
 	}
 	if (length($chrom)) {
 	    $parameters{"chrom"} = "$chrom";
 	}
 	if (length($start)) {
 	    $parameters{"start"} = "$start";
 	    $parameters{"end"} = "$end";
 	}
 	$jsonReturn = performJsonAction($endpoint, \%parameters);
 	$errReturn = 1 if (defined ($jsonReturn->{'error'}));
 	printf "%s", $json->pretty->encode( $jsonReturn );
      } elsif ($endpoint eq "/getData/track") {
 	my %parameters;
 	if (length($hubUrl)) {
 	  $parameters{"hubUrl"} = "$hubUrl";
 	}
+	if ($trackLeavesOnly) {
+	    $parameters{"trackLeavesOnly"} = "1";
+	}
 	# allow call to go through without a genome specified to test error
 	if (length($genome)) {
 	    $parameters{"genome"} = "$genome";
 	}
 	if (length($track)) {
 	    $parameters{"track"} = "$track";
 	}
 	if (length($chrom)) {
 	    $parameters{"chrom"} = "$chrom";
 	}
 	if (length($start)) {
 	    $parameters{"start"} = "$start";
 	    $parameters{"end"} = "$end";
 	}
 	$jsonReturn = performJsonAction($endpoint, \%parameters);
 	$errReturn = 1 if (defined ($jsonReturn->{'error'}));
 	printf "%s", $json->pretty->encode( $jsonReturn );
      } else {
 #	printf STDERR "# endpoint not supported at this time: '%s'\n", $endpoint;
 #	Pass along the bogus request just to test the error handling.
 	my %parameters;
+	if (length($hubUrl)) {
+	  $parameters{"hubUrl"} = "$hubUrl";
+	}
+	if (length($genome)) {
+	    $parameters{"genome"} = "$genome";
+	}
+	if (length($track)) {
+	    $parameters{"track"} = "$track";
+	}
+	if (length($chrom)) {
+	    $parameters{"chrom"} = "$chrom";
+	}
+	if (length($start)) {
+	    $parameters{"start"} = "$start";
+	    $parameters{"end"} = "$end";
+	}
 	$jsonReturn = performJsonAction($endpoint, \%parameters);
 	$errReturn = 1 if (defined ($jsonReturn->{'error'}));
 	printf "%s", $json->pretty->encode( $jsonReturn );
      }
   } else {
     printf STDERR "ERROR: no endpoint given ?\n";
     exit 255;
   }
   return $errReturn;
 }	# sub processEndPoint()
 
 ###########################################################################
 ### test /list/publicHubs and /list/ucscGenomes
 sub test0() {