Skip to content

Commit 9f4c57b

Browse files
[rest] use baseHeaders instead of emptyMap in RESTApi GetConfig (#6410)
1 parent 05f27d2 commit 9f4c57b

3 files changed

Lines changed: 54 additions & 3 deletions

File tree

paimon-api/src/main/java/org/apache/paimon/rest/RESTApi.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,6 @@
9292
import javax.annotation.Nullable;
9393

9494
import java.util.ArrayList;
95-
import java.util.Collections;
9695
import java.util.List;
9796
import java.util.Map;
9897
import java.util.Objects;
@@ -192,8 +191,7 @@ public RESTApi(Options options, boolean configRequired) {
192191
ResourcePaths.config(),
193192
queryParams,
194193
ConfigResponse.class,
195-
new RESTAuthFunction(
196-
Collections.emptyMap(), authProvider))
194+
new RESTAuthFunction(baseHeaders, authProvider))
197195
.merge(options.toMap()));
198196
baseHeaders.putAll(extractPrefixMap(options, HEADER_PREFIX));
199197
}

paimon-core/src/test/java/org/apache/paimon/rest/MockRESTCatalogTest.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,48 @@ void testHeaderOptions() throws Exception {
170170
assertEquals(headers2.get("User-Agent"), "test");
171171
}
172172

173+
@Test
174+
void testBaseHeadersInRequests() throws Exception {
175+
// Set custom headers in options
176+
String customHeaderName = "custom-header";
177+
String customHeaderValue = "custom-value";
178+
options.set(HEADER_PREFIX + customHeaderName, customHeaderValue);
179+
180+
// Clear any previous headers
181+
restCatalogServer.clearReceivedHeaders();
182+
assertEquals(0, restCatalogServer.getReceivedHeaders().size());
183+
184+
// Initialize catalog with custom headers
185+
RESTCatalog restCatalog = initCatalog(false);
186+
// init catalog will trigger REST GetConfig request
187+
checkHeader(customHeaderName, customHeaderValue);
188+
189+
// Clear any previous headers
190+
restCatalogServer.clearReceivedHeaders();
191+
assertEquals(0, restCatalogServer.getReceivedHeaders().size());
192+
193+
// Perform an operation that will trigger REST request
194+
restCatalog.listDatabases();
195+
checkHeader(customHeaderName, customHeaderValue);
196+
}
197+
198+
private void checkHeader(String headerName, String headerValue) {
199+
// Verify that the header were included in the requests
200+
List<Map<String, String>> receivedHeaders = restCatalogServer.getReceivedHeaders();
201+
assert receivedHeaders.size() > 0 : "No requests were recorded";
202+
203+
// Check that request contains our custom headers
204+
boolean foundCustomHeader = false;
205+
206+
for (Map<String, String> headers : receivedHeaders) {
207+
if (headerValue.equals(headers.get(headerName))) {
208+
foundCustomHeader = true;
209+
}
210+
}
211+
212+
assert foundCustomHeader : "Header was not found in any request";
213+
}
214+
173215
private void testDlfAuth(RESTCatalog restCatalog) throws Exception {
174216
String databaseName = "db1";
175217
restCatalog.createDatabase(databaseName, true);

paimon-core/src/test/java/org/apache/paimon/rest/RESTCatalogServer.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,8 @@ public class RESTCatalogServer {
180180

181181
private final ResourcePaths resourcePaths;
182182

183+
private final List<Map<String, String>> receivedHeaders = new ArrayList<>();
184+
183185
public RESTCatalogServer(
184186
String dataPath, AuthProvider authProvider, ConfigResponse config, String warehouse) {
185187
this.warehouse = warehouse;
@@ -275,6 +277,7 @@ public MockResponse dispatch(RecordedRequest request) {
275277
RESTResponse response;
276278
try {
277279
Map<String, String> headers = getHeader(request);
280+
receivedHeaders.add(new HashMap<>(headers));
278281
String[] paths = request.getPath().split("\\?");
279282
String resourcePath = paths[0];
280283
Map<String, String> parameters =
@@ -2375,4 +2378,12 @@ private MockResponse handleInvalidMaxResults(Map<String, String> parameters) {
23752378
400),
23762379
400);
23772380
}
2381+
2382+
public List<Map<String, String>> getReceivedHeaders() {
2383+
return receivedHeaders;
2384+
}
2385+
2386+
public void clearReceivedHeaders() {
2387+
receivedHeaders.clear();
2388+
}
23782389
}

0 commit comments

Comments
 (0)