Skip to content

Commit 7537bb5

Browse files
committed
update with default handler constructor
1 parent 63ab0a8 commit 7537bb5

File tree

2 files changed

+38
-12
lines changed

2 files changed

+38
-12
lines changed

src/main/java/com/uid2/shared/vertx/RequestCapturingHandler.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,16 @@ public class RequestCapturingHandler implements Handler<RoutingContext> {
3434
private Queue<String> _capturedRequests = null;
3535
private final Map<String, Counter> _apiMetricCounters = new HashMap<>();
3636
private final Map<String, Counter> _clientAppVersionCounters = new HashMap<>();
37-
private final ISiteStore siteStore;
37+
private ISiteStore siteStore;
3838

3939
private static String formatRFC1123DateTime(long time) {
4040
return DateTimeFormatter.RFC_1123_DATE_TIME.format(Instant.ofEpochMilli(time).atZone(ZONE_GMT));
4141
}
4242

43+
public RequestCapturingHandler()
44+
{
45+
}
46+
4347
public RequestCapturingHandler(ISiteStore siteStore)
4448
{
4549
this.siteStore = siteStore;
@@ -115,7 +119,7 @@ private void capture(RoutingContext context, long timestamp, String remoteClient
115119
final Integer siteId = getSiteId(context);
116120

117121
String siteName = "unknown";
118-
if (siteId != null) {
122+
if (siteId != null && siteStore != null) {
119123
Site site = siteStore.getSite(siteId);
120124
if (site != null)
121125
{

src/test/java/com/uid2/shared/vertx/RequestCapturingHandlerTest.java

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import com.uid2.shared.auth.ClientKey;
55
import com.uid2.shared.auth.OperatorKey;
66
import com.uid2.shared.middleware.AuthMiddleware;
7+
import com.uid2.shared.model.Site;
8+
import com.uid2.shared.store.ISiteStore;
79
import io.micrometer.core.instrument.Metrics;
810
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
911
import io.vertx.core.Handler;
@@ -14,35 +16,50 @@
1416
import io.vertx.ext.web.client.WebClient;
1517
import io.vertx.junit5.VertxExtension;
1618
import io.vertx.junit5.VertxTestContext;
19+
import org.assertj.core.condition.AnyOf;
1720
import org.junit.jupiter.api.Assertions;
1821
import org.junit.jupiter.api.BeforeEach;
1922
import org.junit.jupiter.api.Test;
2023
import org.junit.jupiter.api.extension.ExtendWith;
2124
import org.junit.jupiter.params.ParameterizedTest;
2225
import org.junit.jupiter.params.provider.Arguments;
2326
import org.junit.jupiter.params.provider.MethodSource;
27+
import org.mockito.Mock;
28+
import org.mockito.Mockito;
2429

2530
import java.time.Instant;
31+
import java.util.HashSet;
2632
import java.util.Set;
2733
import java.util.stream.Stream;
2834

35+
import static org.mockito.ArgumentMatchers.anyInt;
36+
import static org.mockito.Mockito.when;
37+
2938
@ExtendWith(VertxExtension.class)
3039
public class RequestCapturingHandlerTest {
3140
private static final int Port = 8080;
3241
private static final Handler<RoutingContext> dummyResponseHandler = routingContext -> {
3342
routingContext.response().setStatusCode(200).end();
3443
};
3544

45+
private ISiteStore siteStore;
46+
3647
@BeforeEach
3748
public void before() {
3849
Metrics.globalRegistry.forEachMeter(Metrics.globalRegistry::remove);
3950
Metrics.globalRegistry.add(new SimpleMeterRegistry());
51+
52+
Site site100 = new Site(100, "test-100", true);
53+
Site site200 = new Site(200, "test-200", true);
54+
siteStore = Mockito.mock(ISiteStore.class);
55+
when(siteStore.getSite(100)).thenReturn(site100);
56+
when(siteStore.getSite(200)).thenReturn(site200);
4057
}
4158

4259
@Test
4360
public void captureSimplePath(Vertx vertx, VertxTestContext testContext) {
4461
Router router = Router.router(vertx);
45-
router.route().handler(new RequestCapturingHandler());
62+
router.route().handler(new RequestCapturingHandler(siteStore));
4663
router.get("/v1/token/generate").handler(dummyResponseHandler);
4764

4865
vertx.createHttpServer().requestHandler(router).listen(Port, testContext.succeeding(id -> {
@@ -90,7 +107,7 @@ public void captureSubRouterPath(Vertx vertx, VertxTestContext testContext) {
90107
@Test
91108
public void captureStaticPath(Vertx vertx, VertxTestContext testContext) {
92109
Router router = Router.router(vertx);
93-
router.route().handler(new RequestCapturingHandler());
110+
router.route().handler(new RequestCapturingHandler(siteStore));
94111
router.get("/static/*").handler(dummyResponseHandler);
95112

96113
vertx.createHttpServer().requestHandler(router).listen(Port, testContext.succeeding(id -> {
@@ -112,7 +129,7 @@ public void captureStaticPath(Vertx vertx, VertxTestContext testContext) {
112129
@Test
113130
public void captureUnknownPath(Vertx vertx, VertxTestContext testContext) {
114131
Router router = Router.router(vertx);
115-
router.route().handler(new RequestCapturingHandler());
132+
router.route().handler(new RequestCapturingHandler(siteStore));
116133

117134
vertx.createHttpServer().requestHandler(router).listen(Port, testContext.succeeding(id -> {
118135
WebClient client = WebClient.create(vertx);
@@ -132,9 +149,10 @@ public void captureUnknownPath(Vertx vertx, VertxTestContext testContext) {
132149

133150
@ParameterizedTest
134151
@MethodSource("siteIdRoutingContextData")
135-
public void getSiteIdFromRoutingContextData(String key, Object value, String siteId, Vertx vertx, VertxTestContext testContext) {
152+
public void getSiteIdFromRoutingContextData(String key, Object value, String siteId, String siteName,
153+
Vertx vertx, VertxTestContext testContext) {
136154
Router router = Router.router(vertx);
137-
router.route().handler(new RequestCapturingHandler());
155+
router.route().handler(new RequestCapturingHandler(siteStore));
138156
router.get("/test").handler(ctx -> {
139157
if (key != null) {
140158
ctx.put(key, value);
@@ -149,6 +167,7 @@ public void getSiteIdFromRoutingContextData(String key, Object value, String sit
149167
double actual = Metrics.globalRegistry
150168
.get("uid2.http_requests")
151169
.tag("site_id", siteId)
170+
.tag("site_name", siteName)
152171
.counter()
153172
.count();
154173
Assertions.assertEquals(1, actual);
@@ -160,11 +179,14 @@ public void getSiteIdFromRoutingContextData(String key, Object value, String sit
160179
private static Stream<Arguments> siteIdRoutingContextData() {
161180
// Arguments are: routing context data key, routing context data value, site ID tag.
162181
return Stream.of(
163-
Arguments.of(Const.RoutingContextData.SiteId, 100, "100"),
164-
Arguments.of(AuthMiddleware.API_CLIENT_PROP, new ClientKey("keyHash", "keySalt", "secret", "", Instant.MIN, Set.of(), 200, "test-key-id-1"), "200"),
165-
Arguments.of(AuthMiddleware.API_CLIENT_PROP, new OperatorKey("test-keyHash", "test-keySalt", "name", "contact", "protocol", 0, false, "test-key-id-2"), "null"),
166-
Arguments.of(AuthMiddleware.API_CLIENT_PROP, new OperatorKey("test-keyHash", "test-keySalt", "name", "contact", "protocol", 0, false, 300, "test-key-id-3"), "300"),
167-
Arguments.of(null, null, "null")
182+
Arguments.of(Const.RoutingContextData.SiteId, 100, "100", "test-100"),
183+
Arguments.of(AuthMiddleware.API_CLIENT_PROP, new ClientKey("keyHash", "keySalt",
184+
"secret", "", Instant.MIN, Set.of(), 200, "test-key-id-1"), "200", "test-200"),
185+
Arguments.of(AuthMiddleware.API_CLIENT_PROP, new OperatorKey("test-keyHash", "test-keySalt",
186+
"name", "contact", "protocol", 0, false, "test-key-id-2"), "null", "unknown"),
187+
Arguments.of(AuthMiddleware.API_CLIENT_PROP, new OperatorKey("test-keyHash", "test-keySalt",
188+
"name", "contact", "protocol", 0, false, 300, "test-key-id-3"), "300", "unknown"),
189+
Arguments.of(null, null, "null", "unknown")
168190
);
169191
}
170192
}

0 commit comments

Comments
 (0)