Skip to content

Commit 10592bd

Browse files
committed
Some comments; Minor improvement
1 parent 28ceccb commit 10592bd

1 file changed

Lines changed: 46 additions & 25 deletions

File tree

datamodel/odata-client/src/test/java/com/sap/cloud/sdk/datamodel/odata/client/request/ODataNextLinkTest.java

Lines changed: 46 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,39 +3,39 @@
33
import static com.github.tomakehurst.wiremock.client.WireMock.get;
44
import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor;
55
import static com.github.tomakehurst.wiremock.client.WireMock.okJson;
6-
import static com.github.tomakehurst.wiremock.client.WireMock.post;
76
import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
87
import static com.github.tomakehurst.wiremock.client.WireMock.verify;
98
import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig;
109
import static org.assertj.core.api.Assertions.assertThat;
1110
import static org.mockito.Mockito.mock;
1211
import static org.mockito.Mockito.when;
1312

14-
import com.github.tomakehurst.wiremock.WireMockServer;
15-
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
16-
import io.vavr.control.Try;
17-
import lombok.AllArgsConstructor;
18-
import lombok.Builder;
19-
import lombok.RequiredArgsConstructor;
20-
import lombok.Setter;
21-
import lombok.ToString;
22-
import lombok.experimental.Accessors;
13+
import javax.annotation.Nonnull;
14+
2315
import org.apache.http.HttpResponse;
2416
import org.apache.http.HttpVersion;
2517
import org.apache.http.client.HttpClient;
2618
import org.apache.http.entity.ContentType;
2719
import org.apache.http.entity.StringEntity;
2820
import org.apache.http.message.BasicHttpResponse;
2921
import org.junit.jupiter.api.Test;
22+
import org.junit.jupiter.params.ParameterizedTest;
23+
import org.junit.jupiter.params.provider.FieldSource;
3024

25+
import com.github.tomakehurst.wiremock.WireMockServer;
26+
import com.github.tomakehurst.wiremock.core.WireMockConfiguration;
3127
import com.sap.cloud.sdk.cloudplatform.connectivity.DefaultHttpDestination;
3228
import com.sap.cloud.sdk.cloudplatform.connectivity.Destination;
3329
import com.sap.cloud.sdk.cloudplatform.connectivity.HttpClientAccessor;
3430
import com.sap.cloud.sdk.datamodel.odata.client.ODataProtocol;
35-
import org.junit.jupiter.params.ParameterizedTest;
36-
import org.junit.jupiter.params.provider.FieldSource;
3731

38-
import javax.annotation.Nonnull;
32+
import io.vavr.control.Try;
33+
import lombok.AllArgsConstructor;
34+
import lombok.Builder;
35+
import lombok.RequiredArgsConstructor;
36+
import lombok.Setter;
37+
import lombok.ToString;
38+
import lombok.experimental.Accessors;
3939

4040
class ODataNextLinkTest
4141
{
@@ -93,10 +93,11 @@ static class Expectation
9393
.expects(
9494
QueryParameterCase.Expectation
9595
.builder()
96-
.initialQuerySent("dest1=one&dest2=two&odata1=one&odata2=two&prop1=one&prop2=two")
97-
.nextLinkQueryParsed("$skiptoken=42&next1=one&next2=two")
98-
.nextLinkQuerySent("dest1=one&dest2=two&$skiptoken=42&next1=one&next2=two&prop1=one&prop2=two")
96+
.initialQuerySent("dest1=one&dest2=two&odata1=one&odata2=two&prop1=one&prop2=two") // destination parameters + odata-request parameters + properties parameters
97+
.nextLinkQueryParsed("$skiptoken=42&next1=one&next2=two") // parsed next-link with removed redundant query parameters
98+
.nextLinkQuerySent("dest1=one&dest2=two&$skiptoken=42&next1=one&next2=two&prop1=one&prop2=two") // destination parameters + next-link parameters + properties parameters
9999
.build()),
100+
100101
// case 2: query-parameters from destination uri, destination properties, next-link and odata-request with equal values
101102
QueryParameterCase
102103
.named("EQUAL")
@@ -111,10 +112,11 @@ static class Expectation
111112
.expects(
112113
QueryParameterCase.Expectation
113114
.builder()
114-
.initialQuerySent("dest1=one&dest2=two&odata1=one&odata2=two&prop1=one&prop2=two")
115-
.nextLinkQueryParsed("$skiptoken=42&next1=one&odata1=one")
116-
.nextLinkQuerySent("dest1=one&dest2=two&$skiptoken=42&next1=one&odata1=one&prop1=one&prop2=two")
115+
.initialQuerySent("dest1=one&dest2=two&odata1=one&odata2=two&prop1=one&prop2=two") // destination parameters + odata-request parameters + properties parameters
116+
.nextLinkQueryParsed("$skiptoken=42&next1=one&odata1=one") // parsed next-link with removed redundant query parameters
117+
.nextLinkQuerySent("dest1=one&dest2=two&$skiptoken=42&next1=one&odata1=one&prop1=one&prop2=two") // destination parameters + next-link parameters + properties parameters
117118
.build()),
119+
118120
// case 3: query-parameters from next link may be in conflict with destination uri or destination properties
119121
QueryParameterCase
120122
.named("CONFLICT")
@@ -129,15 +131,34 @@ static class Expectation
129131
.expects(
130132
QueryParameterCase.Expectation
131133
.builder()
132-
.initialQuerySent("dest1=one&dest2=two&odata1=one&odata2=two&prop1=one&prop2=two")
133-
.nextLinkQueryParsed("$skiptoken=42&next1=eins&dest1=eins&prop1=eins&odata1=eins")
134+
.initialQuerySent("dest1=one&dest2=two&odata1=one&odata2=two&prop1=one&prop2=two") // destination parameters + odata-request parameters + properties parameters
135+
.nextLinkQueryParsed("$skiptoken=42&next1=eins&dest1=eins&prop1=eins&odata1=eins") // parsed next-link with conflicting parameter values
134136
.nextLinkQuerySent(
135137
"dest1=one&dest2=two" // destination parameters
136138
+ "&$skiptoken=42&next1=eins&dest1=eins&prop1=eins&odata1=eins" // next-link parameters
137139
+ "&prop1=one&prop2=two" // properties parameters
138140
)
139141
.build()),
140142

143+
// case 4: sanity check for same query-parameters
144+
QueryParameterCase
145+
.named("SANITY")
146+
.with(
147+
QueryParameterCase.Setup
148+
.builder()
149+
.destinationQuery("foo=bar")
150+
.propertiesQuery("foo=bar")
151+
.initialQuery("foo=bar")
152+
.nextLinkQuery("foo=bar")
153+
.build())
154+
.expects(
155+
QueryParameterCase.Expectation
156+
.builder()
157+
.initialQuerySent("foo=bar&foo=bar&foo=bar") // destination parameters + odata-request parameters + properties parameters
158+
.nextLinkQueryParsed("$skiptoken=42") // parsed next-link with removed redundant query parameters
159+
.nextLinkQuerySent("foo=bar&$skiptoken=42&foo=bar") // destination parameters + next-link parameters + properties parameters
160+
.build()),
161+
141162
};
142163

143164
@ParameterizedTest
@@ -191,7 +212,7 @@ void testRemoveDuplicateQueryArguments1( @Nonnull final QueryParameterCase testC
191212
void testRemoveDuplicateQueryArguments()
192213
{
193214
final ODataRequestGeneric request =
194-
new ODataRequestRead("/v1/path/to/", "endpoint", "blub=42", ODataProtocol.V2);
215+
new ODataRequestRead("/v1/foo/bar/", "endpoint", "blub=42", ODataProtocol.V2);
195216

196217
final HttpResponse httpResponse = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "Ok");
197218
httpResponse.setEntity(new StringEntity(PAYLOAD_NEXT_LINK, ContentType.APPLICATION_JSON));
@@ -202,13 +223,13 @@ void testRemoveDuplicateQueryArguments()
202223
final Destination dest1 = DefaultHttpDestination.builder(baseUrl).property("URL.queries.foo", "bar").build();
203224
final HttpClient client1 = HttpClientAccessor.getHttpClient(dest1);
204225
final ODataRequestResultGeneric result1 = new ODataRequestResultGeneric(request, httpResponse, client1);
205-
assertThat(result1.getNextLink()).contains("/v1/path/to/endpoint?$skiptoken=s3cReT-t0k3n");
226+
assertThat(result1.getNextLink()).contains("/v1/foo/bar/endpoint?$skiptoken=s3cReT-t0k3n");
206227

207228
// case 2: query parameters are NOT EQUAL in destination and in nextLink -> retain query parameter
208-
final Destination dest2 = DefaultHttpDestination.builder(baseUrl).property("URL.queries.foo", "baz").build();
229+
final Destination dest2 = DefaultHttpDestination.builder(baseUrl).property("URL.queries.foo", "SAP").build();
209230
final HttpClient client2 = HttpClientAccessor.getHttpClient(dest2);
210231
final ODataRequestResultGeneric result2 = new ODataRequestResultGeneric(request, httpResponse, client2);
211-
assertThat(result2.getNextLink()).contains("/v1/path/to/endpoint?$skiptoken=s3cReT-t0k3n&foo=bar");
232+
assertThat(result2.getNextLink()).contains("/v1/foo/bar/endpoint?$skiptoken=s3cReT-t0k3n&foo=bar");
212233
}
213234

214235
@Test

0 commit comments

Comments
 (0)