@@ -71,3 +71,65 @@ describe('-32600 Invalid Request error shape', () => {
7171 }
7272 } ) ;
7373} ) ;
74+
75+ describe ( '-32602 Invalid Params validation' , ( ) => {
76+ it ( 'accepts positional array params' , ( ) => {
77+ const result = parseRpcRequest ( JSON . stringify ( {
78+ jsonrpc : '2.0' ,
79+ method : 'api.echo' ,
80+ params : [ 'hello' , 42 ] ,
81+ id : 1 ,
82+ } ) ) ;
83+
84+ assert . strictEqual ( result . ok , true ) ;
85+ if ( result . ok ) {
86+ assert . deepStrictEqual ( result . request . args , [ 'hello' , 42 ] ) ;
87+ }
88+ } ) ;
89+
90+ it ( 'accepts named object params using their value order' , ( ) => {
91+ const result = parseRpcRequest ( JSON . stringify ( {
92+ jsonrpc : '2.0' ,
93+ method : 'api.echo' ,
94+ params : { message : 'hello' , count : 42 } ,
95+ id : 2 ,
96+ } ) ) ;
97+
98+ assert . strictEqual ( result . ok , true ) ;
99+ if ( result . ok ) {
100+ assert . deepStrictEqual ( result . request . args , [ 'hello' , 42 ] ) ;
101+ }
102+ } ) ;
103+
104+ it ( 'treats omitted params as no arguments' , ( ) => {
105+ const result = parseRpcRequest ( JSON . stringify ( {
106+ jsonrpc : '2.0' ,
107+ method : 'api.ping' ,
108+ id : 3 ,
109+ } ) ) ;
110+
111+ assert . strictEqual ( result . ok , true ) ;
112+ if ( result . ok ) {
113+ assert . deepStrictEqual ( result . request . args , [ ] ) ;
114+ }
115+ } ) ;
116+
117+ for ( const params of [ 'abc' , 42 , true , null ] ) {
118+ it ( `rejects ${ JSON . stringify ( params ) } params` , ( ) => {
119+ const result = parseRpcRequest ( JSON . stringify ( {
120+ jsonrpc : '2.0' ,
121+ method : 'api.echo' ,
122+ params,
123+ id : 'request-1' ,
124+ } ) ) ;
125+
126+ assert . strictEqual ( result . ok , false ) ;
127+ if ( ! result . ok ) {
128+ const response = JSON . parse ( result . response ) ;
129+ assert . strictEqual ( response . error . code , RpcErrorCode . InvalidParams ) ;
130+ assert . strictEqual ( response . error . data . name , 'InvalidParams' ) ;
131+ assert . strictEqual ( response . id , 'request-1' ) ;
132+ }
133+ } ) ;
134+ }
135+ } ) ;
0 commit comments