package k8s import ( "testing" batchv1 "k8s.io/api/batch/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/fake" ) func TestCreateJob(t *testing.T) { clientset := fake.NewSimpleClientset() client := NewClientFromInterface(clientset) job, err := client.CreateJob(&JobSpec{ Name: "test-job", Namespace: "default", Image: "test-image:v1", EnvVars: map[string]string{"KEY": "value"}, TimeoutSecond: 300, }) if err != nil { t.Fatalf("CreateJob: %v", err) } if job.Name != "test-job" { t.Errorf("Name = %q, want %q", job.Name, "test-job") } if job.Status != JobPending { t.Errorf("Status = %q, want %q", job.Status, JobPending) } } func TestGetJob(t *testing.T) { clientset := fake.NewSimpleClientset(&batchv1.Job{ ObjectMeta: metav1.ObjectMeta{Name: "done-job", Namespace: "default"}, Status: batchv1.JobStatus{Succeeded: 1}, }) client := NewClientFromInterface(clientset) job, err := client.GetJob("done-job", "default") if err != nil { t.Fatalf("GetJob: %v", err) } if job.Status != JobSucceeded { t.Errorf("Status = %q, want %q", job.Status, JobSucceeded) } } func TestGetJob_Running(t *testing.T) { clientset := fake.NewSimpleClientset(&batchv1.Job{ ObjectMeta: metav1.ObjectMeta{Name: "run-job", Namespace: "default"}, Status: batchv1.JobStatus{Active: 1}, }) client := NewClientFromInterface(clientset) job, err := client.GetJob("run-job", "default") if err != nil { t.Fatalf("GetJob: %v", err) } if job.Status != JobRunning { t.Errorf("Status = %q, want %q", job.Status, JobRunning) } } func TestDeleteJob(t *testing.T) { clientset := fake.NewSimpleClientset(&batchv1.Job{ ObjectMeta: metav1.ObjectMeta{Name: "del-job", Namespace: "default"}, }) client := NewClientFromInterface(clientset) err := client.DeleteJob("del-job", "default") if err != nil { t.Fatalf("DeleteJob: %v", err) } _, err = clientset.BatchV1().Jobs("default").Get(nil, "del-job", metav1.GetOptions{}) if err == nil { t.Error("expected error getting deleted job") } }