istio.io/istio@v0.0.0-20240520182934-d79c90f27776/pkg/test/util/structpath/instance_test.go (about) 1 // Copyright Istio Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package structpath_test 16 17 import ( 18 "testing" 19 20 discovery "github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3" 21 22 "istio.io/istio/pkg/test/util/structpath" 23 ) 24 25 func TestContainSubstring(t *testing.T) { 26 testResponse := &discovery.DiscoveryResponse{ 27 VersionInfo: "2019-07-16T10:54:41-07:00/1", 28 TypeUrl: "some.Random.Type.URL", 29 } 30 validator := structpath.ForProto(testResponse) 31 32 tests := []struct { 33 name string 34 substrs []string 35 err bool 36 }{ 37 { 38 name: "Substring exist", 39 substrs: []string{"Random", "Type", "URL", "some"}, 40 err: false, 41 }, 42 { 43 name: "Substring does not exist", 44 substrs: []string{"RaNdOm"}, 45 err: true, 46 }, 47 { 48 name: "Substring empty", 49 substrs: []string{" "}, 50 err: true, 51 }, 52 } 53 for _, tt := range tests { 54 t.Run(tt.name, func(t *testing.T) { 55 var instance *structpath.Instance 56 for _, s := range tt.substrs { 57 instance = validator.ContainSubstring(s, "{.typeUrl}") 58 } 59 err := instance.Check() 60 if tt.err && err == nil { 61 t.Errorf("expected err but got none for %s", tt.name) 62 } 63 }) 64 } 65 }