Skip to content

Commit

Permalink
Merge pull request NixOS#607 from nlewo/json-search
Browse files Browse the repository at this point in the history
Add JSON search API endpoint
  • Loading branch information
grahamc committed Mar 18, 2019
2 parents 0721f66 + 0d2a2d8 commit 215ca5d
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
5 changes: 5 additions & 0 deletions src/lib/Hydra/Controller/Root.pm
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,11 @@ sub search :Local Args(0) {
$c->stash->{buildsdrv} = [ $c->model('DB::Builds')->search(
{ "drvpath" => trim($query) },
{ order_by => ["id desc"] } ) ];

$c->stash->{resource} = { projects => $c->stash->{projects},
jobsets => $c->stash->{jobsets},
builds => $c->stash->{builds},
buildsdrv => $c->stash->{buildsdrv} };
}

sub serveLogFile {
Expand Down
13 changes: 10 additions & 3 deletions tests/api-test.pl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use LWP::UserAgent;
use JSON;
use Test::Simple tests => 17;
use Test::Simple tests => 19;

my $ua = LWP::UserAgent->new;
$ua->cookie_jar({});
Expand Down Expand Up @@ -34,14 +34,14 @@ sub request_json {

ok(request_json({ uri => '/project/sample' })->code() == 404, "Non-existent projects don't exist");

$result = request_json({ uri => '/project/sample', method => 'PUT', data => { displayname => "Sample", enabled => "1", } });
$result = request_json({ uri => '/project/sample', method => 'PUT', data => { displayname => "Sample", enabled => "1", visible => "1", } });
ok($result->code() == 201, "PUTting a new project creates it");

my $project = decode_json(request_json({ uri => '/project/sample' })->content());

ok((not @{$project->{jobsets}}), "A new project has no jobsets");

$result = request_json({ uri => '/jobset/sample/default', method => 'PUT', data => { nixexprpath => "default.nix", nixexprinput => "my-src", inputs => { "my-src" => { type => "path", value => "/run/jobset" } }, enabled => "1", checkinterval => "3600"} });
$result = request_json({ uri => '/jobset/sample/default', method => 'PUT', data => { nixexprpath => "default.nix", nixexprinput => "my-src", inputs => { "my-src" => { type => "path", value => "/run/jobset" } }, enabled => "1", visible => "1", checkinterval => "3600"} });
ok($result->code() == 201, "PUTting a new jobset creates it");

my $jobset = decode_json(request_json({ uri => '/jobset/sample/default' })->content());
Expand All @@ -65,3 +65,10 @@ sub request_json {
ok($build->{job} eq "job", "The build's job name is job");
ok($build->{finished} == 0, "The build isn't finished yet");
ok($build->{buildoutputs}->{out}->{path} =~ /^\/nix\/store\/[a-zA-Z0-9]{32}-job$/, "The build's outpath is in the Nix store and named 'job'");


my $search_project = decode_json(request_json({ uri => "/search/?query=sample" })->content());
ok($search_project->{projects}[0]->{name} == "sample", "Search for project 'sample' works");

my $search_build = decode_json(request_json({ uri => "/search/?query=" . $build->{buildoutputs}->{out}->{path} })->content());
ok($search_build->{builds}[0]->{buildoutputs}->{out}->{path} == $build->{buildoutputs}->{out}->{path}, "Search for builds work");

0 comments on commit 215ca5d

Please sign in to comment.