diff --git a/controllers/networkHttpController.go b/controllers/networkHttpController.go index 4d793346..bd6b21c2 100644 --- a/controllers/networkHttpController.go +++ b/controllers/networkHttpController.go @@ -673,14 +673,21 @@ func deleteAccessKey(w http.ResponseWriter, r *http.Request) { } //basically, turn the list of access keys into the list of access keys before and after the item //have not done any error handling for if there's like...1 item. I think it works? need to test. + found := false for i := len(network.AccessKeys) - 1; i >= 0; i-- { currentkey := network.AccessKeys[i] if currentkey.Name == keyname { network.AccessKeys = append(network.AccessKeys[:i], network.AccessKeys[i+1:]...) + found = true } } + if !found { + err = errors.New("key " + keyname + " does not exist") + returnErrorResponse(w, r, formatError(err, "badrequest")) + return + } collection := mongoconn.Client.Database("netmaker").Collection("networks") diff --git a/test/group_test.go b/test/group_test.go index b1f83d82..d66c670d 100644 --- a/test/group_test.go +++ b/test/group_test.go @@ -222,7 +222,8 @@ func TestCreateAccessKey(t *testing.T) { } func TestDeleteKey(t *testing.T) { - + //ensure key exists + createKey(t) t.Run("KeyValid", func(t *testing.T) { //fails -- deletecount not returned response, err := api(t, "", http.MethodDelete, baseURL+"/api/networks/skynet/keys/skynet", "secretkey") @@ -238,16 +239,15 @@ func TestDeleteKey(t *testing.T) { } }) t.Run("InValidKey", func(t *testing.T) { - - //responds ok, will nil record returned.. should be an error. response, err := api(t, "", http.MethodDelete, baseURL+"/api/networks/skynet/keys/badkey", "secretkey") assert.Nil(t, err, err) defer response.Body.Close() var message models.ErrorResponse err = json.NewDecoder(response.Body).Decode(&message) assert.Nil(t, err, err) - assert.Equal(t, "W1R3: This key does not exist.", message.Message) - assert.Equal(t, http.StatusNotFound, response.StatusCode) + assert.Equal(t, http.StatusBadRequest, message.Code) + assert.Equal(t, "key badkey does not exist", message.Message) + assert.Equal(t, http.StatusBadRequest, response.StatusCode) }) t.Run("KeyInValidnetwork", func(t *testing.T) { response, err := api(t, "", http.MethodDelete, baseURL+"/api/networks/badnetwork/keys/skynet", "secretkey")