Jobset: list known inputs in invalid input type response
This commit is contained in:
parent
18d271655c
commit
03d5a858a7
|
@ -213,6 +213,22 @@ sub checkInputValue {
|
|||
}
|
||||
|
||||
|
||||
sub knownInputTypes {
|
||||
my ($c) = @_;
|
||||
|
||||
my @keys = keys %{$c->stash->{inputTypes}};
|
||||
my $types = "";
|
||||
my $counter = 0;
|
||||
|
||||
foreach my $key (@keys) {
|
||||
$types = $types . "and ‘$key’" if ++$counter == scalar(@keys);
|
||||
$types = $types . "‘$key’, " if $counter != scalar(@keys);
|
||||
}
|
||||
|
||||
return $types;
|
||||
}
|
||||
|
||||
|
||||
sub updateJobset {
|
||||
my ($c, $jobset) = @_;
|
||||
|
||||
|
@ -275,9 +291,10 @@ sub updateJobset {
|
|||
my $type = $inputData->{type};
|
||||
my $value = $inputData->{value};
|
||||
my $emailresponsible = defined $inputData->{emailresponsible} ? 1 : 0;
|
||||
my $types = knownInputTypes($c);
|
||||
|
||||
error($c, "Invalid input name ‘$name’.") unless $name =~ /^[[:alpha:]][\w-]*$/;
|
||||
error($c, "Invalid input type ‘$type’.") unless defined $c->stash->{inputTypes}->{$type};
|
||||
badRequest($c, "Invalid input name ‘$name’.") unless $name =~ /^[[:alpha:]][\w-]*$/;
|
||||
badRequest($c, "Invalid input type ‘$type’; valid types: $types.") unless defined $c->stash->{inputTypes}->{$type};
|
||||
|
||||
my $input = $jobset->jobsetinputs->create(
|
||||
{ name => $name,
|
||||
|
|
|
@ -157,6 +157,36 @@ subtest 'Update jobset "job" to legacy type' => sub {
|
|||
};
|
||||
|
||||
|
||||
subtest 'Update jobset "job" to have an invalid input type' => sub {
|
||||
my $jobsetupdate = request(PUT '/jobset/tests/job',
|
||||
Accept => 'application/json',
|
||||
Content_Type => 'application/json',
|
||||
Cookie => $cookie,
|
||||
Content => encode_json({
|
||||
enabled => 3,
|
||||
visible => JSON::true,
|
||||
name => "job",
|
||||
type => 0,
|
||||
nixexprinput => "ofborg",
|
||||
nixexprpath => "release.nix",
|
||||
inputs => {
|
||||
ofborg => {
|
||||
name => "ofborg",
|
||||
type => "123",
|
||||
value => "https://github.com/NixOS/ofborg.git released"
|
||||
}
|
||||
},
|
||||
description => "test jobset",
|
||||
checkinterval => 0,
|
||||
schedulingshares => 50,
|
||||
keepnr => 1
|
||||
})
|
||||
);
|
||||
ok(!$jobsetupdate->is_success);
|
||||
ok($jobsetupdate->content =~ m/Invalid input type.*valid types:/);
|
||||
};
|
||||
|
||||
|
||||
subtest 'Delete jobset "job"' => sub {
|
||||
my $jobsetinfo = request(DELETE '/jobset/tests/job',
|
||||
Accept => 'application/json',
|
||||
|
|
Loading…
Reference in a new issue