github.com/kotalco/kotal@v0.3.0/apis/filecoin/v1alpha1/node_validation_webhook_test.go (about) 1 package v1alpha1 2 3 import ( 4 "fmt" 5 6 "github.com/kotalco/kotal/apis/shared" 7 . "github.com/onsi/ginkgo/v2" 8 . "github.com/onsi/gomega" 9 "k8s.io/apimachinery/pkg/api/errors" 10 "k8s.io/apimachinery/pkg/util/validation/field" 11 ) 12 13 var _ = Describe("Filecoin node validation", func() { 14 15 updateCases := []struct { 16 Title string 17 OldNode *Node 18 NewNode *Node 19 Errors field.ErrorList 20 }{ 21 { 22 Title: "network #1", 23 OldNode: &Node{ 24 Spec: NodeSpec{ 25 Network: MainNetwork, 26 }, 27 }, 28 NewNode: &Node{ 29 Spec: NodeSpec{ 30 Network: CalibrationNetwork, 31 }, 32 }, 33 Errors: field.ErrorList{ 34 { 35 Type: field.ErrorTypeInvalid, 36 Field: "spec.network", 37 BadValue: CalibrationNetwork, 38 Detail: "field is immutable", 39 }, 40 }, 41 }, 42 } 43 44 Context("While updating node", func() { 45 for _, c := range updateCases { 46 func() { 47 cc := c 48 It(fmt.Sprintf("Should validate %s", cc.Title), func() { 49 cc.NewNode.Default() 50 cc.OldNode.Default() 51 _, err := cc.NewNode.ValidateUpdate(cc.OldNode) 52 53 errStatus := err.(*errors.StatusError) 54 55 causes := shared.ErrorsToCauses(cc.Errors) 56 57 Expect(errStatus.ErrStatus.Details.Causes).To(ContainElements(causes)) 58 }) 59 }() 60 } 61 }) 62 63 })