| 
									
										
										
										
											2017-11-07 17:44:17 +02:00
										 |  |  | package k8s | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"testing" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	check "gopkg.in/check.v1" | 
					
						
							| 
									
										
										
										
											2017-11-13 23:28:38 +02:00
										 |  |  | 	"k8s.io/api/core/v1" | 
					
						
							| 
									
										
										
										
											2017-11-07 17:44:17 +02: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) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |