github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/rules/specs/loader_test.go (about)

     1  package specs
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestLoadSpecs(t *testing.T) {
    11  	tests := []struct {
    12  		name         string
    13  		specName     string
    14  		wantSpecPath string
    15  	}{
    16  		{name: "nsa spec", specName: "k8s-nsa", wantSpecPath: "./compliance/k8s-nsa-1.0.yaml"},
    17  		{name: "k8s cis bench", specName: "k8s-cis", wantSpecPath: "./compliance/k8s-cis-1.23.yaml"},
    18  		{name: "k8s pss baseline", specName: "k8s-pss-baseline", wantSpecPath: "./compliance/k8s-pss-baseline.yaml"},
    19  		{name: "k8s pss restricted", specName: "k8s-pss-restricted", wantSpecPath: "./compliance/k8s-pss-restricted.yaml"},
    20  		{name: "awscis1.2", specName: "aws-cis-1.2", wantSpecPath: "./compliance/aws-cis-1.2.yaml"},
    21  		{name: "awscis1.4", specName: "aws-cis-1.4", wantSpecPath: "./compliance/aws-cis-1.4.yaml"},
    22  		{name: "docker cis bench", specName: "docker-cis", wantSpecPath: "./compliance/docker-cis.yaml"},
    23  		{name: "awscis1.2 by filepath", specName: "@./compliance/aws-cis-1.2.yaml", wantSpecPath: "./compliance/aws-cis-1.2.yaml"},
    24  		{name: "bogus spec", specName: "foobarbaz"},
    25  	}
    26  
    27  	for _, tt := range tests {
    28  		t.Run(tt.name, func(t *testing.T) {
    29  			if tt.wantSpecPath != "" {
    30  				wantSpecData, err := os.ReadFile(tt.wantSpecPath)
    31  				assert.NoError(t, err)
    32  				gotSpecData := GetSpec(tt.specName)
    33  				assert.Equal(t, gotSpecData, string(wantSpecData))
    34  			} else {
    35  				assert.Empty(t, GetSpec(tt.specName), tt.name)
    36  			}
    37  		})
    38  	}
    39  }