github.com/opentofu/opentofu@v1.7.1/internal/tofu/update_state_hook_test.go (about) 1 // Copyright (c) The OpenTofu Authors 2 // SPDX-License-Identifier: MPL-2.0 3 // Copyright (c) 2023 HashiCorp, Inc. 4 // SPDX-License-Identifier: MPL-2.0 5 6 package tofu 7 8 import ( 9 "testing" 10 11 "github.com/davecgh/go-spew/spew" 12 "github.com/zclconf/go-cty/cty" 13 14 "github.com/opentofu/opentofu/internal/addrs" 15 "github.com/opentofu/opentofu/internal/states" 16 ) 17 18 func TestUpdateStateHook(t *testing.T) { 19 mockHook := new(MockHook) 20 21 state := states.NewState() 22 state.Module(addrs.RootModuleInstance).SetLocalValue("foo", cty.StringVal("hello")) 23 24 ctx := new(MockEvalContext) 25 ctx.HookHook = mockHook 26 ctx.StateState = state.SyncWrapper() 27 28 if err := updateStateHook(ctx); err != nil { 29 t.Fatalf("err: %s", err) 30 } 31 32 if !mockHook.PostStateUpdateCalled { 33 t.Fatal("should call PostStateUpdate") 34 } 35 if mockHook.PostStateUpdateState.LocalValue(addrs.LocalValue{Name: "foo"}.Absolute(addrs.RootModuleInstance)) != cty.StringVal("hello") { 36 t.Fatalf("wrong state passed to hook: %s", spew.Sdump(mockHook.PostStateUpdateState)) 37 } 38 }