Skip to content

Commit

Permalink
Merge pull request #505 from chentao1596/annotations_unittest
Browse files Browse the repository at this point in the history
add unit test cases for core/pkg/ingress/controller/annotations
  • Loading branch information
aledbf authored Mar 27, 2017
2 parents a7af840 + 767591f commit e2c7a53
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 3 deletions.
1 change: 0 additions & 1 deletion core/pkg/ingress/controller/annotations.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,6 @@ const (
healthCheck = "HealthCheck"
sslPassthrough = "SSLPassthrough"
sessionAffinity = "SessionAffinity"
certificateAuth = "CertificateAuth"
)

func (e *annotationExtractor) SecureUpstream(ing *extensions.Ingress) bool {
Expand Down
82 changes: 80 additions & 2 deletions core/pkg/ingress/controller/annotations_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,19 @@ const (
annotationAffinityType = "ingress.kubernetes.io/affinity"
annotationAffinityCookieName = "ingress.kubernetes.io/session-cookie-name"
annotationAffinityCookieHash = "ingress.kubernetes.io/session-cookie-hash"
annotationAuthTlsSecret = "ingress.kubernetes.io/auth-tls-secret"
)

type mockCfg struct {
MockSecrets map[string]*api.Secret
}

func (m mockCfg) GetDefaultBackend() defaults.Backend {
return defaults.Backend{}
}

func (m mockCfg) GetSecret(string) (*api.Secret, error) {
return nil, nil
func (m mockCfg) GetSecret(name string) (*api.Secret, error) {
return m.MockSecrets[name], nil
}

func (m mockCfg) GetAuthCertificate(string) (*resolver.AuthSSLCert, error) {
Expand Down Expand Up @@ -218,3 +220,79 @@ func TestAffinitySession(t *testing.T) {
}
}
}

func TestContainsCertificateAuth(t *testing.T) {
ec := newAnnotationExtractor(mockCfg{})

foos := []struct {
name string
annotations map[string]string
result bool
}{
{"nil_annotations", nil, false},
{"empty_annotations", map[string]string{}, false},
{"not_exist_annotations", map[string]string{annotationAffinityType: "cookie"}, false},
{"exist_annotations", map[string]string{annotationAuthTlsSecret: "default/foo_secret"}, true},
}

for _, foo := range foos {
t.Run(foo.name, func(t *testing.T) {
ing := buildIngress()
ing.SetAnnotations(foo.annotations)
r := ec.ContainsCertificateAuth(ing)
if r != foo.result {
t.Errorf("Returned %t but expected %t for %s", r, foo.result, foo.name)
}
})
}
}

func TestCertificateAuthSecret(t *testing.T) {
resolver := mockCfg{}
resolver.MockSecrets = map[string]*api.Secret{
"default/foo_secret": {
ObjectMeta: api.ObjectMeta{
Name: "foo_secret_name",
},
},
}
ec := newAnnotationExtractor(resolver)

foos := []struct {
name string
annotations map[string]string
eerr bool
ename string
}{
{"nil_annotations", nil, true, ""},
{"empty_annotations", map[string]string{}, true, ""},
{"not_exist_annotations", map[string]string{annotationAffinityType: "cookie"}, true, ""},
{"exist_annotations", map[string]string{annotationAuthTlsSecret: "default/foo_secret"}, false, "foo_secret_name"},
}

for _, foo := range foos {
t.Run(foo.name, func(t *testing.T) {
ing := buildIngress()
ing.SetAnnotations(foo.annotations)
r, err := ec.CertificateAuthSecret(ing)

if foo.eerr {
if err == nil {
t.Fatalf("Exepected error for %s", foo.name)
}
} else {
if err != nil {
t.Fatalf("Unexpected error %v for %s", err, foo.name)
}

rname := ""
if r != nil {
rname = r.GetName()
}
if rname != foo.ename {
t.Errorf("Returned %s but expected %s for %s", rname, foo.ename, foo.name)
}
}
})
}
}

0 comments on commit e2c7a53

Please sign in to comment.