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 }