Files
kustomize/kyaml/fn/framework/parser/schema_test.go
2022-04-21 18:28:13 -04:00

101 lines
2.3 KiB
Go

// Copyright 2021 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package parser_test
import (
_ "embed"
iofs "io/fs"
"os"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"sigs.k8s.io/kustomize/kyaml/fn/framework/parser"
)
//go:embed testdata/schema1.json
var schema1String string
//go:embed testdata/schema2.json
var schema2String string
func TestSchemaFiles(t *testing.T) {
tests := []struct {
name string
paths []string
fs iofs.FS
expectedCount int
wantErr string
}{
{
name: "parses schema from file",
paths: []string{"testdata/schema1.json"},
expectedCount: 1,
},
{
name: "accepts multiple inputs",
paths: []string{"testdata/schema1.json", "testdata/schema2.json"},
expectedCount: 2,
},
{
name: "parses templates from directory",
paths: []string{"testdata"},
expectedCount: 2,
},
{
name: "can be configured with an alternative FS",
fs: os.DirFS("testdata"), // changes the root of the input paths
paths: []string{"schema1.json"},
expectedCount: 1,
},
{
name: "rejects non-.template.yaml files",
paths: []string{"testdata/ignore.yaml"},
wantErr: "file testdata/ignore.yaml does not have any of permitted extensions [.json]",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
p := parser.SchemaFiles(tt.paths...)
if tt.fs != nil {
p = p.FromFS(tt.fs)
}
schemas, err := p.Parse()
if tt.wantErr != "" {
require.EqualError(t, err, tt.wantErr)
return
}
require.NoError(t, err)
assert.Equal(t, tt.expectedCount, len(schemas))
})
}
}
func TestSchemaStrings(t *testing.T) {
tests := []struct {
name string
data []string
expectedCount int
}{
{
name: "parses templates from strings",
data: []string{schema1String},
expectedCount: 1,
},
{
name: "accepts multiple inputs",
data: []string{schema1String, schema2String},
expectedCount: 2,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
p := parser.SchemaStrings(tt.data...)
schemas, err := p.Parse()
require.NoError(t, err)
assert.Equal(t, tt.expectedCount, len(schemas))
})
}
}