File tree Expand file tree Collapse file tree 3 files changed +85
-0
lines changed
__tests__/unit/core-api/plugins
packages/core-api/src/plugins Expand file tree Collapse file tree 3 files changed +85
-0
lines changed Original file line number Diff line number Diff line change
1
+ import { commaArrayQuery } from "@packages/core-api/src/plugins/comma-array-query" ;
2
+
3
+ describe ( "commaArrayQuery.register" , ( ) => {
4
+ it ( "should register onRequest extension" , ( ) => {
5
+ const server = {
6
+ ext : jest . fn ( ) ,
7
+ } ;
8
+
9
+ commaArrayQuery . register ( server ) ;
10
+
11
+ expect ( server . ext ) . toBeCalledWith ( "onRequest" , commaArrayQuery . onRequest ) ;
12
+ } ) ;
13
+ } ) ;
14
+
15
+ describe ( "commaArrayQuery.onRequest" , ( ) => {
16
+ it ( "should replace comma separated query parameter by array" , ( ) => {
17
+ const addresses = [
18
+ "AXGc1bgU3v3rHmx9WVkUUHLA6gbzh8La7V" ,
19
+ "AQvWbCAXbBnY9fHpgNrcLZ99hYfDifH4Hs" ,
20
+ "ATKegneyu9Fkoj5FxiJ3biup8xv8zM34M3" ,
21
+ ] ;
22
+ const request = {
23
+ query : {
24
+ address : addresses . join ( "," ) ,
25
+ } ,
26
+ } ;
27
+
28
+ const h = {
29
+ continue : Symbol ,
30
+ } ;
31
+
32
+ const ret = commaArrayQuery . onRequest ( request , h ) ;
33
+
34
+ expect ( request . query ) . toEqual ( {
35
+ address : addresses ,
36
+ } ) ;
37
+
38
+ expect ( ret ) . toBe ( h . continue ) ;
39
+ } ) ;
40
+
41
+ it ( "should leave as-is query parameter without comma" , ( ) => {
42
+ const address = "AXGc1bgU3v3rHmx9WVkUUHLA6gbzh8La7V" ;
43
+ const request = {
44
+ query : {
45
+ address,
46
+ } ,
47
+ } ;
48
+
49
+ const h = {
50
+ continue : Symbol ,
51
+ } ;
52
+
53
+ const ret = commaArrayQuery . onRequest ( request , h ) ;
54
+
55
+ expect ( request . query ) . toEqual ( {
56
+ address,
57
+ } ) ;
58
+
59
+ expect ( ret ) . toBe ( h . continue ) ;
60
+ } ) ;
61
+ } ) ;
Original file line number Diff line number Diff line change
1
+ import Hapi from "@hapi/hapi" ;
2
+
3
+ export const commaArrayQuery = {
4
+ name : "comma-array-query" ,
5
+ version : "1.0.0" ,
6
+
7
+ register ( server : Hapi . Server ) : void {
8
+ server . ext ( "onRequest" , this . onRequest ) ;
9
+ } ,
10
+
11
+ onRequest ( request : Hapi . Request , h : Hapi . ResponseToolkit ) : Hapi . Lifecycle . ReturnValue {
12
+ const query = { } ;
13
+ const separator = "," ;
14
+
15
+ for ( const [ key , value ] of Object . entries ( request . query as { [ key : string ] : string } ) ) {
16
+ query [ key ] = value . indexOf ( separator ) > - 1 ? value . split ( separator ) : value ;
17
+ }
18
+
19
+ request . query = query ;
20
+ return h . continue ;
21
+ } ,
22
+ } ;
Original file line number Diff line number Diff line change 1
1
import { dotSeparatedQuery } from "./dot-separated-query" ;
2
+ import { commaArrayQuery } from "./comma-array-query" ;
2
3
import { hapiAjv } from "./hapi-ajv" ;
3
4
import { whitelist } from "./whitelist" ;
4
5
@@ -10,6 +11,7 @@ export const preparePlugins = (config) => [
10
11
} ,
11
12
} ,
12
13
{ plugin : hapiAjv } ,
14
+ { plugin : commaArrayQuery } ,
13
15
{ plugin : dotSeparatedQuery } ,
14
16
{
15
17
plugin : require ( "./cache" ) ,
You can’t perform that action at this time.
0 commit comments