github.com/aquasecurity/trivy-iac@v0.8.1-0.20240127024015-3d8e412cf0ab/pkg/scanners/azure/arm/parser/template_test.go (about) 1 package parser 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 8 "github.com/aquasecurity/defsec/pkg/types" 9 types2 "github.com/aquasecurity/trivy-iac/pkg/scanners/azure" 10 "github.com/aquasecurity/trivy-iac/pkg/scanners/azure/arm/parser/armjson" 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 ) 14 15 func Test_JSONUnmarshal(t *testing.T) { 16 data, err := os.ReadFile(filepath.Join("testdata", "example.json")) 17 require.NoError(t, err) 18 var target Template 19 metadata := types.NewTestMetadata() 20 require.NoError(t, armjson.Unmarshal(data, &target, &metadata)) 21 assert.Equal(t, 22 "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", 23 target.Schema.AsString(), 24 ) 25 require.Len(t, target.Schema.Comments, 2) 26 assert.Equal(t, " wow this is a comment", target.Schema.Comments[0]) 27 assert.Equal(t, " another one", target.Schema.Comments[1]) 28 29 assert.Equal(t, "1.0.0.0", target.ContentVersion.Raw()) 30 require.Len(t, target.ContentVersion.Comments, 1) 31 assert.Equal(t, " this version is great", target.ContentVersion.Comments[0]) 32 33 require.Contains(t, target.Parameters, "storagePrefix") 34 prefix := target.Parameters["storagePrefix"] 35 /* 36 "type": "string", 37 "defaultValue": "x", 38 "maxLength": 11, 39 "minLength": 3 40 */ 41 assert.Equal(t, "string", prefix.Type.Raw()) 42 assert.Equal(t, types2.KindString, prefix.Type.Kind) 43 assert.Equal(t, 8, prefix.Type.Metadata.Range().GetStartLine()) 44 assert.Equal(t, 8, prefix.Type.Metadata.Range().GetEndLine()) 45 46 assert.Equal(t, "x", prefix.DefaultValue.Raw()) 47 assert.Equal(t, types2.KindString, prefix.DefaultValue.Kind) 48 assert.Equal(t, 9, prefix.DefaultValue.Metadata.Range().GetStartLine()) 49 assert.Equal(t, 9, prefix.DefaultValue.Metadata.Range().GetEndLine()) 50 51 assert.Equal(t, int64(11), prefix.MaxLength.Raw()) 52 assert.Equal(t, types2.KindNumber, prefix.MaxLength.Kind) 53 assert.Equal(t, 10, prefix.MaxLength.Metadata.Range().GetStartLine()) 54 assert.Equal(t, 10, prefix.MaxLength.Metadata.Range().GetEndLine()) 55 56 assert.Equal(t, int64(3), prefix.MinLength.Raw()) 57 assert.Equal(t, types2.KindNumber, prefix.MinLength.Kind) 58 assert.Equal(t, 11, prefix.MinLength.Metadata.Range().GetStartLine()) 59 assert.Equal(t, 11, prefix.MinLength.Metadata.Range().GetEndLine()) 60 }