...
1
16
17 package tests
18
19 import (
20 "testing"
21
22 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23 "k8s.io/apimachinery/pkg/types"
24
25 v1 "sigs.k8s.io/gateway-api/apis/v1"
26 "sigs.k8s.io/gateway-api/conformance/utils/kubernetes"
27 "sigs.k8s.io/gateway-api/conformance/utils/suite"
28 )
29
30 func init() {
31 ConformanceTests = append(ConformanceTests, HTTPRouteInvalidParentRefNotMatchingSectionName)
32 }
33
34 var HTTPRouteInvalidParentRefNotMatchingSectionName = suite.ConformanceTest{
35 ShortName: "HTTPRouteInvalidParentRefNotMatchingSectionName",
36 Description: "A single HTTPRoute in the gateway-conformance-infra namespace should set the Accepted status to False with reason NoMatchingParent when attempting to bind to a Gateway that does not have a matching SectionName.",
37 Features: []suite.SupportedFeature{
38 suite.SupportGateway,
39 suite.SupportHTTPRoute,
40 },
41 Manifests: []string{"tests/httproute-invalid-parentref-not-matching-section-name.yaml"},
42 Test: func(t *testing.T, suite *suite.ConformanceTestSuite) {
43 routeNN := types.NamespacedName{Name: "httproute-listener-not-matching-section-name", Namespace: "gateway-conformance-infra"}
44 gwNN := types.NamespacedName{Name: "same-namespace", Namespace: "gateway-conformance-infra"}
45
46
47 t.Run("HTTPRoute with no matching sectionName in ParentRef has an Accepted Condition with status False and Reason NoMatchingParent", func(t *testing.T) {
48 resolvedRefsCond := metav1.Condition{
49 Type: string(v1.RouteConditionAccepted),
50 Status: metav1.ConditionFalse,
51 Reason: string(v1.RouteReasonNoMatchingParent),
52 }
53
54 kubernetes.HTTPRouteMustHaveCondition(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN, resolvedRefsCond)
55 })
56
57 t.Run("Route should not have Parents accepted in status", func(t *testing.T) {
58 kubernetes.HTTPRouteMustHaveNoAcceptedParents(t, suite.Client, suite.TimeoutConfig, routeNN)
59 })
60
61 t.Run("Gateway should have 0 Routes attached", func(t *testing.T) {
62 kubernetes.GatewayMustHaveZeroRoutes(t, suite.Client, suite.TimeoutConfig, gwNN)
63 })
64 },
65 }
66
View as plain text