Skip to content

Commit 3660c25

Browse files
Improve the path matching readability (#1005)
1 parent e378dfa commit 3660c25

5 files changed

Lines changed: 81 additions & 32 deletions

File tree

exonum-light-client/src/test/java/com/exonum/client/ExonumHttpClientBlocksIntegrationTest.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import static com.exonum.client.ExonumApi.MAX_BLOCKS_PER_REQUEST;
3434
import static com.exonum.client.ExonumUrls.BLOCK;
3535
import static com.exonum.client.ExonumUrls.BLOCKS;
36-
import static com.exonum.client.TestUtils.assertPath;
36+
import static com.exonum.client.RecordedRequestMatchers.hasPathStartingWith;
3737
import static com.exonum.client.request.BlockFilteringOption.INCLUDE_EMPTY;
3838
import static com.exonum.client.request.BlockFilteringOption.SKIP_EMPTY;
3939
import static com.exonum.client.request.BlockTimeOption.INCLUDE_COMMIT_TIME;
@@ -123,7 +123,7 @@ void getBlockByHeight() throws InterruptedException {
123123
// Assert request params
124124
RecordedRequest recordedRequest = server.takeRequest();
125125
assertThat(recordedRequest.getMethod(), is("GET"));
126-
assertPath(recordedRequest, BLOCK);
126+
assertThat(recordedRequest, hasPathStartingWith(BLOCK));
127127
assertThat(recordedRequest.getRequestUrl().queryParameter("height"),
128128
is(String.valueOf(height)));
129129
}
@@ -160,7 +160,7 @@ void getBlocksSinglePageSkippingEmpty() throws InterruptedException {
160160
// Assert request params
161161
RecordedRequest recordedRequest = server.takeRequest();
162162
assertThat(recordedRequest.getMethod(), is("GET"));
163-
assertPath(recordedRequest, BLOCKS);
163+
assertThat(recordedRequest, hasPathStartingWith(BLOCKS));
164164
int expectedNumBlocks = Math.toIntExact(toHeight - fromHeight + 1);
165165
assertBlockRequestParams(recordedRequest, expectedNumBlocks, blockFilter, toHeight, timeOption);
166166
}
@@ -197,7 +197,7 @@ void getBlocksSinglePageSkippingEmptyFiltersOutOfRangeBlocks() throws Interrupte
197197
// Assert request params
198198
RecordedRequest recordedRequest = server.takeRequest();
199199
assertThat(recordedRequest.getMethod(), is("GET"));
200-
assertPath(recordedRequest, BLOCKS);
200+
assertThat(recordedRequest, hasPathStartingWith(BLOCKS));
201201
int expectedNumBlocks = Math.toIntExact(toHeight - fromHeight + 1);
202202
assertBlockRequestParams(recordedRequest, expectedNumBlocks, blockFilter, toHeight, timeOption);
203203
}
@@ -228,7 +228,7 @@ void getBlocksSinglePageNoTime() throws InterruptedException {
228228
// Assert request params
229229
RecordedRequest recordedRequest = server.takeRequest();
230230
assertThat(recordedRequest.getMethod(), is("GET"));
231-
assertPath(recordedRequest, BLOCKS);
231+
assertThat(recordedRequest, hasPathStartingWith(BLOCKS));
232232
int expectedNumBlocks = Math.toIntExact(toHeight - fromHeight + 1);
233233
assertBlockRequestParams(recordedRequest, expectedNumBlocks, blockFilter, toHeight, timeOption);
234234
}
@@ -400,7 +400,7 @@ void getLastBlocksSkippingEmptySinglePage() throws InterruptedException {
400400
// Assert request params
401401
RecordedRequest recordedRequest = server.takeRequest();
402402
assertThat(recordedRequest.getMethod(), is("GET"));
403-
assertPath(recordedRequest, BLOCKS);
403+
assertThat(recordedRequest, hasPathStartingWith(BLOCKS));
404404
assertBlockRequestParams(recordedRequest, numBlocks, blockFilter, null, timeOption);
405405
}
406406

@@ -437,7 +437,7 @@ void getLastBlocksSkippingEmptyMoreThanCommitted(int overflow)
437437
// Assert request params
438438
RecordedRequest recordedRequest = server.takeRequest();
439439
assertThat(recordedRequest.getMethod(), is("GET"));
440-
assertPath(recordedRequest, BLOCKS);
440+
assertThat(recordedRequest, hasPathStartingWith(BLOCKS));
441441
int expectedFirstRequestSize = min(blocksCount, MAX_BLOCKS_PER_REQUEST);
442442
assertBlockRequestParams(recordedRequest, expectedFirstRequestSize, blockFilter, null,
443443
timeOption);
@@ -659,7 +659,7 @@ void getLastBlock() throws InterruptedException {
659659
// Assert request params
660660
RecordedRequest recordedRequest = server.takeRequest();
661661
assertThat(recordedRequest.getMethod(), is("GET"));
662-
assertPath(recordedRequest, BLOCKS);
662+
assertThat(recordedRequest, hasPathStartingWith(BLOCKS));
663663
assertBlockRequestParams(recordedRequest, 1, INCLUDE_EMPTY, null, INCLUDE_COMMIT_TIME);
664664
}
665665

@@ -685,7 +685,7 @@ void getLastNotEmptyBlock() throws InterruptedException {
685685
// Assert request params
686686
RecordedRequest recordedRequest = server.takeRequest();
687687
assertThat(recordedRequest.getMethod(), is("GET"));
688-
assertPath(recordedRequest, BLOCKS);
688+
assertThat(recordedRequest, hasPathStartingWith(BLOCKS));
689689
assertBlockRequestParams(recordedRequest, 1, SKIP_EMPTY, null, INCLUDE_COMMIT_TIME);
690690
}
691691

@@ -710,7 +710,7 @@ void getLastNotEmptyBlockNoBlock() throws InterruptedException {
710710
// Assert request params
711711
RecordedRequest recordedRequest = server.takeRequest();
712712
assertThat(recordedRequest.getMethod(), is("GET"));
713-
assertPath(recordedRequest, BLOCKS);
713+
assertThat(recordedRequest, hasPathStartingWith(BLOCKS));
714714
assertBlockRequestParams(recordedRequest, 1, SKIP_EMPTY, null, INCLUDE_COMMIT_TIME);
715715
}
716716

@@ -738,7 +738,7 @@ void getBlockchainHeight() throws InterruptedException {
738738
// Assert request params
739739
RecordedRequest recordedRequest = server.takeRequest();
740740
assertThat(recordedRequest.getMethod(), is("GET"));
741-
assertPath(recordedRequest, BLOCKS);
741+
assertThat(recordedRequest, hasPathStartingWith(BLOCKS));
742742
assertBlockRequestParams(recordedRequest, 0, INCLUDE_EMPTY, null, NO_COMMIT_TIME);
743743
}
744744

exonum-light-client/src/test/java/com/exonum/client/ExonumHttpClientIntegrationTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
import static com.exonum.client.ExonumUrls.MEMORY_POOL;
2424
import static com.exonum.client.ExonumUrls.TRANSACTIONS;
2525
import static com.exonum.client.ExonumUrls.USER_AGENT;
26-
import static com.exonum.client.TestUtils.assertExactPath;
27-
import static com.exonum.client.TestUtils.assertPath;
26+
import static com.exonum.client.RecordedRequestMatchers.hasPath;
27+
import static com.exonum.client.RecordedRequestMatchers.hasPathStartingWith;
2828
import static com.exonum.client.TestUtils.createTransactionMessage;
2929
import static com.exonum.client.TestUtils.toHex;
3030
import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
@@ -92,7 +92,7 @@ void submitTransactionTest() throws InterruptedException {
9292
// Assert request params
9393
RecordedRequest recordedRequest = server.takeRequest();
9494
assertThat(recordedRequest.getMethod(), is("POST"));
95-
assertExactPath(recordedRequest, TRANSACTIONS);
95+
assertThat(recordedRequest, hasPath(TRANSACTIONS));
9696

9797
// Assert request encoding
9898
String json = recordedRequest.getBody().readUtf8();
@@ -118,7 +118,7 @@ void getUnconfirmedTransactions() throws InterruptedException {
118118
// Assert request params
119119
RecordedRequest recordedRequest = server.takeRequest();
120120
assertThat(recordedRequest.getMethod(), is("GET"));
121-
assertExactPath(recordedRequest, MEMORY_POOL);
121+
assertThat(recordedRequest, hasPath(MEMORY_POOL));
122122
}
123123

124124
@Test
@@ -137,7 +137,7 @@ void healthCheck() throws InterruptedException {
137137
// Assert request params
138138
RecordedRequest recordedRequest = server.takeRequest();
139139
assertThat(recordedRequest.getMethod(), is("GET"));
140-
assertExactPath(recordedRequest, HEALTH_CHECK);
140+
assertThat(recordedRequest, hasPath(HEALTH_CHECK));
141141
}
142142

143143
@Test
@@ -155,7 +155,7 @@ void getUserAgentInfo() throws InterruptedException {
155155
// Assert request params
156156
RecordedRequest recordedRequest = server.takeRequest();
157157
assertThat(recordedRequest.getMethod(), is("GET"));
158-
assertExactPath(recordedRequest, USER_AGENT);
158+
assertThat(recordedRequest, hasPath(USER_AGENT));
159159
}
160160

161161
@Test
@@ -190,7 +190,7 @@ void getTransaction() throws InterruptedException {
190190
// Assert request params
191191
RecordedRequest recordedRequest = server.takeRequest();
192192
assertThat(recordedRequest.getMethod(), is("GET"));
193-
assertPath(recordedRequest, TRANSACTIONS);
193+
assertThat(recordedRequest, hasPathStartingWith(TRANSACTIONS));
194194
assertThat(recordedRequest.getRequestUrl().queryParameter("hash"), is(id.toString()));
195195
}
196196

@@ -209,7 +209,7 @@ void getTransactionNotFound() throws InterruptedException {
209209
// Assert request params
210210
RecordedRequest recordedRequest = server.takeRequest();
211211
assertThat(recordedRequest.getMethod(), is("GET"));
212-
assertPath(recordedRequest, TRANSACTIONS);
212+
assertThat(recordedRequest, hasPathStartingWith(TRANSACTIONS));
213213
assertThat(recordedRequest.getRequestUrl().queryParameter("hash"), is(id.toString()));
214214
}
215215

exonum-light-client/src/test/java/com/exonum/client/ExonumHttpClientWithPrefixIntegrationTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616

1717
package com.exonum.client;
1818

19-
import static com.exonum.client.TestUtils.assertPath;
19+
import static com.exonum.client.RecordedRequestMatchers.hasPathStartingWith;
20+
import static org.hamcrest.MatcherAssert.assertThat;
2021

2122
import java.io.IOException;
2223
import okhttp3.mockwebserver.MockResponse;
@@ -59,7 +60,7 @@ void requestWithPrefix() throws InterruptedException {
5960

6061
// Assert request params
6162
RecordedRequest recordedRequest = server.takeRequest();
62-
assertPath(recordedRequest, prefixUrl);
63+
assertThat(recordedRequest, hasPathStartingWith(prefixUrl));
6364
}
6465

6566
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* Copyright 2019 The Exonum Team
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.exonum.client;
18+
19+
import static com.google.common.base.Preconditions.checkArgument;
20+
import static org.hamcrest.Matchers.equalTo;
21+
import static org.hamcrest.Matchers.startsWith;
22+
23+
import okhttp3.mockwebserver.RecordedRequest;
24+
import org.hamcrest.FeatureMatcher;
25+
import org.hamcrest.Matcher;
26+
27+
class RecordedRequestMatchers {
28+
29+
static Matcher<RecordedRequest> hasPath(String expectedPath) {
30+
checkPathPrefix(expectedPath);
31+
Matcher<String> pathMatcher = equalTo("/" + expectedPath);
32+
return createRequestPathMatcher(pathMatcher);
33+
}
34+
35+
static Matcher<RecordedRequest> hasPathStartingWith(String expectedPathPrefix) {
36+
checkPathPrefix(expectedPathPrefix);
37+
Matcher<String> pathMatcher = startsWith("/" + expectedPathPrefix);
38+
return createRequestPathMatcher(pathMatcher);
39+
}
40+
41+
private static void checkPathPrefix(String expectedPath) {
42+
checkArgument(!expectedPath.startsWith("/"), "expectedPath (%s) must not have leading slash",
43+
expectedPath);
44+
}
45+
46+
private static Matcher<RecordedRequest> createRequestPathMatcher(
47+
Matcher<? super String> pathMatcher) {
48+
return new FeatureMatcher<RecordedRequest, String>(pathMatcher, "full request path",
49+
"request path") {
50+
51+
@Override
52+
protected String featureValueOf(RecordedRequest actual) {
53+
return actual.getPath();
54+
}
55+
};
56+
}
57+
58+
private RecordedRequestMatchers() {}
59+
}

exonum-light-client/src/test/java/com/exonum/client/TestUtils.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,9 @@
1717
package com.exonum.client;
1818

1919
import static com.exonum.binding.common.crypto.CryptoFunctions.ed25519;
20-
import static org.hamcrest.MatcherAssert.assertThat;
21-
import static org.hamcrest.Matchers.is;
22-
import static org.hamcrest.Matchers.startsWith;
2320

2421
import com.exonum.binding.common.message.TransactionMessage;
2522
import com.google.common.io.BaseEncoding;
26-
import okhttp3.mockwebserver.RecordedRequest;
2723

2824
final class TestUtils {
2925
private static final BaseEncoding HEX_ENCODER = BaseEncoding.base16().lowerCase();
@@ -40,11 +36,4 @@ static String toHex(TransactionMessage message) {
4036
return HEX_ENCODER.encode(message.toBytes());
4137
}
4238

43-
static void assertExactPath(RecordedRequest request, String url) {
44-
assertThat(request.getPath(), is("/" + url));
45-
}
46-
47-
static void assertPath(RecordedRequest request, String url) {
48-
assertThat(request.getPath(), startsWith("/" + url));
49-
}
5039
}

0 commit comments

Comments
 (0)