mirror of
https://github.com/alibaba/higress.git
synced 2026-03-04 16:40:50 +08:00
98 lines
2.6 KiB
Go
98 lines
2.6 KiB
Go
// Copyright (c) 2022 Alibaba Group Holding Ltd.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package common
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"istio.io/istio/pilot/pkg/model"
|
|
"istio.io/istio/pkg/config"
|
|
)
|
|
|
|
func TestIngressDomainCache(t *testing.T) {
|
|
cache := NewIngressDomainCache()
|
|
assert.NotNil(t, cache)
|
|
assert.NotNil(t, cache.Valid)
|
|
assert.Empty(t, cache.Invalid)
|
|
|
|
cache.Valid["example.com"] = &IngressDomainBuilder{
|
|
Host: "example.com",
|
|
Protocol: HTTP,
|
|
ClusterId: "cluster-1",
|
|
Ingress: &config.Config{
|
|
Meta: config.Meta{
|
|
Name: "test-ingress",
|
|
Namespace: "default",
|
|
},
|
|
},
|
|
}
|
|
|
|
cache.Invalid = append(cache.Invalid, model.IngressDomain{
|
|
Host: "invalid.com",
|
|
Error: "invalid domain",
|
|
})
|
|
|
|
result := cache.Extract()
|
|
assert.Equal(t, 1, len(result.Valid))
|
|
assert.Equal(t, "example.com", result.Valid[0].Host)
|
|
assert.Equal(t, string(HTTP), result.Valid[0].Protocol)
|
|
|
|
assert.Equal(t, 1, len(result.Invalid))
|
|
assert.Equal(t, "invalid.com", result.Invalid[0].Host)
|
|
}
|
|
|
|
func TestIngressDomainBuilder(t *testing.T) {
|
|
builder := &IngressDomainBuilder{
|
|
Host: "example.com",
|
|
Protocol: HTTP,
|
|
ClusterId: "cluster-1",
|
|
Ingress: &config.Config{
|
|
Meta: config.Meta{
|
|
Name: "test-ingress",
|
|
Namespace: "default",
|
|
},
|
|
},
|
|
}
|
|
|
|
domain := builder.Build()
|
|
assert.Equal(t, "example.com", domain.Host)
|
|
assert.Equal(t, string(HTTP), domain.Protocol)
|
|
|
|
builder.Event = MissingSecret
|
|
eventDomain := builder.Build()
|
|
assert.Contains(t, eventDomain.Error, "misses secret")
|
|
|
|
builder.Event = DuplicatedTls
|
|
builder.PreIngress = &config.Config{
|
|
Meta: config.Meta{
|
|
Name: "pre-ingress",
|
|
Namespace: "default",
|
|
},
|
|
}
|
|
builder.PreIngress.Meta.Annotations = map[string]string{
|
|
ClusterIdAnnotation: "pre-cluster",
|
|
}
|
|
dupDomain := builder.Build()
|
|
assert.Contains(t, dupDomain.Error, "conflicted with ingress")
|
|
|
|
builder.Protocol = HTTPS
|
|
builder.SecretName = "test-secret"
|
|
builder.Event = ""
|
|
httpsDomain := builder.Build()
|
|
assert.Equal(t, string(HTTPS), httpsDomain.Protocol)
|
|
assert.Equal(t, "test-secret", httpsDomain.SecretName)
|
|
}
|