anchor.diff:  
   
   %% @private
  +-spec get_metadata_test_base(
  +    MetadataType :: binary(),  %% <<"json">> | <<"rdf">> | <<"xattrs">>
  +    FileType :: binary(),      %% <<"dir">> | <<"file">>
  +    FilePath :: file_meta:path(),
  +    FileGuid :: file_id:file_guid(),
  +    ShareId :: undefined | od_share:id(),
  +    ValidateRestCallResultFun :: fun((api_test_ctx(), {ok, RespCode :: pos_integer(), RespBody :: term()}) -> ok),
  +    ValidateGsCallResultFun :: fun((api_test_ctx(), Result :: term()) -> ok),
  +    Providers :: [node()],
  +    client_spec(),
  +    data_spec(),
  +    QsParameters :: [binary()],
  +    Config :: proplists:proplist()
  +) ->
  +    ok.
   get_metadata_test_base(
       MetadataType, FileType, FilePath, FileGuid, _ShareId = undefined,
       ValidateRestCallResultFun, ValidateGsCallResultFun,
  
positive.code:     get_shared_dir_json_metadata_with_json_set_test/1,
      get_shared_file_json_metadata_without_json_set_test/1,
      get_shared_dir_json_metadata_without_json_set_test/1,
  
  
      get_json_metadata_test/1,
      get_xattr_metadata_test/1,
      set_rdf_metadata_test/1,
      set_json_metadata_test/1
  
negative.code: %%%===================================================================
  
  
  %% @private
  create_file(FileType, Node, SessId, Path) ->
      create_file(FileType, Node, SessId, Path, 8#777).
  
  
  %% @private
  create_file(<<"file">>, Node, SessId, Path, Mode) ->
      lfm_proxy:create(Node, SessId, Path, Mode);
  create_file(<<"dir">>, Node, SessId, Path, Mode) ->
      lfm_proxy:mkdir(Node, SessId, Path, Mode).
  
  
  %% @private
  encode_metadata(Metadata) when is_binary(Metadata) ->
      Metadata;
  encode_metadata(Metadata) when is_map(Metadata) ->
      json_utils:encode(Metadata).
  
  
  %% @private
  maybe_decode_json(MaybeEncodedJson) ->
      try
          json_utils:decode(MaybeEncodedJson)
  