|
8 | 8 |
|
9 | 9 | import com.google.common.io.BaseEncoding;
|
10 | 10 | import java.util.List;
|
| 11 | +import java.util.function.Function; |
| 12 | +import java.util.stream.Stream; |
11 | 13 | import lombok.RequiredArgsConstructor;
|
| 14 | +import org.assertj.core.api.InstanceOfAssertFactories; |
12 | 15 | import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
|
13 | 16 | import org.hiero.mirror.common.domain.token.TokenAirdrop;
|
14 | 17 | import org.hiero.mirror.common.util.DomainUtils;
|
15 | 18 | import org.hiero.mirror.rest.model.Links;
|
16 | 19 | import org.hiero.mirror.rest.model.TokenAirdropsResponse;
|
17 | 20 | import org.hiero.mirror.restjava.mapper.TokenAirdropMapper;
|
18 | 21 | import org.junit.jupiter.api.DisplayName;
|
| 22 | +import org.junit.jupiter.api.DynamicTest; |
19 | 23 | import org.junit.jupiter.api.Nested;
|
20 | 24 | import org.junit.jupiter.api.Test;
|
| 25 | +import org.junit.jupiter.api.TestFactory; |
| 26 | +import org.junit.jupiter.api.function.ThrowingConsumer; |
21 | 27 | import org.junit.jupiter.params.ParameterizedTest;
|
22 | 28 | import org.junit.jupiter.params.provider.CsvSource;
|
23 | 29 | import org.junit.jupiter.params.provider.ValueSource;
|
@@ -46,31 +52,40 @@ protected String getUrl() {
|
46 | 52 | @Override
|
47 | 53 | protected RequestHeadersSpec<?> defaultRequest(RequestHeadersUriSpec<?> uriSpec) {
|
48 | 54 | var sender = domainBuilder.entityNum(1000);
|
49 |
| - var tokenAirdrop = domainBuilder |
| 55 | + domainBuilder |
50 | 56 | .tokenAirdrop(FUNGIBLE_COMMON)
|
51 | 57 | .customize(e -> e.senderAccountId(sender.getId()))
|
52 | 58 | .persist();
|
53 | 59 | return uriSpec.uri("", sender.getNum());
|
54 | 60 | }
|
55 | 61 |
|
56 |
| - @ParameterizedTest |
57 |
| - @CsvSource({"0.0.1000,1000", "0.1000,1000", "1000,1000"}) |
58 |
| - void entityId(String input, long num) { |
59 |
| - // Given |
60 |
| - var encodedId = domainBuilder.entityNum(num).getId(); |
61 |
| - var tokenAirdrop = domainBuilder |
| 62 | + @TestFactory |
| 63 | + Stream<DynamicTest> entityId() { |
| 64 | + final var entityId = domainBuilder.entityNum(1000); |
| 65 | + final var inputs = List.of( |
| 66 | + entityId.toString(), |
| 67 | + String.format("%d.%d", entityId.getRealm(), entityId.getNum()), |
| 68 | + Long.toString(entityId.getNum())); |
| 69 | + final var tokenAirdrop = domainBuilder |
62 | 70 | .tokenAirdrop(FUNGIBLE_COMMON)
|
63 |
| - .customize(a -> a.senderAccountId(encodedId)) |
64 |
| - .persist(); |
65 |
| - |
66 |
| - // When |
67 |
| - var response = restClient.get().uri("", input).retrieve().toEntity(TokenAirdropsResponse.class); |
68 |
| - |
69 |
| - // Then |
70 |
| - assertThat(response.getBody().getAirdrops().getFirst()).isEqualTo(mapper.map(tokenAirdrop)); |
71 |
| - // Based on application.yml response headers configuration |
72 |
| - assertThat(response.getHeaders().getAccessControlAllowOrigin()).isEqualTo("*"); |
73 |
| - assertThat(response.getHeaders().getCacheControl()).isEqualTo("public, max-age=1"); |
| 71 | + .customize(a -> a.senderAccountId(entityId.getId())) |
| 72 | + .persist(); |
| 73 | + final ThrowingConsumer<String> executor = input -> { |
| 74 | + // When |
| 75 | + final var response = restClient.get().uri("", input).retrieve().toEntity(TokenAirdropsResponse.class); |
| 76 | + |
| 77 | + // Then |
| 78 | + assertThat(response.getBody()) |
| 79 | + .extracting( |
| 80 | + TokenAirdropsResponse::getAirdrops, InstanceOfAssertFactories.list(TokenAirdrop.class)) |
| 81 | + .first() |
| 82 | + .isEqualTo(mapper.map(tokenAirdrop)); |
| 83 | + // Based on application.yml response headers configuration |
| 84 | + assertThat(response.getHeaders().getAccessControlAllowOrigin()).isEqualTo("*"); |
| 85 | + assertThat(response.getHeaders().getCacheControl()).isEqualTo("public, max-age=1"); |
| 86 | + }; |
| 87 | + |
| 88 | + return DynamicTest.stream(inputs.iterator(), Function.identity(), executor); |
74 | 89 | }
|
75 | 90 |
|
76 | 91 | @Test
|
@@ -998,24 +1013,33 @@ protected RequestHeadersSpec<?> defaultRequest(RequestHeadersUriSpec<?> uriSpec)
|
998 | 1013 | return uriSpec.uri("", receiverId.getNum());
|
999 | 1014 | }
|
1000 | 1015 |
|
1001 |
| - @ParameterizedTest |
1002 |
| - @CsvSource({"0.0.1000,1000", "0.1000,1000", "1000,1000"}) |
1003 |
| - void entityId(String input, long num) { |
1004 |
| - // Given |
1005 |
| - var encodedId = domainBuilder.entityNum(num).getId(); |
1006 |
| - var tokenAirdrop = domainBuilder |
| 1016 | + @TestFactory |
| 1017 | + Stream<DynamicTest> entityId() { |
| 1018 | + final var entityId = domainBuilder.entityNum(1000); |
| 1019 | + final var inputs = List.of( |
| 1020 | + entityId.toString(), |
| 1021 | + String.format("%d.%d", entityId.getRealm(), entityId.getNum()), |
| 1022 | + Long.toString(entityId.getNum())); |
| 1023 | + final var tokenAirdrop = domainBuilder |
1007 | 1024 | .tokenAirdrop(FUNGIBLE_COMMON)
|
1008 |
| - .customize(a -> a.receiverAccountId(encodedId)) |
1009 |
| - .persist(); |
1010 |
| - |
1011 |
| - // When |
1012 |
| - var response = restClient.get().uri("", input).retrieve().toEntity(TokenAirdropsResponse.class); |
1013 |
| - |
1014 |
| - // Then |
1015 |
| - assertThat(response.getBody().getAirdrops().getFirst()).isEqualTo(mapper.map(tokenAirdrop)); |
1016 |
| - // Based on application.yml response headers configuration |
1017 |
| - assertThat(response.getHeaders().getAccessControlAllowOrigin()).isEqualTo("*"); |
1018 |
| - assertThat(response.getHeaders().getCacheControl()).isEqualTo("public, max-age=1"); |
| 1025 | + .customize(a -> a.receiverAccountId(entityId.getId())) |
| 1026 | + .persist(); |
| 1027 | + final ThrowingConsumer<String> executor = input -> { |
| 1028 | + // When |
| 1029 | + final var response = restClient.get().uri("", input).retrieve().toEntity(TokenAirdropsResponse.class); |
| 1030 | + |
| 1031 | + // Then |
| 1032 | + assertThat(response.getBody()) |
| 1033 | + .extracting( |
| 1034 | + TokenAirdropsResponse::getAirdrops, InstanceOfAssertFactories.list(TokenAirdrop.class)) |
| 1035 | + .first() |
| 1036 | + .isEqualTo(mapper.map(tokenAirdrop)); |
| 1037 | + // Based on application.yml response headers configuration |
| 1038 | + assertThat(response.getHeaders().getAccessControlAllowOrigin()).isEqualTo("*"); |
| 1039 | + assertThat(response.getHeaders().getCacheControl()).isEqualTo("public, max-age=1"); |
| 1040 | + }; |
| 1041 | + |
| 1042 | + return DynamicTest.stream(inputs.iterator(), Function.identity(), executor); |
1019 | 1043 | }
|
1020 | 1044 |
|
1021 | 1045 | @Test
|
|
0 commit comments