anchor.diff:      get_storages_ids/1, add_s3_storage/1, get_s3_storage/1, delete_s3_storage/1
   ]).
   
  --define(S3_Storage_Spec,#{
  -    <<"s3Storage-1">> => #{
  +-define(S3_STORAGE_NAME, <<"s3Storage-1">>).
  +-define(S3_STORAGE_SPEC,#{
  +    ?S3_STORAGE_NAME => #{
           <<"type">> => <<"s3">>,
           <<"bucketName">> => <<"bucket2.iam.example.com">>,
           <<"hostname">> => <<"s3.amazonaws.com:80/">>,
  
positive.code:                 headers = #{<<"content-type">> => <<"application/json">>},
                  body = json_utils:encode(RequestBody)}
              end,
              validate_result_fun = fun(_, {ok, RespCode,_,_}) ->
                  {ok, StorageIdsAfterAdd} = rpc:call(hd(OpWorkerNodes), provider_logic, get_storage_ids, []),
                  [NewStorageID|_] = lists:subtract(StorageIdsAfterAdd, StorageIdsBeforeAdd),
  
                  {ok, StorageDetails} = rpc:call(hd(OpWorkerNodes), storage, describe, [NewStorageID]),
                  ?assertEqual({204, true}, {RespCode,assert_add_request_match_resp(RequestBody,StorageDetails)})
              end
          }
      ])).
  
  
  %% @private
  assert_add_request_match_resp(RequestBody, StorageDetails) ->
      [Name|_] = maps:keys(RequestBody),
      RequestMap = maps:get(Name, RequestBody),
      F = fun(K,_,Acc) -> (maps:get(K,StorageDetails)==maps:get(K,RequestMap)) and Acc
      end,
      maps:fold(F,true, RequestMap) and (maps:get(<<"name">>,StorageDetails)==Name).
  
  
  get_s3_storage(Config) ->
  
negative.code:             client_spec = #client_spec{
                  correct = [
                      root
                      % todo: VFS-6717 uncomment when test cases will be independent from each other
                      %{member, [?CLUSTER_UPDATE]}
                  ],
                  unauthorized = [
                      guest,
  