github.com/etecs-ru/gnomock@v0.13.2/preset/k3s/preset_test.go (about)

     1  package k3s_test
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/etecs-ru/gnomock"
     8  	"github.com/etecs-ru/gnomock/preset/k3s"
     9  	"github.com/stretchr/testify/require"
    10  	v1 "k8s.io/api/core/v1"
    11  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    12  	"k8s.io/client-go/kubernetes"
    13  )
    14  
    15  func TestPreset(t *testing.T) {
    16  	t.Parallel()
    17  
    18  	p := k3s.Preset(
    19  		k3s.WithPort(48448),
    20  		k3s.WithVersion("v1.19.3"),
    21  	)
    22  	c, err := gnomock.Start(
    23  		p,
    24  		gnomock.WithContainerName("k3s"),
    25  		gnomock.WithDebugMode(),
    26  	)
    27  	require.NoError(t, err)
    28  
    29  	defer func() {
    30  		require.NoError(t, gnomock.Stop(c))
    31  	}()
    32  
    33  	kubeconfig, err := k3s.Config(c)
    34  	require.NoError(t, err)
    35  
    36  	client, err := kubernetes.NewForConfig(kubeconfig)
    37  	require.NoError(t, err)
    38  
    39  	ctx := context.Background()
    40  
    41  	pods, err := client.CoreV1().Pods(metav1.NamespaceDefault).List(ctx, metav1.ListOptions{})
    42  	require.NoError(t, err)
    43  	require.Empty(t, pods.Items)
    44  
    45  	pod := &v1.Pod{
    46  		ObjectMeta: metav1.ObjectMeta{
    47  			Name:      "gnomock",
    48  			Namespace: metav1.NamespaceDefault,
    49  		},
    50  		Spec: v1.PodSpec{
    51  			Containers: []v1.Container{
    52  				{
    53  					Name:  "gnomock",
    54  					Image: "docker.io/orlangure/gnomock-test-image",
    55  				},
    56  			},
    57  			RestartPolicy: v1.RestartPolicyNever,
    58  		},
    59  	}
    60  
    61  	_, err = client.CoreV1().Pods(metav1.NamespaceDefault).Create(ctx, pod, metav1.CreateOptions{})
    62  	require.NoError(t, err)
    63  
    64  	pods, err = client.CoreV1().Pods(metav1.NamespaceDefault).List(ctx, metav1.ListOptions{})
    65  	require.NoError(t, err)
    66  	require.Len(t, pods.Items, 1)
    67  	require.Equal(t, "gnomock", pods.Items[0].Name)
    68  }
    69  
    70  func TestPreset_withDefaults(t *testing.T) {
    71  	t.Parallel()
    72  
    73  	p := k3s.Preset()
    74  	c, err := gnomock.Start(p, gnomock.WithContainerName("k3s-default"))
    75  	require.NoError(t, err)
    76  
    77  	defer func() {
    78  		require.NoError(t, gnomock.Stop(c))
    79  	}()
    80  
    81  	kubeconfig, err := k3s.Config(c)
    82  	require.NoError(t, err)
    83  
    84  	client, err := kubernetes.NewForConfig(kubeconfig)
    85  	require.NoError(t, err)
    86  
    87  	ctx := context.Background()
    88  
    89  	pods, err := client.CoreV1().Pods(metav1.NamespaceDefault).List(ctx, metav1.ListOptions{})
    90  	require.NoError(t, err)
    91  	require.Empty(t, pods.Items)
    92  }