2017-11-07 15:44:17 +00:00
|
|
|
package k8s
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
check "gopkg.in/check.v1"
|
2017-11-13 21:28:38 +00:00
|
|
|
"k8s.io/api/core/v1"
|
2017-11-07 15:44:17 +00:00
|
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
|
|
"k8s.io/client-go/kubernetes"
|
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
|
|
|
KubeConfigPath = "/etc/kubernetes/ssl/kubeconfig"
|
|
|
|
ConfigMapName = "testconfigmap"
|
|
|
|
ConfigYaml = `---
|
|
|
|
foo: bar
|
|
|
|
test: test123`
|
|
|
|
SecretFile = `secret123`
|
|
|
|
SecretName = "secret"
|
|
|
|
)
|
|
|
|
|
|
|
|
type KubernetesOperationsTestSuite struct {
|
|
|
|
kubeClient *kubernetes.Clientset
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test(t *testing.T) {
|
|
|
|
check.TestingT(t)
|
|
|
|
}
|
|
|
|
|
|
|
|
var _ = check.Suite(&KubernetesOperationsTestSuite{})
|
|
|
|
|
|
|
|
func (k *KubernetesOperationsTestSuite) SetUpSuite(c *check.C) {
|
|
|
|
var err error
|
|
|
|
k.kubeClient, err = NewClient(KubeConfigPath)
|
|
|
|
meta := metav1.ObjectMeta{Name: metav1.NamespaceSystem}
|
|
|
|
ns := &v1.Namespace{
|
|
|
|
ObjectMeta: meta,
|
|
|
|
}
|
|
|
|
if _, err = k.kubeClient.CoreV1().Namespaces().Create(ns); err != nil {
|
|
|
|
c.Fatalf("Failed to set up test suite: %v", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func (k *KubernetesOperationsTestSuite) TestSaveConfig(c *check.C) {
|
|
|
|
var err error
|
|
|
|
if err != nil {
|
|
|
|
c.Fatalf("Failed to initialize kubernetes client")
|
|
|
|
}
|
|
|
|
|
|
|
|
// Make sure that config yaml file can be stored as a config map
|
|
|
|
err = UpdateConfigMap(k.kubeClient, []byte(ConfigYaml), ConfigMapName)
|
|
|
|
if err != nil {
|
|
|
|
c.Fatalf("Failed to store config map %s: %v", ConfigMapName, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
cfgMap, err := GetConfigMap(k.kubeClient, ConfigMapName)
|
|
|
|
if err != nil {
|
|
|
|
c.Fatalf("Failed to fetch config map %s: %v", ConfigMapName, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if cfgMap.Data[ConfigMapName] != ConfigYaml {
|
|
|
|
c.Fatalf("Failed to verify the config map %s: %v", ConfigMapName, err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (k *KubernetesOperationsTestSuite) TestSaveSecret(c *check.C) {
|
|
|
|
var err error
|
|
|
|
if err != nil {
|
|
|
|
c.Fatalf("Failed to initialize kubernetes client")
|
|
|
|
}
|
|
|
|
|
|
|
|
err = UpdateSecret(k.kubeClient, SecretName, []byte(SecretFile), SecretName)
|
|
|
|
if err != nil {
|
|
|
|
c.Fatalf("Failed to store secret %s: %v", SecretName, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
secret, err := GetSecret(k.kubeClient, SecretName)
|
|
|
|
if err != nil {
|
|
|
|
c.Fatalf("Failed to fetch secret %s: %v", SecretName, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if string(secret.Data[SecretName]) != SecretFile {
|
|
|
|
c.Fatalf("Failed to verify the secret %s: %v", SecretName, err)
|
|
|
|
}
|
|
|
|
}
|