Skip to content

Commit

Permalink
add unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
OliverMKing committed Nov 4, 2023
1 parent b5e0287 commit da83f9e
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 2 deletions.
1 change: 0 additions & 1 deletion pkg/controller/nginxingress/default.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ func (d *defaultNicReconciler) Start(ctx context.Context) (err error) {
ControllerNamePrefix: "nginx",
IngressClassName: DefaultIcName,
},
Status: approutingv1alpha1.NginxIngressControllerStatus{},
}

d.lgr.Info("determining if default nginx ingress controller should be created")
Expand Down
60 changes: 59 additions & 1 deletion pkg/controller/nginxingress/default_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,70 @@ import (
"testing"

approutingv1alpha1 "github.com/Azure/aks-app-routing-operator/api/v1alpha1"
"github.com/Azure/aks-app-routing-operator/pkg/controller/controllername"
"github.com/go-logr/logr"
"github.com/stretchr/testify/require"
netv1 "k8s.io/api/networking/v1"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/controller-runtime/pkg/client/fake"
)

func TestDefaultNicReconciler(t *testing.T) {
scheme := runtime.NewScheme()
require.NoError(t, approutingv1alpha1.AddToScheme(scheme))
require.NoError(t, netv1.AddToScheme(scheme))
cl := fake.NewClientBuilder().WithScheme(scheme).Build()

// when default nic doesn't exist in cluster we don't create the default nic
d := &defaultNicReconciler{
client: cl,
lgr: logr.Discard(),
name: controllername.New("testing"),
}
require.NoError(t, d.Start(context.Background()))

nic := &approutingv1alpha1.NginxIngressController{
ObjectMeta: metav1.ObjectMeta{
Name: DefaultNicName,
},
}
require.True(t, k8serrors.IsNotFound(d.client.Get(context.Background(), types.NamespacedName{Name: nic.Name}, nic)))

// when default nic exists in cluster we create the default nic
require.NoError(t, cl.Create(context.Background(), &netv1.IngressClass{
ObjectMeta: metav1.ObjectMeta{
Name: DefaultIcName,
},
}))
require.NoError(t, d.Start(context.Background()))
require.NoError(t, d.client.Get(context.Background(), types.NamespacedName{Name: nic.Name}, nic))
require.Equal(t, "nginx", nic.Spec.ControllerNamePrefix)
require.Equal(t, DefaultIcName, nic.Spec.IngressClassName)

}

func TestShouldCreateDefaultNic(t *testing.T) {
cl := fake.NewClientBuilder().Build()

// when default ic doesn't exist in cluster
shouldCreate, err := shouldCreateDefaultNic(cl)
require.NoError(t, err)
require.False(t, shouldCreate)

// when default ic exists in cluster
require.NoError(t, cl.Create(context.Background(), &netv1.IngressClass{
ObjectMeta: metav1.ObjectMeta{
Name: DefaultIcName,
},
}))
shouldCreate, err = shouldCreateDefaultNic(cl)
require.NoError(t, err)
require.True(t, shouldCreate)
}

func TestGetDefaultIngressClassControllerClass(t *testing.T) {
cl := fake.NewClientBuilder().Build()

Expand Down Expand Up @@ -101,4 +159,4 @@ func TestIsDefaultNic(t *testing.T) {
require.Equal(t, c.Expected, IsDefaultNic(c.Nic))
})
}
}
}

0 comments on commit da83f9e

Please sign in to comment.