Change missing profile HTTP response code to 404 06/99606/2
authorKonrad Bańka <k.banka@samsung.com>
Tue, 7 Jan 2020 15:01:07 +0000 (16:01 +0100)
committerKonrad Bańka <k.banka@samsung.com>
Tue, 7 Jan 2020 15:01:07 +0000 (16:01 +0100)
Issue-ID: MULTICLOUD-967
Signed-off-by: Konrad Bańka <k.banka@samsung.com>
Change-Id: I3d213f65ee37443a55b74255b475e27c0d93cf2c

src/k8splugin/api/profilehandler.go
src/k8splugin/api/profilehandler_test.go

index 68ab77a..2461d4f 100644 (file)
@@ -21,6 +21,7 @@ import (
        "io"
        "io/ioutil"
        "net/http"
+       "strings"
 
        "github.com/onap/multicloud-k8s/src/k8splugin/internal/rb"
 
@@ -107,8 +108,14 @@ func (h rbProfileHandler) getHandler(w http.ResponseWriter, r *http.Request) {
 
        ret, err := h.client.Get(rbName, rbVersion, prName)
        if err != nil {
-               http.Error(w, err.Error(), http.StatusInternalServerError)
-               return
+               // Separate "Not found" from generic DB errors
+               if strings.Contains(err.Error(), "Error finding") {
+                       http.Error(w, err.Error(), http.StatusNotFound)
+                       return
+               } else {
+                       http.Error(w, err.Error(), http.StatusInternalServerError)
+                       return
+               }
        }
 
        w.Header().Set("Content-Type", "application/json")
index 4dae377..9ec9c54 100644 (file)
@@ -184,9 +184,18 @@ func TestRBProfileGetHandler(t *testing.T) {
                        },
                },
                {
-                       label:        "Get Non-Exiting Bundle Profile",
-                       expectedCode: http.StatusInternalServerError,
+                       label:        "Get Non-Existing Profile",
+                       expectedCode: http.StatusNotFound,
                        prname:       "non-existing-profile",
+                       rbProClient: &mockRBProfile{
+                               Items: nil,
+                               Err:   pkgerrors.New("Error finding master table"),
+                       },
+               },
+               {
+                       label:        "Faulty DB response",
+                       expectedCode: http.StatusInternalServerError,
+                       prname:       "profile",
                        rbProClient: &mockRBProfile{
                                // list of Profiles that will be returned by the mockclient
                                Items: []rb.Profile{},