Skip to content

Commit ada5674

Browse files
committed
adding support for HttpPipeline
Signed-off-by: salaboy <[email protected]>
1 parent e8f5deb commit ada5674

File tree

4 files changed

+73
-6
lines changed

4 files changed

+73
-6
lines changed

testcontainers-dapr/src/main/java/io/dapr/testcontainers/Configuration.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ public class Configuration {
2020
private final String name;
2121
private final TracingConfigurationSettings tracing;
2222
private final AppHttpPipeline appHttpPipeline;
23+
private final HttpPipeline httpPipeline;
2324

2425
// @TODO: add secrets https://github.com/dapr/java-sdk/issues/1280
2526
// @TODO: add metrics https://github.com/dapr/java-sdk/issues/1281
2627
// @TODO: add logging https://github.com/dapr/java-sdk/issues/1282
27-
// @TODO: add middleware httpPipeline https://github.com/dapr/java-sdk/issues/1283
2828
// @TODO: add nameResolution https://github.com/dapr/java-sdk/issues/1284
2929
// @TODO: add disallow components https://github.com/dapr/java-sdk/issues/1285
3030
// @TODO: add mtls https://github.com/dapr/java-sdk/issues/1286
@@ -36,11 +36,15 @@ public class Configuration {
3636
* @param tracing TracingConfigParameters tracing configuration
3737
* parameters.
3838
* @param appHttpPipeline AppHttpPipeline middleware configuration.
39+
* @param httpPipeline HttpPipeline middleware configuration.
3940
*/
40-
public Configuration(String name, TracingConfigurationSettings tracing, AppHttpPipeline appHttpPipeline) {
41+
public Configuration(String name, TracingConfigurationSettings tracing,
42+
AppHttpPipeline appHttpPipeline,
43+
HttpPipeline httpPipeline) {
4144
this.name = name;
4245
this.tracing = tracing;
4346
this.appHttpPipeline = appHttpPipeline;
47+
this.httpPipeline = httpPipeline;
4448
}
4549

4650
public String getName() {
@@ -54,4 +58,8 @@ public TracingConfigurationSettings getTracing() {
5458
public AppHttpPipeline getAppHttpPipeline() {
5559
return appHttpPipeline;
5660
}
61+
62+
public HttpPipeline getHttpPipeline() {
63+
return httpPipeline;
64+
}
5765
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* Copyright 2025 The Dapr Authors
3+
* Licensed under the Apache License, Version 2.0 (the "License");
4+
* you may not use this file except in compliance with the License.
5+
* You may obtain a copy of the License at
6+
* http://www.apache.org/licenses/LICENSE-2.0
7+
* Unless required by applicable law or agreed to in writing, software
8+
* distributed under the License is distributed on an "AS IS" BASIS,
9+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10+
* See the License for the specific language governing permissions and
11+
limitations under the License.
12+
*/
13+
14+
package io.dapr.testcontainers;
15+
16+
import java.util.Collections;
17+
import java.util.List;
18+
19+
public class HttpPipeline implements ConfigurationSettings {
20+
private List<ListEntry> handlers;
21+
22+
/**
23+
* Creates an HttpPipeline.
24+
*
25+
* @param handlers List of handlers for the HttpPipeline
26+
*/
27+
public HttpPipeline(List<ListEntry> handlers) {
28+
if (handlers != null) {
29+
this.handlers = Collections.unmodifiableList(handlers);
30+
}
31+
}
32+
33+
public List<ListEntry> getHandlers() {
34+
return handlers;
35+
}
36+
37+
}

testcontainers-dapr/src/main/java/io/dapr/testcontainers/converter/ConfigurationYamlConverter.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import io.dapr.testcontainers.AppHttpPipeline;
1717
import io.dapr.testcontainers.Configuration;
18+
import io.dapr.testcontainers.HttpPipeline;
1819
import io.dapr.testcontainers.ListEntry;
1920
import io.dapr.testcontainers.OtelTracingConfigurationSettings;
2021
import io.dapr.testcontainers.TracingConfigurationSettings;
@@ -77,6 +78,16 @@ public String convert(Configuration configuration) {
7778

7879
}
7980

81+
HttpPipeline httpPipeline = configuration.getHttpPipeline();
82+
if (httpPipeline != null) {
83+
84+
Map<String, Object> httpPipelineMap = new LinkedHashMap<>();
85+
List<ListEntry> handlers = httpPipeline.getHandlers();
86+
httpPipelineMap.put("handlers", handlers);
87+
configurationSpec.put("httpPipeline", httpPipelineMap);
88+
89+
}
90+
8091
AppHttpPipeline appHttpPipeline = configuration.getAppHttpPipeline();
8192
if (appHttpPipeline != null) {
8293

testcontainers-dapr/src/test/java/io/dapr/testcontainers/converter/ConfigurationYamlConverterTest.java

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import io.dapr.testcontainers.AppHttpPipeline;
1717
import io.dapr.testcontainers.Configuration;
1818
import io.dapr.testcontainers.DaprContainer;
19+
import io.dapr.testcontainers.HttpPipeline;
1920
import io.dapr.testcontainers.ListEntry;
2021
import io.dapr.testcontainers.OtelTracingConfigurationSettings;
2122
import io.dapr.testcontainers.TracingConfigurationSettings;
@@ -48,15 +49,21 @@ public void testConfigurationToYaml() {
4849
);
4950

5051

51-
List<ListEntry> handlers = new ArrayList<>();
52-
handlers.add(new ListEntry("alias", "middleware.http.routeralias"));
52+
List<ListEntry> appHttpHandlers = new ArrayList<>();
53+
appHttpHandlers.add(new ListEntry("alias", "middleware.http.routeralias"));
5354

54-
AppHttpPipeline appHttpPipeline = new AppHttpPipeline(handlers);
55+
AppHttpPipeline appHttpPipeline = new AppHttpPipeline(appHttpHandlers);
56+
57+
List<ListEntry> httpHandlers = new ArrayList<>();
58+
59+
//Notice that this needs to be different objects, if not Snake YAML will add a reference to the object
60+
HttpPipeline httpPipeline = new HttpPipeline(httpHandlers);
61+
httpHandlers.add(new ListEntry("alias", "middleware.http.routeralias"));
5562

5663
DaprContainer dapr = new DaprContainer(DAPR_RUNTIME_IMAGE_TAG)
5764
.withAppName("dapr-app")
5865
.withAppPort(8081)
59-
.withConfiguration(new Configuration("my-config", tracing, appHttpPipeline))
66+
.withConfiguration(new Configuration("my-config", tracing, appHttpPipeline, httpPipeline))
6067
.withAppChannelAddress("host.testcontainers.internal");
6168

6269
Configuration configuration = dapr.getConfiguration();
@@ -76,6 +83,10 @@ public void testConfigurationToYaml() {
7683
+ " endpointAddress: localhost:4317\n"
7784
+ " isSecure: false\n"
7885
+ " protocol: grpc\n"
86+
+ " httpPipeline:\n"
87+
+ " handlers:\n"
88+
+ " - name: alias\n"
89+
+ " type: middleware.http.routeralias\n"
7990
+ " appHttpPipeline:\n"
8091
+ " handlers:\n"
8192
+ " - name: alias\n"

0 commit comments

Comments
 (0)