Add test for ambassador source failing to fetch ambassador service

This commit is contained in:
Ole Markus With 2022-09-07 18:31:09 +02:00
parent 819f61e98b
commit 594519a09b

View File

@ -19,8 +19,15 @@ package source
import (
"testing"
ambassador "github.com/datawire/ambassador/pkg/api/getambassador.io/v2"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
"golang.org/x/net/context"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
fakeDynamic "k8s.io/client-go/dynamic/fake"
fakeKube "k8s.io/client-go/kubernetes/fake"
)
type AmbassadorSuite struct {
@ -37,6 +44,64 @@ func testAmbassadorSourceImplementsSource(t *testing.T) {
require.Implements(t, (*Source)(nil), new(ambassadorHostSource))
}
func TestAmbassadorHostSource(t *testing.T) {
fakeKubernetesClient := fakeKube.NewSimpleClientset()
ambassadorScheme := runtime.NewScheme()
ambassador.AddToScheme(ambassadorScheme)
fakeDynamicClient := fakeDynamic.NewSimpleDynamicClient(ambassadorScheme)
ctx := context.Background()
namespace := "test"
host, err := createAmbassadorHost("test-host", "test-service")
if err != nil {
t.Fatalf("could not create host resource: %v", err)
}
{
_, err := fakeDynamicClient.Resource(ambHostGVR).Namespace(namespace).Create(ctx, host, v1.CreateOptions{})
if err != nil {
t.Fatalf("could not create host: %v", err)
}
}
ambassadorSource, err := NewAmbassadorHostSource(ctx, fakeDynamicClient, fakeKubernetesClient, namespace)
if err != nil {
t.Fatalf("could not create ambassador source: %v", err)
}
{
_, err := ambassadorSource.Endpoints(ctx)
if err != nil {
t.Fatalf("could not collect ambassador source endpoints: %v", err)
}
}
}
func createAmbassadorHost(name, ambassadorService string) (*unstructured.Unstructured, error) {
host := &ambassador.Host{
ObjectMeta: v1.ObjectMeta{
Name: name,
Annotations: map[string]string{
ambHostAnnotation: ambassadorService,
},
},
}
obj := &unstructured.Unstructured{}
uc, _ := newUnstructuredConverter()
err := uc.scheme.Convert(host, obj, nil)
if err != nil {
return nil, err
}
return obj, nil
}
// TestParseAmbLoadBalancerService tests our parsing of Ambassador service info.
func TestParseAmbLoadBalancerService(t *testing.T) {
vectors := []struct {