@@ -151,6 +151,48 @@ func TestIngressEssentials(t *testing.T) {
151151 helpers .EventuallyExpectHTTP404WithNoRoute (t , proxyURL , proxyURL .Host , "/test_ingress_essentials" , ingressWait , waitTick , nil )
152152}
153153
154+ func TestIngressDefaultBackend (t * testing.T ) {
155+ ctx := context .Background ()
156+ ns , cleaner := helpers .Setup (ctx , t , env )
157+
158+ t .Log ("deploying a minimal HTTP container deployment to test Ingress routes" )
159+ container := generators .NewContainer ("httpbin" , test .HTTPBinImage , test .HTTPBinPort )
160+ deployment := generators .NewDeploymentForContainer (container )
161+ deployment , err := env .Cluster ().Client ().AppsV1 ().Deployments (ns .Name ).Create (ctx , deployment , metav1.CreateOptions {})
162+ require .NoError (t , err )
163+ cleaner .Add (deployment )
164+
165+ t .Logf ("exposing deployment %s via service" , deployment .Name )
166+ service := generators .NewServiceForDeployment (deployment , corev1 .ServiceTypeLoadBalancer )
167+ _ , err = env .Cluster ().Client ().CoreV1 ().Services (ns .Name ).Create (ctx , service , metav1.CreateOptions {})
168+ require .NoError (t , err )
169+ cleaner .Add (service )
170+
171+ t .Logf ("creating an ingress for service %s with ingress.class %s" , service .Name , consts .IngressClass )
172+ ingress := generators .NewIngressForService ("/foo" , map [string ]string {
173+ "konghq.com/strip-path" : "true" ,
174+ }, service )
175+ ingress .Spec .IngressClassName = kong .String (consts .IngressClass )
176+ ingress .Spec .DefaultBackend = & netv1.IngressBackend {
177+ Service : & netv1.IngressServiceBackend {
178+ Name : service .Name ,
179+ Port : netv1.ServiceBackendPort {
180+ Number : service .Spec .Ports [0 ].Port ,
181+ },
182+ },
183+ }
184+ require .NoError (t , clusters .DeployIngress (ctx , env .Cluster (), ns .Name , ingress ))
185+ cleaner .Add (ingress )
186+
187+ t .Log ("matching path" )
188+ helpers .EventuallyGETPath (t , nil , proxyURL .String (), "/foo" , http .StatusOK , "<title>httpbin.org</title>" , nil , ingressWait , waitTick )
189+
190+ t .Log ("non matching path - use default backend" )
191+ helpers .EventuallyGETPath (
192+ t , nil , proxyURL .String (), fmt .Sprintf ("/status/%d" , http .StatusTeapot ), http .StatusTeapot , "" , nil , ingressWait , waitTick ,
193+ )
194+ }
195+
154196func TestGRPCIngressEssentials (t * testing.T ) {
155197 t .Parallel ()
156198
0 commit comments