about summary refs log tree commit diff
diff options
context:
space:
mode:
authorfranck cuny <franck@lumberjaph.net>2011-05-09 10:28:30 +0200
committerfranck cuny <franck@lumberjaph.net>2011-05-09 16:42:15 +0200
commitd7f748b4d6dab2535514d6777cc6301ae052fab6 (patch)
tree3cbd98d68a0a09df87edf71d4dd1ccf9322633a6
parentdisplay the number of builds for the day (closes GH #53) (diff)
downloadjitterbug-d7f748b4d6dab2535514d6777cc6301ae052fab6.tar.gz
add a new route to the API to delete a task
Signed-off-by: franck cuny <franck@lumberjaph.net>
-rw-r--r--lib/jitterbug/WebService.pm15
-rw-r--r--t/003_hook_route.t25
2 files changed, 39 insertions, 1 deletions
diff --git a/lib/jitterbug/WebService.pm b/lib/jitterbug/WebService.pm
index 65f6963..d0cf92f 100644
--- a/lib/jitterbug/WebService.pm
+++ b/lib/jitterbug/WebService.pm
@@ -36,4 +36,19 @@ get '/build/:project/:commit/:version' => sub {
     }
 };
 
+del '/task/:id' => sub {
+    my $id = params->{id};
+
+    my $task = schema->resultset('Task')->find({sha256 => $id});
+
+    if (!$task){
+        send_error("Can't find task for $id", 404);
+        return;
+    }
+
+    $task->delete;
+    status(201);
+    {status => "task $id deleted"};
+};
+
 1;
diff --git a/t/003_hook_route.t b/t/003_hook_route.t
index 11c7af4..8475382 100644
--- a/t/003_hook_route.t
+++ b/t/003_hook_route.t
@@ -1,4 +1,4 @@
-use Test::More tests => 13;
+use Test::More tests => 15;
 use strict;
 use warnings;
 
@@ -161,6 +161,29 @@ my $response;
       'can stack tasks for this project';
 }
 
+{
+    # delete a task
+    $schema->resultset('Project')->search()->delete();
+    $schema->resultset('Task')->search()->delete();
+
+    # 404 when there is no task
+    $response = dancer_response(DELETE => '/api/task/1');
+    is $response->status, 404;
+
+    $response = dancer_response(
+        POST => '/hook/',
+        {
+            headers =>
+              [ 'Content-Type' => 'application/x-www-form-urlencoded' ],
+            body => _generate_post_request($content),
+        }
+    );
+
+    my $task = $schema->resultset('Task')->search()->single();
+    $response = dancer_response(DELETE => '/api/task/'.$task->sha256);
+    is $response->status, 201;
+}
+
 sub _generate_post_request {
     my $content = shift;
     my $payload = "payload=" . JSON::encode_json($content);