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)
})