mirror of https://github.com/k3s-io/k3s
client-go/testing: properly handle Patch actions for missing Objects
Currently the fake client will return a default empty Object when a Patch action is submitted on a missing Object. The correct behavior is to instead propagate the NotFound error.pull/564/head
parent
1b28775db1
commit
96d0588440
|
@ -42,6 +42,7 @@ go_test(
|
|||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library",
|
||||
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
||||
],
|
||||
|
|
|
@ -131,8 +131,7 @@ func ObjectReaction(tracker ObjectTracker) ReactionFunc {
|
|||
case PatchActionImpl:
|
||||
obj, err := tracker.Get(gvr, ns, action.GetName())
|
||||
if err != nil {
|
||||
// object is not registered
|
||||
return false, nil, err
|
||||
return true, nil, err
|
||||
}
|
||||
|
||||
old, err := json.Marshal(obj)
|
||||
|
|
|
@ -30,6 +30,7 @@ import (
|
|||
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/apimachinery/pkg/watch"
|
||||
)
|
||||
|
||||
|
@ -258,3 +259,17 @@ func TestWatchAddAfterStop(t *testing.T) {
|
|||
t.Errorf("test resource creation failed: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPatchWithMissingObject(t *testing.T) {
|
||||
nodesResource := schema.GroupVersionResource{Group: "", Version: "v1", Resource: "nodes"}
|
||||
|
||||
scheme := runtime.NewScheme()
|
||||
codecs := serializer.NewCodecFactory(scheme)
|
||||
o := NewObjectTracker(scheme, codecs.UniversalDecoder())
|
||||
reaction := ObjectReaction(o)
|
||||
action := NewRootPatchSubresourceAction(nodesResource, "node-1", types.StrategicMergePatchType, []byte(`{}`))
|
||||
handled, node, err := reaction(action)
|
||||
assert.True(t, handled)
|
||||
assert.Nil(t, node)
|
||||
assert.EqualError(t, err, `nodes "node-1" not found`)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue