HTTP API: Implement access to worker prolongation
authorMaciej Wereski <m.wereski@partner.samsung.com>
Fri, 29 Sep 2017 10:27:17 +0000 (12:27 +0200)
committerMaciej Wereski <m.wereski@partner.samsung.com>
Tue, 5 Jun 2018 10:48:28 +0000 (12:48 +0200)
Change-Id: Iecc19c55a9c1b4a674d742e7922776da671fc3c9
Signed-off-by: Maciej Wereski <m.wereski@partner.samsung.com>
server/api/v1/handlers.go
server/api/v1/handlers_test.go
server/api/v1/testdata/prolong-access-POST.json [deleted file]
server/api/v1/testdata/prolong-access-bad-id-POST.json [new file with mode: 0644]
server/api/v1/testdata/prolong-access-missing-POST.json [new file with mode: 0644]
server/api/v1/testdata/prolong-access-valid-POST.json [new file with mode: 0644]

index 8ab22b6..954c389 100644 (file)
@@ -138,7 +138,14 @@ func (api *API) acquireWorkerHandler(r *http.Request, ps map[string]string) resp
 // prolongAccessHandler parses HTTP request for prolonging previously acquired
 // worker and calls ProlongAccess().
 func (api *API) prolongAccessHandler(r *http.Request, ps map[string]string) responseData {
-       return newServerError(ErrNotImplemented, "prolong access")
+       defer r.Body.Close()
+
+       reqid, err := parseReqID(ps["id"])
+       if err != nil {
+               return newServerError(ErrBadID)
+       }
+
+       return newServerError(api.reqs.ProlongAccess(reqid))
 }
 
 // listWorkersHandler parses HTTP request for listing workers and calls ListWorkers().
index 3fcf486..70871c9 100644 (file)
@@ -315,15 +315,26 @@ func TestProlongAccessHandler(t *testing.T) {
        assert, m, api := initTest(t)
        defer m.finish()
 
+       methods := []string{http.MethodPost}
+       prefix := "prolong-access-"
+       pathfmt := "/api/v1/reqs/%s/prolong"
+
+       m.rq.EXPECT().ProlongAccess(ReqID(1)).Return(nil)
+       notFoundTest := testFromTempl(notFoundTestTempl, prefix, fmt.Sprintf(pathfmt, "2"), methods...)
+       m.rq.EXPECT().ProlongAccess(ReqID(2)).Return(NotFoundError("Request"))
+       invalidIDTest := testFromTempl(invalidIDTestTempl, prefix, fmt.Sprintf(pathfmt, invalidID), methods...)
+
        tests := []requestTest{
                {
-                       name:        "prolong-access",
-                       path:        "/api/v1/reqs/8/prolong",
-                       methods:     []string{http.MethodPost},
-                       json:        ``,
+                       name:        prefix + "valid",
+                       path:        fmt.Sprintf(pathfmt, "1"),
+                       methods:     methods,
+                       json:        "",
                        contentType: contentTypeJSON,
-                       status:      http.StatusNotImplemented,
+                       status:      http.StatusNoContent,
                },
+               notFoundTest,
+               invalidIDTest,
        }
 
        runTests(assert, api, tests)
diff --git a/server/api/v1/testdata/prolong-access-POST.json b/server/api/v1/testdata/prolong-access-POST.json
deleted file mode 100644 (file)
index 02eed3c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"error":"not implemented yet: prolong access"}
\ No newline at end of file
diff --git a/server/api/v1/testdata/prolong-access-bad-id-POST.json b/server/api/v1/testdata/prolong-access-bad-id-POST.json
new file mode 100644 (file)
index 0000000..9a1b539
--- /dev/null
@@ -0,0 +1 @@
+{"error":"invalid request: ID provided in URL isn't valid"}
\ No newline at end of file
diff --git a/server/api/v1/testdata/prolong-access-missing-POST.json b/server/api/v1/testdata/prolong-access-missing-POST.json
new file mode 100644 (file)
index 0000000..bb60840
--- /dev/null
@@ -0,0 +1 @@
+{"error":"Request not found"}
\ No newline at end of file
diff --git a/server/api/v1/testdata/prolong-access-valid-POST.json b/server/api/v1/testdata/prolong-access-valid-POST.json
new file mode 100644 (file)
index 0000000..e69de29