go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/_motor/discovery/k8s/asset_data_test.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package k8s
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  	"github.com/stretchr/testify/require"
    11  	"go.mondoo.com/cnquery/motor/providers"
    12  
    13  	batchv1 "k8s.io/api/batch/v1"
    14  	corev1 "k8s.io/api/core/v1"
    15  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    16  )
    17  
    18  func TestAssetData(t *testing.T) {
    19  	// Seed CronJobs
    20  	cronjob := batchv1.CronJob{
    21  		TypeMeta: metav1.TypeMeta{
    22  			Kind:       "CronJob",
    23  			APIVersion: "batch/v1",
    24  		},
    25  		ObjectMeta: metav1.ObjectMeta{
    26  			Name:      "nginx",
    27  			Namespace: "test123",
    28  			UID:       "123",
    29  		},
    30  		Spec: batchv1.CronJobSpec{
    31  			Schedule: "*/1 * * * *",
    32  			JobTemplate: batchv1.JobTemplateSpec{
    33  				Spec: batchv1.JobSpec{
    34  					Template: corev1.PodTemplateSpec{
    35  						ObjectMeta: metav1.ObjectMeta{
    36  							Labels: map[string]string{
    37  								"app": "nginx",
    38  							},
    39  						},
    40  						Spec: corev1.PodSpec{
    41  							Containers: []corev1.Container{{Image: "nginx:1.22.0-alpine"}},
    42  						},
    43  					},
    44  				},
    45  			},
    46  		},
    47  	}
    48  
    49  	clusterIdentifier := "//platformid.api.mondoo.app/runtime/k8s/uid/e26043bb-8669-48a2-b684-b1e132198cdc"
    50  
    51  	tc := &providers.Config{}
    52  
    53  	asset, err := createAssetFromObject(&cronjob, "k8s-cluster", tc, clusterIdentifier)
    54  	require.NoError(t, err)
    55  
    56  	assert.Equal(t, "batch/v1", asset.Platform.Version)
    57  	assert.Equal(t, "k8s-cronjob", asset.Platform.Name)
    58  	assert.ElementsMatch(t, []string{"k8s", "k8s-workload"}, asset.Platform.Family)
    59  	assert.Equal(t, "test123", asset.Labels["k8s.mondoo.com/namespace"])
    60  	assert.Equal(t, "cronjob", asset.Connections[0].Options["object-kind"])
    61  }
    62  
    63  func TestAssetNodeData(t *testing.T) {
    64  	// Seed CronJobs
    65  	node := corev1.Node{
    66  		TypeMeta: metav1.TypeMeta{
    67  			Kind:       "Node",
    68  			APIVersion: "v1",
    69  		},
    70  		ObjectMeta: metav1.ObjectMeta{
    71  			Name: "minikube",
    72  			UID:  "123",
    73  		},
    74  		Spec: corev1.NodeSpec{},
    75  	}
    76  
    77  	clusterIdentifier := "//platformid.api.mondoo.app/runtime/k8s/uid/e26043bb-8669-48a2-b684-b1e132198cdc"
    78  
    79  	tc := &providers.Config{}
    80  
    81  	asset, err := createAssetFromObject(&node, "k8s-cluster", tc, clusterIdentifier)
    82  	require.NoError(t, err)
    83  
    84  	assert.Equal(t, "v1", asset.Platform.Version)
    85  	assert.Equal(t, "k8s-node", asset.Platform.Name)
    86  	assert.ElementsMatch(t, []string{"k8s"}, asset.Platform.Family)
    87  	assert.Equal(t, "node", asset.Connections[0].Options["object-kind"])
    88  }