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 11import { dotSeparatedQuery } from "./dot-separated-query" ;
2+ import { commaArrayQuery } from "./comma-array-query" ;
23import { hapiAjv } from "./hapi-ajv" ;
34import { whitelist } from "./whitelist" ;
45
@@ -10,6 +11,7 @@ export const preparePlugins = (config) => [
1011 } ,
1112 } ,
1213 { plugin : hapiAjv } ,
14+ { plugin : commaArrayQuery } ,
1315 { plugin : dotSeparatedQuery } ,
1416 {
1517 plugin : require ( "./cache" ) ,
You can’t perform that action at this time.
0 commit comments