48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
package controller
|
|
|
|
import (
|
|
"testing"
|
|
|
|
corev1 "k8s.io/api/core/v1"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
)
|
|
|
|
func TestServicePortsToAllocateRules(t *testing.T) {
|
|
svc := &corev1.Service{
|
|
ObjectMeta: metav1.ObjectMeta{Namespace: "default", Name: "web"},
|
|
Spec: corev1.ServiceSpec{Ports: []corev1.ServicePort{{Port: 80, Protocol: corev1.ProtocolTCP}, {Port: 53, Protocol: corev1.ProtocolUDP}}},
|
|
}
|
|
|
|
rules, err := servicePortsToAllocateRules(svc)
|
|
if err != nil {
|
|
t.Fatalf("servicePortsToAllocateRules: %v", err)
|
|
}
|
|
if len(rules) != 2 {
|
|
t.Fatalf("rules count = %d, want 2", len(rules))
|
|
}
|
|
if rules[0].Protocol != "tcp" || rules[0].PortFrom != 80 {
|
|
t.Fatalf("unexpected first rule: %+v", rules[0])
|
|
}
|
|
if rules[1].Protocol != "udp" || rules[1].PortFrom != 53 {
|
|
t.Fatalf("unexpected second rule: %+v", rules[1])
|
|
}
|
|
}
|
|
|
|
func TestServicePortsToAllocateRulesRejectsUnsupportedProtocol(t *testing.T) {
|
|
svc := &corev1.Service{
|
|
ObjectMeta: metav1.ObjectMeta{Namespace: "default", Name: "web"},
|
|
Spec: corev1.ServiceSpec{Ports: []corev1.ServicePort{{Port: 80, Protocol: corev1.ProtocolSCTP}}},
|
|
}
|
|
|
|
if _, err := servicePortsToAllocateRules(svc); err == nil {
|
|
t.Fatal("expected error for unsupported protocol")
|
|
}
|
|
}
|
|
|
|
func TestServicePortsToAllocateRulesRejectsNoPorts(t *testing.T) {
|
|
svc := &corev1.Service{ObjectMeta: metav1.ObjectMeta{Namespace: "default", Name: "web"}}
|
|
if _, err := servicePortsToAllocateRules(svc); err == nil {
|
|
t.Fatal("expected error for empty ports")
|
|
}
|
|
}
|