che-operator/pkg/operator/k8s_objects_test.go

102 lines
2.8 KiB
Go

package operator
import (
"github.com/sirupsen/logrus"
"os"
"testing"
)
func TestNewCheDeployment(t *testing.T) {
// create a fake Che deployment
fakeImage := "fake-image"
deployment, err := fakeK8s.clientset.AppsV1().Deployments("eclipse-che").Create(newCheDeployment(fakeImage))
if err != nil {
panic(err)
}
logrus.Infof("Deployment %s created", deployment.Name)
if deployment.Spec.Template.Spec.Containers[0].Image != fakeImage {
logrus.Fatalf("Expected %s, but got %s", fakeImage, deployment.Spec.Template.Spec.Containers[0].Image)
}
}
func TestNewCheConfigMap(t *testing.T) {
// set current infra to k8s
err := os.Setenv("INFRA", "kubernetes")
if err != nil {
logrus.Fatal(err)
}
// set fake ingress domain env and check if configmap grabs its value
fakeDomain := "fake-domain"
fakeDomainEnv := "CHE_INFRA_KUBERNETES_INGRESS_DOMAIN"
err = os.Setenv(fakeDomainEnv, fakeDomain)
if err != nil {
logrus.Fatal(err)
}
// create a configmap
cm, err := fakeK8s.clientset.CoreV1().ConfigMaps("eclipse-che").Create(newCheConfigMap(cheHost, keycloakURL))
if err != nil {
logrus.Fatal(err)
}
logrus.Infof("ConfigMap %s successfully created", cm.Name)
// check env and its value
cmEnv := cm.Data
if val, ok := cmEnv["CHE_INFRA_KUBERNETES_INGRESS_DOMAIN"]; ok {
logrus.Infof("Env found. CHE_INFRA_KUBERNETES_INGRESS_DOMAIN=%s", val)
if val != fakeDomain {
logrus.Fatalf("Expected %s but got %s", fakeDomain, val)
}
} else {
logrus.Fatalf("Env %s not found", fakeDomain)
}
}
func TestNewPostgresDeployment(t *testing.T) {
// create a fake Postgres deployment
deployment, err := fakeK8s.clientset.AppsV1().Deployments("eclipse-che").Create(newPostgresDeployment())
if err != nil {
panic(err)
}
logrus.Infof("Deployment %s created", deployment.Name)
password := deployment.Spec.Template.Spec.Containers[0].Env[1].Value
// check if password was properly generated and added to container env
if len(password) != 12 {
logrus.Fatalf("Expecting password lenght to be 12, but got %v", len(password))
}
}
func TestNewKeycloakDeployment(t *testing.T) {
//// create a fake Keycloak deployment
err := os.Setenv("CHE_SELF__SIGNED__CERT", "mycrt")
if err != nil {
logrus.Fatal(err)
}
deployment, err := fakeK8s.clientset.AppsV1().Deployments("eclipse-che").Create(newKeycloakDeployment())
if err != nil {
panic(err)
}
logrus.Infof("Deployment %s created", deployment.Name)
// check if setting self-signed-certificate cert updates env for the container properly
selfSignedEnv := deployment.Spec.Template.Spec.Containers[0].Env
var foundEnv bool
ssoEnv := "SSO_TRUSTSTORE"
for i := range selfSignedEnv {
env := selfSignedEnv[i].Name
if env == ssoEnv {
logrus.Infof("%s env found: %s", ssoEnv, env)
foundEnv = true
}
}
if !foundEnv {
logrus.Fatalf("No %s env found", ssoEnv)
}
}