1818import org .eclipse .edc .spi .types .domain .DataAddress ;
1919import org .eclipse .edc .spi .types .domain .transfer .DataFlowRequest ;
2020import org .junit .jupiter .api .Test ;
21+ import org .junit .jupiter .api .extension .ExtensionContext ;
2122import org .junit .jupiter .params .ParameterizedTest ;
2223import org .junit .jupiter .params .provider .Arguments ;
23- import org .junit .jupiter .params .provider .MethodSource ;
24+ import org .junit .jupiter .params .provider .ArgumentsProvider ;
25+ import org .junit .jupiter .params .provider .ArgumentsSource ;
2426
25- import java .util .Collection ;
26- import java .util .HashMap ;
2727import java .util .Map ;
2828import java .util .UUID ;
2929import java .util .stream .Stream ;
3030
3131import static org .assertj .core .api .Assertions .assertThat ;
32+ import static org .eclipse .edc .azure .blob .AzureBlobStoreSchema .ACCOUNT_NAME ;
33+ import static org .eclipse .edc .azure .blob .AzureBlobStoreSchema .BLOB_NAME ;
34+ import static org .eclipse .edc .azure .blob .AzureBlobStoreSchema .CONTAINER_NAME ;
3235import static org .eclipse .edc .azure .blob .testfixtures .AzureStorageTestFixtures .createDataAddress ;
3336import static org .eclipse .edc .azure .blob .testfixtures .AzureStorageTestFixtures .createRequest ;
37+ import static org .eclipse .edc .junit .assertions .AbstractResultAssert .assertThat ;
3438import static org .junit .jupiter .params .provider .Arguments .arguments ;
3539
3640class AzureDataFactoryTransferRequestValidatorTest {
@@ -40,29 +44,10 @@ class AzureDataFactoryTransferRequestValidatorTest {
4044 private final Map <String , String > destinationProperties = TestFunctions .destinationProperties ();
4145 private final DataAddress .Builder source = createDataAddress (AzureBlobStoreSchema .TYPE );
4246 private final DataAddress .Builder destination = createDataAddress (AzureBlobStoreSchema .TYPE );
43- private final String extraKey = "test-extra-key" ;
44- private final String extraValue = "test-extra-value" ;
4547 AzureDataFactoryTransferRequestValidator validator = new AzureDataFactoryTransferRequestValidator ();
4648
47- static Collection <String > sourcePropertyKeys () {
48- return TestFunctions .sourceProperties ().keySet ();
49- }
50-
51- private static Stream <Arguments > canHandleArguments () {
52- return Stream .of (
53- arguments ("Invalid source and valid destination" , "Invalid source" , AzureBlobStoreSchema .TYPE , false ),
54- arguments ("Valid source and invalid destination" , AzureBlobStoreSchema .TYPE , "Invalid destination" , false ),
55- arguments ("Invalid source and destination" , "Invalid source" , "Invalid destination" , false ),
56- arguments ("Valid source and destination" , AzureBlobStoreSchema .TYPE , AzureBlobStoreSchema .TYPE , true )
57- );
58- }
59-
60- private static Collection <String > destinationPropertyKeys () {
61- return TestFunctions .destinationProperties ().keySet ();
62- }
63-
6449 @ ParameterizedTest (name = "{index} {0}" )
65- @ MethodSource ( "canHandleArguments" )
50+ @ ArgumentsSource ( CanHandle . class )
6651 void canHandle_onResult (String ignoredName , String sourceType , String destinationType , boolean expected ) {
6752 // Arrange
6853 var source = createDataAddress (sourceType );
@@ -84,41 +69,70 @@ void validate_whenRequestValid_succeeds() {
8469 assertThat (result .succeeded ()).withFailMessage (result ::getFailureDetail ).isTrue ();
8570 }
8671
87- @ Test
88- void validate_whenExtraSourceProperty_fails () {
89- assertThat (validator .validate (REQUEST
90- .sourceDataAddress (source .properties (sourceProperties ).property (extraKey , extraValue ).build ())
72+ @ ParameterizedTest
73+ @ ArgumentsSource (InvalidSourceAddress .class )
74+ void validate_whenMissingSourceProperty_fails (DataAddress .Builder <?, ?> dataAddressBuilder ) {
75+ var request = REQUEST
76+ .sourceDataAddress (dataAddressBuilder .build ())
9177 .destinationDataAddress (destination .properties (destinationProperties ).build ())
92- .build ()).failed ()).isTrue ();
78+ .build ();
79+
80+ var result = validator .validate (request );
81+
82+ assertThat (result ).isFailed ();
9383 }
9484
95- @ Test
96- void validate_whenExtraDestinationProperty_fails () {
85+ @ ParameterizedTest
86+ @ ArgumentsSource (InvalidDestinationAddress .class )
87+ void validate_whenMissingDestinationProperty_fails (DataAddress .Builder <?, ?> dataAddressBuilder ) {
9788 assertThat (validator .validate (REQUEST
9889 .sourceDataAddress (source .properties (sourceProperties ).build ())
99- .destinationDataAddress (destination . properties ( destinationProperties ). property ( extraKey , extraValue ) .build ())
90+ .destinationDataAddress (dataAddressBuilder .build ())
10091 .build ()).failed ()).isTrue ();
10192 }
10293
103- @ ParameterizedTest
104- @ MethodSource ("sourcePropertyKeys" )
105- void validate_whenMissingSourceProperty_fails (String property ) {
106- var src = new HashMap <>(sourceProperties );
107- src .remove (property );
108- assertThat (validator .validate (REQUEST
109- .sourceDataAddress (source .properties (src ).build ())
110- .destinationDataAddress (destination .properties (destinationProperties ).build ())
111- .build ()).failed ()).isTrue ();
94+ private static class InvalidSourceAddress implements ArgumentsProvider {
95+ @ Override
96+ public Stream <? extends Arguments > provideArguments (ExtensionContext extensionContext ) {
97+ return Stream .of (
98+ dataAddress ().property (ACCOUNT_NAME , "accountName" ).property (CONTAINER_NAME , "containerName" ).property (BLOB_NAME , "blobName" ),
99+ dataAddress ().keyName ("keyName" ).property (CONTAINER_NAME , "containerName" ).property (BLOB_NAME , "blobName" ),
100+ dataAddress ().keyName ("keyName" ).property (ACCOUNT_NAME , "accountName" ).property (BLOB_NAME , "blobName" ),
101+ dataAddress ().keyName ("keyName" ).property (ACCOUNT_NAME , "accountName" ).property (CONTAINER_NAME , "containerName" )
102+ ).map (Arguments ::arguments );
103+ }
104+
105+ private DataAddress .Builder <?, ?> dataAddress () {
106+ return DataAddress .Builder .newInstance ().type (AzureBlobStoreSchema .TYPE );
107+ }
112108 }
113109
114- @ ParameterizedTest
115- @ MethodSource ("destinationPropertyKeys" )
116- void validate_whenMissingDestinationProperty_fails (String property ) {
117- var dest = new HashMap <>(destinationProperties );
118- dest .remove (property );
119- assertThat (validator .validate (REQUEST
120- .sourceDataAddress (source .properties (sourceProperties ).build ())
121- .destinationDataAddress (destination .properties (dest ).build ())
122- .build ()).failed ()).isTrue ();
110+ private static class InvalidDestinationAddress implements ArgumentsProvider {
111+ @ Override
112+ public Stream <? extends Arguments > provideArguments (ExtensionContext extensionContext ) {
113+ return Stream .of (
114+ dataAddress ().property (ACCOUNT_NAME , "accountName" ).property (CONTAINER_NAME , "containerName" ),
115+ dataAddress ().keyName ("keyName" ).property (CONTAINER_NAME , "containerName" ),
116+ dataAddress ().keyName ("keyName" ).property (ACCOUNT_NAME , "accountName" )
117+ ).map (Arguments ::arguments );
118+ }
119+
120+ private DataAddress .Builder <?, ?> dataAddress () {
121+ return DataAddress .Builder .newInstance ().type (AzureBlobStoreSchema .TYPE );
122+ }
123123 }
124+
125+ private static class CanHandle implements ArgumentsProvider {
126+
127+ @ Override
128+ public Stream <? extends Arguments > provideArguments (ExtensionContext extensionContext ) {
129+ return Stream .of (
130+ arguments ("Invalid source and valid destination" , "Invalid source" , AzureBlobStoreSchema .TYPE , false ),
131+ arguments ("Valid source and invalid destination" , AzureBlobStoreSchema .TYPE , "Invalid destination" , false ),
132+ arguments ("Invalid source and destination" , "Invalid source" , "Invalid destination" , false ),
133+ arguments ("Valid source and destination" , AzureBlobStoreSchema .TYPE , AzureBlobStoreSchema .TYPE , true )
134+ );
135+ }
136+ }
137+
124138}
0 commit comments