Problem
I am looking for the correct way to test my code below, I couldn't find any examples how can I do it. Only main_test.go but it is missing main.go and for me, it isn't obvious how can I use it. I also went through Github issues but I can not find anything helpful.
Function:
import (
"fmt"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
fake "k8s.io/client-go/kubernetes/fake"
"time"
)
func GetNamespaceCreationTime(namespace string) int64 {
config, err := rest.InClusterConfig()
if err != nil {
panic(err.Error())
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err.Error())
}
ns, err := clientset.CoreV1().Namespaces().Get(namespace, metav1.GetOptions{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%v
", ns.CreationTimestamp)
return (ns.GetCreationTimestamp().Unix())
}
Test:
I think my test should look like below, but how can I use config := fake.NewSimpleClientset()
, should I pass it into GetNamespaceCreationTime
function?
func TestGetNamespaceCreationTime(t *testing.T) {
config := fake.NewSimpleClientset()
got := GetNamespaceCreationTime("default")
want := int64(1257894000)
nsMock := config.CoreV1().Namespaces()
nsMock.Create(&v1.Namespace{
ObjectMeta: metav1.ObjectMeta{
Name: "default",
CreationTimestamp: metav1.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC),
},
})
if got != want {
t.Errorf("got %q want %q", got, want)
}