// getRequestInfoHandler parses HTTP request for getting information about Boruta
// request and calls GetRequestInfo().
func (api *API) getRequestInfoHandler(r *http.Request, ps map[string]string) responseData {
- return newServerError(ErrNotImplemented, "get request info")
+ defer r.Body.Close()
+
+ reqid, err := parseReqID(ps["id"])
+ if err != nil {
+ return newServerError(ErrBadID)
+ }
+
+ reqinfo, err := api.reqs.GetRequestInfo(reqid)
+ if err != nil {
+ return newServerError(err)
+ }
+
+ return reqinfo
}
// listRequestsHandler parses HTTP request for listing Boruta requests and calls
assert, m, api := initTest(t)
defer m.finish()
+ methods := []string{http.MethodGet, http.MethodHead}
+ prefix := "req-info-"
+ path := "/api/v1/reqs/"
+
+ var req ReqInfo
+ err := json.Unmarshal([]byte(validReqJSON), &req)
+ assert.Nil(err)
+
+ notFoundTest := testFromTempl(notFoundTestTempl, prefix, path+"2", methods...)
+ invalidIDTest := testFromTempl(invalidIDTestTempl, prefix, path+invalidID, methods...)
+ m.rq.EXPECT().GetRequestInfo(ReqID(1)).Return(req, nil).Times(2)
+ m.rq.EXPECT().GetRequestInfo(ReqID(2)).Return(ReqInfo{}, NotFoundError("Request")).Times(2)
+
tests := []requestTest{
+ // Get information of existing request.
{
name: "req-info",
- path: "/api/v1/reqs/8",
- methods: []string{http.MethodGet, http.MethodHead},
+ path: path + "1",
+ methods: methods,
json: ``,
contentType: contentTypeJSON,
- status: http.StatusNotImplemented,
+ status: http.StatusOK,
},
+ // Try to get request information of request that doesn't exist.
+ notFoundTest,
+ // Try to get request with invalid ID.
+ invalidIDTest,
}
runTests(assert, api, tests)
-{"error":"not implemented yet: get request info"}
\ No newline at end of file
+{"ID":1,"Priority":8,"Owner":{"Groups":null},"Deadline":"2200-12-31T01:02:03Z","ValidAfter":"2100-01-01T04:05:06Z","State":"WAITING","Job":null,"Caps":{"architecture":"armv7l","monitor":"yes"}}
\ No newline at end of file