github.com/argoproj/argo-cd/v3@v3.2.1/util/kube/portforwarder_test.go (about) 1 package kube 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 corev1 "k8s.io/api/core/v1" 8 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 9 "k8s.io/client-go/kubernetes/fake" 10 ) 11 12 func Test_selectPodForPortForward(t *testing.T) { 13 // Mock the Kubernetes client 14 client := fake.NewSimpleClientset( 15 &corev1.Pod{ 16 ObjectMeta: metav1.ObjectMeta{ 17 Name: "test-pod", 18 Namespace: "default", 19 Labels: map[string]string{ 20 "app": "test-app", 21 }, 22 }, 23 Status: corev1.PodStatus{ 24 Conditions: []corev1.PodCondition{ 25 { 26 Type: corev1.PodReady, 27 Status: corev1.ConditionTrue, 28 LastTransitionTime: metav1.Now(), 29 }, 30 }, 31 Phase: corev1.PodRunning, 32 }, 33 }, 34 &corev1.Pod{ 35 ObjectMeta: metav1.ObjectMeta{ 36 Name: "test2-pod-broken", 37 Namespace: "default", 38 Labels: map[string]string{ 39 "app": "test2", 40 }, 41 }, 42 Status: corev1.PodStatus{ 43 Conditions: []corev1.PodCondition{ 44 { 45 Type: corev1.PodReady, 46 Status: corev1.ConditionFalse, 47 LastTransitionTime: metav1.Now(), 48 }, 49 }, 50 Phase: corev1.PodFailed, 51 }, 52 }, 53 &corev1.Pod{ 54 ObjectMeta: metav1.ObjectMeta{ 55 Name: "test2-pod-working", 56 Namespace: "default", 57 Labels: map[string]string{ 58 "app": "test2", 59 }, 60 }, 61 Status: corev1.PodStatus{ 62 Conditions: []corev1.PodCondition{ 63 { 64 Type: corev1.PodReady, 65 Status: corev1.ConditionTrue, 66 LastTransitionTime: metav1.Now(), 67 }, 68 }, 69 Phase: corev1.PodRunning, 70 }, 71 }, 72 ) 73 74 // Test selecting the pod 75 selectedPod, err := selectPodForPortForward(client, "default", "app=test-app") 76 require.NoError(t, err) 77 require.Equal(t, "test-pod", selectedPod.Name) 78 79 // Test selecting the working pod 80 selectedPod2, err := selectPodForPortForward(client, "default", "app=test2") 81 require.NoError(t, err) 82 require.Equal(t, "test2-pod-working", selectedPod2.Name) 83 }