package analysis
import (
"testing"
osgraph "github.com/openshift/origin/pkg/api/graph"
osgraphtest "github.com/openshift/origin/pkg/api/graph/test"
kubeedges "github.com/openshift/origin/pkg/api/kubegraph"
)
func TestMissingSecrets(t *testing.T) {
g, _, err := osgraphtest.BuildGraph("../../../api/graph/test/bad_secret_refs.yaml")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
kubeedges.AddAllRequestedServiceAccountEdges(g)
kubeedges.AddAllMountableSecretEdges(g)
kubeedges.AddAllMountedSecretEdges(g)
markers := FindMissingSecrets(g, osgraph.DefaultNamer)
if e, a := 1, len(markers); e != a {
t.Fatalf("expected %v, got %v", e, a)
}
actualDC := osgraph.GetTopLevelContainerNode(g, markers[0].Node)
expectedDC := g.Find(osgraph.UniqueName("DeploymentConfig|/docker-nfs-server"))
if e, a := expectedDC.ID(), actualDC.ID(); e != a {
t.Errorf("expected %v, got %v", e, a)
}
actualSecret := markers[0].RelatedNodes[0]
expectedSecret := g.Find(osgraph.UniqueName("Secret|/missing-secret"))
if e, a := expectedSecret.ID(), actualSecret.ID(); e != a {
t.Errorf("expected %v, got %v", e, a)
}
}
func TestUnmountableSecrets(t *testing.T) {
g, _, err := osgraphtest.BuildGraph("../../../api/graph/test/bad_secret_refs.yaml")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
kubeedges.AddAllRequestedServiceAccountEdges(g)
kubeedges.AddAllMountableSecretEdges(g)
kubeedges.AddAllMountedSecretEdges(g)
markers := FindUnmountableSecrets(g, osgraph.DefaultNamer)
if e, a := 2, len(markers); e != a {
t.Errorf("expected %v, got %v", e, a)
}
expectedSecret1 := g.Find(osgraph.UniqueName("Secret|/missing-secret"))
expectedSecret2 := g.Find(osgraph.UniqueName("Secret|/unmountable-secret"))
found1 := false
found2 := false
for i := 0; i < 2; i++ {
actualDC := osgraph.GetTopLevelContainerNode(g, markers[i].Node)
expectedDC := g.Find(osgraph.UniqueName("DeploymentConfig|/docker-nfs-server"))
if e, a := expectedDC.ID(), actualDC.ID(); e != a {
t.Errorf("expected %v, got %v", e, a)
}
actualSecret := markers[i].RelatedNodes[0]
if e, a := expectedSecret1.ID(), actualSecret.ID(); e == a {
found1 = true
}
if e, a := expectedSecret2.ID(), actualSecret.ID(); e == a {
found2 = true
}
}
if !found1 {
t.Errorf("expected %v, got %v", expectedSecret1, markers)
}
if !found2 {
t.Errorf("expected %v, got %v", expectedSecret2, markers)
}
}
func TestMissingLivenessProbes(t *testing.T) {
g, _, err := osgraphtest.BuildGraph("../../../api/graph/test/simple-deployment.yaml")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
kubeedges.AddAllExposedPodEdges(g)
markers := FindMissingLivenessProbes(g, osgraph.DefaultNamer, "oc set probe")
if e, a := 1, len(markers); e != a {
t.Fatalf("expected %v, got %v", e, a)
}
actualDC := osgraph.GetTopLevelContainerNode(g, markers[0].Node)
expectedDC := g.Find(osgraph.UniqueName("DeploymentConfig|/simple-deployment"))
if e, a := expectedDC.ID(), actualDC.ID(); e != a {
t.Errorf("expected %v, got %v", e, a)
}
}