Skip to content

Commit b4ee8ec

Browse files
committed
Add test for base path resolution
1 parent 9bf0b40 commit b4ee8ec

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

core/src/main/java/com/sap/ai/sdk/core/DestinationResolver.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.sap.cloud.sdk.cloudplatform.connectivity.HttpDestination;
1313
import com.sap.cloud.sdk.cloudplatform.connectivity.ServiceBindingDestinationLoader;
1414
import com.sap.cloud.sdk.cloudplatform.connectivity.ServiceBindingDestinationOptions;
15+
import java.net.URI;
1516
import java.util.List;
1617
import javax.annotation.Nonnull;
1718
import lombok.AllArgsConstructor;
@@ -66,7 +67,14 @@ static HttpDestination fromCustomBaseDestination(@Nonnull final HttpDestination
6667
if (path == null || path.isEmpty() || path.equals("/")) {
6768
return setBasePath(enhancedBaseDestination);
6869
}
69-
return enhancedBaseDestination;
70+
if (path.endsWith("/")) {
71+
return enhancedBaseDestination;
72+
}
73+
val urlWithTrailingSlash = URI.create(enhancedBaseDestination.getUri() + "/");
74+
75+
return DefaultHttpDestination.fromDestination(enhancedBaseDestination)
76+
.uri(urlWithTrailingSlash)
77+
.build();
7078
}
7179

7280
@Nonnull

core/src/test/java/com/sap/ai/sdk/core/DestinationResolverTest.java

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,25 @@ void testNoServiceBindingLoadingThrows() {
5656
assertThatThrownBy(resolver::getDestination).isSameAs(exception);
5757
}
5858

59+
private record DestinationTestCase(String givenBasePath, String expectedBasePath) {}
60+
5961
@Test
6062
void testFromCustomBaseDestination() {
61-
var destination = DefaultHttpDestination.builder("https://api.ai.sap").build();
62-
assertThat(DestinationResolver.fromCustomBaseDestination(destination).getUri())
63-
.hasToString("https://api.ai.sap/v2/");
64-
65-
destination = DefaultHttpDestination.builder("https://api.ai.sap/").build();
66-
assertThat(DestinationResolver.fromCustomBaseDestination(destination).getUri())
67-
.hasToString("https://api.ai.sap/v2/");
68-
69-
destination = DefaultHttpDestination.builder("https://api.ai.sap/foo").build();
70-
assertThat(DestinationResolver.fromCustomBaseDestination(destination).getUri())
71-
.hasToString("https://api.ai.sap/foo");
63+
var testCases =
64+
new DestinationTestCase[] {
65+
new DestinationTestCase("", "/v2/"),
66+
new DestinationTestCase("/", "/v2/"),
67+
new DestinationTestCase("/foo", "/foo/"),
68+
new DestinationTestCase("/foo/", "/foo/")
69+
};
70+
for (var testCase : testCases) {
71+
var url = "https://api.ai.sap" + testCase.givenBasePath;
72+
var destination = DefaultHttpDestination.builder(url).build();
73+
assertThat(DestinationResolver.fromCustomBaseDestination(destination).getUri().getPath())
74+
.describedAs(
75+
"Expecting given base path %s to resolve to %s",
76+
testCase.givenBasePath, testCase.expectedBasePath)
77+
.hasToString(testCase.expectedBasePath);
78+
}
7279
}
7380
}

0 commit comments

Comments
 (0)