2020import org .apache .flink .table .types .DataType ;
2121import org .apache .flink .types .Row ;
2222import org .junit .jupiter .api .Test ;
23+ import org .junit .jupiter .params .ParameterizedTest ;
24+ import org .junit .jupiter .params .provider .ValueSource ;
2325import static org .assertj .core .api .Assertions .assertThat ;
2426import static org .junit .jupiter .api .Assertions .assertThrows ;
2527
3032import static com .getindata .connectors .http .internal .table .lookup .querycreators .QueryCreatorUtils .getTableContext ;
3133
3234class GenericJsonAndUrlQueryCreatorTest {
33- enum Operation {
34- Get ("GET" ),
35- Put ("PUT" ),
36- Post ("POST" )
37- ;
38- public final String label ;
39- Operation () {
40- this ("GET" );
41- }
4235
43- Operation (String label ) {
44- this .label = label ;
45- }
46- }
47- @ Test
48- public void createLookupQueryTestStrAllOps () {
49- for (Operation op : Operation .values ()) {
50- String operation = op .label ;
51- String key = "key1" ;
52- String value = "val1" ;
53- // for GET this is the minimum config
54- List <String > query_params = List .of (key );
55- // Path param ArgPath required a stringified json object. As we have PersonBean
56- // we can use that.
57- Map <String , String > url_params = Map .of (key , key );
58- LookupRow lookupRow = new LookupRow ()
59- .addLookupEntry (
60- new RowDataSingleValueLookupSchemaEntry (
61- key ,
62- RowData .createFieldGetter (
63- DataTypes .STRING ().getLogicalType (), 0 )
64- ));
65- DataType dataType = row (List .of (
66- DataTypes .FIELD (key , DataTypes .STRING ())
67- ));
68- lookupRow .setLookupPhysicalRowDataType (dataType );
69- ResolvedSchema resolvedSchema = ResolvedSchema .of (Column .physical (key ,
70- DataTypes .STRING ()));
71- Configuration config = new Configuration ();
72- config .set (GenericJsonAndUrlQueryCreatorFactory .REQUEST_QUERY_PARAM_FIELDS ,
36+ @ ParameterizedTest
37+ @ ValueSource (strings = {"GET" , "PUT" , "POST" })
38+ public void createLookupQueryTestStrAllOps (String operation ) {
39+ String key = "key1" ;
40+ String value = "val1" ;
41+ // for GET this is the minimum config
42+ List <String > query_params = List .of (key );
43+ // Path param ArgPath required a stringified json object. As we have PersonBean
44+ // we can use that.
45+ Map <String , String > url_params = Map .of (key , key );
46+ LookupRow lookupRow = new LookupRow ()
47+ .addLookupEntry (
48+ new RowDataSingleValueLookupSchemaEntry (
49+ key ,
50+ RowData .createFieldGetter (
51+ DataTypes .STRING ().getLogicalType (), 0 )
52+ ));
53+ DataType dataType = row (List .of (
54+ DataTypes .FIELD (key , DataTypes .STRING ())
55+ ));
56+ lookupRow .setLookupPhysicalRowDataType (dataType );
57+ ResolvedSchema resolvedSchema = ResolvedSchema .of (Column .physical (key ,
58+ DataTypes .STRING ()));
59+ Configuration config = new Configuration ();
60+ config .set (GenericJsonAndUrlQueryCreatorFactory .REQUEST_QUERY_PARAM_FIELDS ,
61+ query_params );
62+ if (!operation .equals ("GET" )) {
63+ // add the body content for PUT and POST
64+ config .set (GenericJsonAndUrlQueryCreatorFactory .REQUEST_BODY_FIELDS ,
7365 query_params );
74- if (!op .equals ("GET" )) {
75- // add the body content for PUT and POST
76- config .set (GenericJsonAndUrlQueryCreatorFactory .REQUEST_BODY_FIELDS ,
77- query_params );
78- }
79- config .set (GenericJsonAndUrlQueryCreatorFactory .REQUEST_URL_MAP , url_params );
80- config .setString (LOOKUP_METHOD , operation );
81- // GIVEN
82-
83- GenericJsonAndUrlQueryCreator universalJsonQueryCreator =
84- (GenericJsonAndUrlQueryCreator ) new GenericJsonAndUrlQueryCreatorFactory ()
85- .createLookupQueryCreator (
86- config ,
87- lookupRow ,
88- getTableContext (config ,
89- resolvedSchema )
90- );
91- var row = new GenericRowData (1 );
92- row .setField (0 , StringData .fromString (value ));
93- var createdQuery = universalJsonQueryCreator .createLookupQuery (row );
94- // THEN
95- if (operation .equals ("GET" )) {
96- assertThat (createdQuery .getBodyBasedUrlQueryParameters ()).isEmpty ();
97- assertThat (createdQuery .getLookupQuery ()).isEqualTo (key + "=" + value );
98- } else {
99- assertThat (createdQuery
100- .getBodyBasedUrlQueryParameters ())
101- .isEqualTo (key + "=" + value );
102- assertThat (createdQuery .getLookupQuery ()).isEqualTo (
103- "{\" "
104- + key
105- + "\" :\" " + value
106- + "\" }" );
107- }
108- assertThat (createdQuery .getPathBasedUrlParameters ().size () == 1 ).isTrue ();
109- assertThat (createdQuery .getPathBasedUrlParameters ().get (key )).isEqualTo (value );
11066 }
67+ config .set (GenericJsonAndUrlQueryCreatorFactory .REQUEST_URL_MAP , url_params );
68+ config .setString (LOOKUP_METHOD , operation );
69+ GenericJsonAndUrlQueryCreator universalJsonQueryCreator =
70+ (GenericJsonAndUrlQueryCreator ) new GenericJsonAndUrlQueryCreatorFactory ()
71+ .createLookupQueryCreator (
72+ config ,
73+ lookupRow ,
74+ getTableContext (config ,
75+ resolvedSchema )
76+ );
77+ var row = new GenericRowData (1 );
78+ row .setField (0 , StringData .fromString (value ));
79+ var createdQuery = universalJsonQueryCreator .createLookupQuery (row );
80+ // THEN
81+ if (operation .equals ("GET" )) {
82+ assertThat (createdQuery .getBodyBasedUrlQueryParameters ()).isEmpty ();
83+ assertThat (createdQuery .getLookupQuery ()).isEqualTo (key + "=" + value );
84+ } else {
85+ assertThat (createdQuery
86+ .getBodyBasedUrlQueryParameters ())
87+ .isEqualTo (key + "=" + value );
88+ assertThat (createdQuery .getLookupQuery ()).isEqualTo (
89+ "{\" "
90+ + key
91+ + "\" :\" " + value
92+ + "\" }" );
93+ }
94+ assertThat (createdQuery .getPathBasedUrlParameters ().size () == 1 ).isTrue ();
95+ assertThat (createdQuery .getPathBasedUrlParameters ().get (key )).isEqualTo (value );
11196 }
11297 @ Test
11398 public void createLookupQueryTest () {
@@ -167,7 +152,6 @@ public void failserializationOpenTest() {
167152 List <String > paths_config =List .of ("key1" );
168153 String operation = "GET" ;
169154 String key = "key1" ;
170- String value = "val1" ;
171155
172156 LookupRow lookupRow = new LookupRow ()
173157 .addLookupEntry (
@@ -183,7 +167,6 @@ public void failserializationOpenTest() {
183167 Configuration config = new Configuration ();
184168 config .set (GenericJsonAndUrlQueryCreatorFactory .REQUEST_QUERY_PARAM_FIELDS , paths_config );
185169 config .setString (LOOKUP_METHOD , operation );
186- // GIVEN
187170
188171 lookupRow .setLookupPhysicalRowDataType (dataType );
189172
@@ -213,15 +196,19 @@ public byte[] serialize(RowData element) {
213196 });
214197 }
215198 @ Test void convertToQueryParametersUnsupportedEncodingTest () {
199+ // GIVEN
216200 ObjectMapper mapper = ObjectMapperAdapter .instance ();
217201 PersonBean person = new PersonBean ("aaa" , "bbb" );
202+ // WHEN
218203 JsonNode personNode = mapper .valueToTree (person );
204+ // THEN
219205 assertThrows (RuntimeException .class , () -> {
220206 GenericJsonAndUrlQueryCreator .convertToQueryParameters (
221207 (ObjectNode ) personNode , "bad encoding" );
222208 });
223209 }
224210 @ Test void rowDataToRowTest () {
211+ // GIVEN
225212 // String
226213 String KEY1 = "key1" ;
227214 String KEY2 = "key2" ;
@@ -238,7 +225,9 @@ public byte[] serialize(RowData element) {
238225 DataTypes .FIELD (KEY2 , DataTypes .DATE ()),
239226 DataTypes .FIELD (KEY3 , DataTypes .TIMESTAMP_LTZ ())
240227 ));
228+ // WHEN
241229 Row row = GenericJsonAndUrlQueryCreator .rowDataToRow (rowData , dataType );
230+ // THEN
242231 assertThat (row .getField (KEY1 ).equals (VALUE ));
243232 assertThat (row .getField (KEY2 ).equals ("1970-01-01T00:00:00.010" ));
244233 assertThat (row .getField (KEY3 ).equals ("1970-01-01T00:00:00.010Z" ));
0 commit comments