Additional test, cleanup
diff --git a/api.go b/api.go index 0904919..f4f2803 100644 --- a/api.go +++ b/api.go
@@ -248,35 +248,40 @@ // validate the results // todo: these errors to the client should be standardized var errs bytes.Buffer - for i, rsp := range results { - if rsp.ID == "" { + var validResults apiDeploymentResults + for i, result := range results { + valid := true + if result.ID == "" { errs.WriteString(fmt.Sprintf("Missing id at %d\n", i)) } - if rsp.Status != RESPONSE_STATUS_SUCCESS && rsp.Status != RESPONSE_STATUS_FAIL { - errs.WriteString(fmt.Sprintf("status must be '%s' or '%s' at %d\n", RESPONSE_STATUS_SUCCESS, RESPONSE_STATUS_FAIL, i)) + if result.Status != RESPONSE_STATUS_SUCCESS && result.Status != RESPONSE_STATUS_FAIL { + errs.WriteString(fmt.Sprintf("status must be '%s' or '%s' at %d\n", + RESPONSE_STATUS_SUCCESS, RESPONSE_STATUS_FAIL, i)) } - if rsp.Status == RESPONSE_STATUS_FAIL { - if rsp.ErrorCode == 0 { + if result.Status == RESPONSE_STATUS_FAIL { + if result.ErrorCode == 0 { errs.WriteString(fmt.Sprintf("errorCode is required for status == fail at %d\n", i)) } - if rsp.Message == "" { + if result.Message == "" { errs.WriteString(fmt.Sprintf("message are required for status == fail at %d\n", i)) } } + + if valid { + validResults = append(validResults, result) + } } + if errs.Len() > 0 { writeError(w, http.StatusBadRequest, ERROR_CODE_TODO, errs.String()) + return } - err = setDeploymentResults(results) - if err != nil { - writeDatabaseError(w) - } + w.Write([]byte("OK")) - // todo: transmit to server (API TBD) - //err = transmitDeploymentResultsToServer() + setDeploymentResults(validResults) - return + //go transmitDeploymentResultsToServer(validResults) }
diff --git a/apidGatewayDeploy_suite_test.go b/apidGatewayDeploy_suite_test.go index 33d3cf3..d43c35f 100644 --- a/apidGatewayDeploy_suite_test.go +++ b/apidGatewayDeploy_suite_test.go
@@ -60,6 +60,18 @@ } w.Write([]byte("/bundles/" + vars["id"])) }) + router.HandleFunc("/bundles/{id}", func(w http.ResponseWriter, req *http.Request) { + count++ + vars := apid.API().Vars(req) + if count % 2 == 0 { + w.WriteHeader(500) + return + } + if vars["id"] == "longfail" { + time.Sleep(bundleDownloadTimeout + (250 * time.Millisecond)) + } + w.Write([]byte("/bundles/" + vars["id"])) + }) testServer = httptest.NewServer(router) })