(t *testing.T, unvalidatedIngress []config.UnvalidatedIngressRule, tests []MultipleIngressTest)
| 362 | } |
| 363 | |
| 364 | func runIngressTestScenarios(t *testing.T, unvalidatedIngress []config.UnvalidatedIngressRule, tests []MultipleIngressTest) { |
| 365 | ingressRule, err := ingress.ParseIngress(&config.Configuration{ |
| 366 | TunnelID: t.Name(), |
| 367 | Ingress: unvalidatedIngress, |
| 368 | }) |
| 369 | require.NoError(t, err) |
| 370 | |
| 371 | log := zerolog.Nop() |
| 372 | |
| 373 | ctx, cancel := context.WithCancel(t.Context()) |
| 374 | require.NoError(t, ingressRule.StartOrigins(&log, ctx.Done())) |
| 375 | |
| 376 | originDialer := ingress.NewOriginDialer(ingress.OriginConfig{ |
| 377 | DefaultDialer: testDefaultDialer, |
| 378 | TCPWriteTimeout: 1 * time.Second, |
| 379 | }, &log) |
| 380 | |
| 381 | proxy := NewOriginProxy(ingressRule, originDialer, testTags, cfdflow.NewLimiter(0), &log) |
| 382 | |
| 383 | for _, test := range tests { |
| 384 | responseWriter := newMockHTTPRespWriter() |
| 385 | req, err := http.NewRequest(http.MethodGet, test.url, nil) |
| 386 | require.NoError(t, err) |
| 387 | |
| 388 | err = proxy.ProxyHTTP(responseWriter, tracing.NewTracedHTTPRequest(req, 0, &log), false) |
| 389 | require.NoError(t, err) |
| 390 | |
| 391 | assert.Equal(t, test.expectedStatus, responseWriter.Code) |
| 392 | if test.expectedBody != nil { |
| 393 | assert.Equal(t, test.expectedBody, responseWriter.Body.Bytes()) |
| 394 | } else { |
| 395 | assert.Equal(t, 0, responseWriter.Body.Len()) |
| 396 | } |
| 397 | } |
| 398 | cancel() |
| 399 | } |
| 400 | |
| 401 | type mockAPI struct{} |
| 402 |
no test coverage detected