@@ -86,7 +86,9 @@ function parse_max_items(input_max_items) {
8686 * @param {object } params
8787 */
8888function validate_params ( action , params ) {
89- if ( action . includes ( 'user' ) ) {
89+ if ( action . includes ( 'policy' ) || action . includes ( 'policies' ) ) {
90+ validate_policy_params ( action , params ) ;
91+ } else if ( action . includes ( 'user' ) ) {
9092 validate_user_params ( action , params ) ;
9193 } else if ( action . includes ( 'access_key' ) ) {
9294 validate_access_keys_params ( action , params ) ;
@@ -149,6 +151,30 @@ function validate_access_keys_params(action, params) {
149151 }
150152}
151153
154+ /**
155+ * validate_policy_params will call the aquivalent function for each action in user policy API
156+ * @param {string } action
157+ * @param {object } params
158+ */
159+ function validate_policy_params ( action , params ) {
160+ switch ( action ) {
161+ case iam_constants . IAM_ACTIONS . PUT_USER_POLICY :
162+ validate_put_user_policy ( params ) ;
163+ break ;
164+ case iam_constants . IAM_ACTIONS . GET_USER_POLICY :
165+ validate_get_user_policy ( params ) ;
166+ break ;
167+ case iam_constants . IAM_ACTIONS . DELETE_USER_POLICY :
168+ validate_delete_user_policy ( params ) ;
169+ break ;
170+ case iam_constants . IAM_ACTIONS . LIST_USER_POLICIES :
171+ validate_list_user_policies ( params ) ;
172+ break ;
173+ default :
174+ throw new RpcError ( 'INTERNAL_ERROR' , `${ action } is not supported` ) ;
175+ }
176+ }
177+
152178/**
153179 * check_required_username checks if the username was set
154180 * @param {object } params
@@ -173,6 +199,22 @@ function check_required_status(params) {
173199 check_required_key ( params . status , 'status' ) ;
174200}
175201
202+ /**
203+ * check_required_policy_name checks if the policy name was set
204+ * @param {object } params
205+ */
206+ function check_required_policy_name ( params ) {
207+ check_required_key ( params . policy_name , 'policy-name' ) ;
208+ }
209+
210+ /**
211+ * check_required_policy_document checks if the policy document was set
212+ * @param {object } params
213+ */
214+ function check_required_policy_document ( params ) {
215+ check_required_key ( params . policy_document , 'policy-document' ) ;
216+ }
217+
176218/**
177219 * check_required_key checks if a required key was set
178220 * @param {any } value
@@ -324,6 +366,68 @@ function validate_list_access_keys(params) {
324366 }
325367}
326368
369+ /**
370+ * validate_put_user_policy checks the params for put_user_policy action
371+ * @param {object } params
372+ */
373+ function validate_put_user_policy ( params ) {
374+ try {
375+ check_required_username ( params ) ;
376+ validation_utils . validate_username ( params . username , iam_constants . IAM_PARAMETER_NAME . USERNAME ) ;
377+ check_required_policy_name ( params ) ;
378+ validation_utils . validate_policy_name ( params . policy_name , iam_constants . IAM_PARAMETER_NAME . POLICY_NAME ) ;
379+ check_required_policy_document ( params ) ;
380+ validation_utils . validate_policy_document ( params . policy_document , iam_constants . IAM_PARAMETER_NAME . POLICY_DOCUMENT ) ;
381+ } catch ( err ) {
382+ translate_rpc_error ( err ) ;
383+ }
384+ }
385+
386+ /**
387+ * validate_get_user_policy checks the params for get_user_policy action
388+ * @param {object } params
389+ */
390+ function validate_get_user_policy ( params ) {
391+ try {
392+ check_required_username ( params ) ;
393+ validation_utils . validate_username ( params . username , iam_constants . IAM_PARAMETER_NAME . USERNAME ) ;
394+ check_required_policy_name ( params ) ;
395+ validation_utils . validate_policy_name ( params . policy_name , iam_constants . IAM_PARAMETER_NAME . POLICY_NAME ) ;
396+ } catch ( err ) {
397+ translate_rpc_error ( err ) ;
398+ }
399+ }
400+
401+ /**
402+ * validate_delete_user_policy checks the params for delete_user_policy action
403+ * @param {object } params
404+ */
405+ function validate_delete_user_policy ( params ) {
406+ try {
407+ check_required_username ( params ) ;
408+ validation_utils . validate_username ( params . username , iam_constants . IAM_PARAMETER_NAME . USERNAME ) ;
409+ check_required_policy_name ( params ) ;
410+ validation_utils . validate_policy_name ( params . policy_name , iam_constants . IAM_PARAMETER_NAME . POLICY_NAME ) ;
411+ } catch ( err ) {
412+ translate_rpc_error ( err ) ;
413+ }
414+ }
415+
416+ /**
417+ * validate_list_user_policies checks the params for list_user_policies action
418+ * @param {object } params
419+ */
420+ function validate_list_user_policies ( params ) {
421+ try {
422+ validate_marker ( params . marker ) ;
423+ validate_max_items ( params . max_items ) ;
424+ check_required_username ( params ) ;
425+ validation_utils . validate_username ( params . username , iam_constants . IAM_PARAMETER_NAME . USERNAME ) ;
426+ } catch ( err ) {
427+ translate_rpc_error ( err ) ;
428+ }
429+ }
430+
327431/**
328432 * validate_iam_path will validate:
329433 * 1. type
0 commit comments