Merge pull request #505 from chentao1596/annotations_unittest
add unit test cases for core/pkg/ingress/controller/annotations
This commit is contained in:
commit
e2c7a536e9
2 changed files with 80 additions and 3 deletions
|
@ -109,7 +109,6 @@ const (
|
||||||
healthCheck = "HealthCheck"
|
healthCheck = "HealthCheck"
|
||||||
sslPassthrough = "SSLPassthrough"
|
sslPassthrough = "SSLPassthrough"
|
||||||
sessionAffinity = "SessionAffinity"
|
sessionAffinity = "SessionAffinity"
|
||||||
certificateAuth = "CertificateAuth"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func (e *annotationExtractor) SecureUpstream(ing *extensions.Ingress) bool {
|
func (e *annotationExtractor) SecureUpstream(ing *extensions.Ingress) bool {
|
||||||
|
|
|
@ -35,17 +35,19 @@ const (
|
||||||
annotationAffinityType = "ingress.kubernetes.io/affinity"
|
annotationAffinityType = "ingress.kubernetes.io/affinity"
|
||||||
annotationAffinityCookieName = "ingress.kubernetes.io/session-cookie-name"
|
annotationAffinityCookieName = "ingress.kubernetes.io/session-cookie-name"
|
||||||
annotationAffinityCookieHash = "ingress.kubernetes.io/session-cookie-hash"
|
annotationAffinityCookieHash = "ingress.kubernetes.io/session-cookie-hash"
|
||||||
|
annotationAuthTlsSecret = "ingress.kubernetes.io/auth-tls-secret"
|
||||||
)
|
)
|
||||||
|
|
||||||
type mockCfg struct {
|
type mockCfg struct {
|
||||||
|
MockSecrets map[string]*api.Secret
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m mockCfg) GetDefaultBackend() defaults.Backend {
|
func (m mockCfg) GetDefaultBackend() defaults.Backend {
|
||||||
return defaults.Backend{}
|
return defaults.Backend{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m mockCfg) GetSecret(string) (*api.Secret, error) {
|
func (m mockCfg) GetSecret(name string) (*api.Secret, error) {
|
||||||
return nil, nil
|
return m.MockSecrets[name], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m mockCfg) GetAuthCertificate(string) (*resolver.AuthSSLCert, error) {
|
func (m mockCfg) GetAuthCertificate(string) (*resolver.AuthSSLCert, error) {
|
||||||
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue