anchor.diff:  -define(USER_1_TOKEN_HEADER, {"X-Auth-Token", "1"}).
   -define(CDMI_VERSION_HEADER, {"X-CDMI-Specification-Version", "1.1.1"}).
   
  +-define(FILE_PERMISSIONS, 8#664).
  +
  +-define(OFFSET, 0).
  +
  +
   %%%===================================================================
   %%% Test functions
   %%%===================================================================
  +
  +% Tests cdmi object GET request. Request can be done without cdmi header (in that case
  +% file conent is returned as response body), or with cdmi header (the response
  +% contains json string of type: application/cdmi-object, and we can specify what
  +% parameters we need by listing then as ';' separated list after '?' in URL ),
  +%  )
  +get_file_test(Config) ->
  +    FileName = "/toRead.txt",
  +    FileContent = <<"Some content...">>,
  +    Size = string:len(binary_to_list(FileContent)),
  +    [Worker | _] = ?config(op_worker_nodes, Config),
  +
  +    create_file(Config, FileName),
  +    ?assert(object_exists(Config, FileName)),
  +    write_to_file(Config, FileName,FileContent),
  +    ?assertEqual(FileContent,get_file_content(Config, FileName, Size)),
  +
  +
  +    %%------- noncdmi read --------
  +    {Code4, Headers4, Response4} = do_request(Worker, FileName, get, [], []),
  +    ?assertEqual("200",Code4),
  +
  +    ?assertEqual("application/octet-stream", proplists:get_value("content-type",Headers4)),
  +    ?assertEqual(binary_to_list(FileContent), Response4),
  +    %%------------------------------
  +
  +    %% selective value read non-cdmi
  +    RequestHeaders7 = [{"Range","1-3,5-5,-3"}],
  +    {Code7, _Headers7, Response7} = do_request(Worker, FileName, get, RequestHeaders7, []),
  +    ?assertEqual("206",Code7),
  +    ?assertEqual("omec...", Response7), % 1-3,5-5,12-14  from FileContent = <<"Some content...">>
  +    %%------------------------------
  +
  +    %% selective value read non-cdmi error
  +    RequestHeaders8 = [{"Range","1-3,6-4,-3"}],
  +    {Code8, _Headers8, _Response8} = do_request(Worker, FileName, get, RequestHeaders8, []),
  +    ?assertEqual("400",Code8).
  +    %%------------------------------
   
   choose_adequate_handler(Config) ->
       % given
  
positive.code: -export([all/0, init_per_suite/1, end_per_suite/1, init_per_testcase/2,
      end_per_testcase/2]).
  
  -export([choose_adequate_handler/1, use_supported_cdmi_version/1,
      use_unsupported_cdmi_version/1, create_dir_test/1]).
  
  -performance({test_cases, []}).
  all() -> [choose_adequate_handler, use_supported_cdmi_version,
      use_unsupported_cdmi_version, create_dir_test].
  
  -define(MACAROON, "macaroon").
  
negative.code:             true;
          {error, ?ENOENT} ->
              false
      end.
  
  create_file(Config, Path) ->
      [Worker | _] = ?config(op_worker_nodes, Config),
      SessionId = ?config({session_id, 1}, Config),
  
      case lfm_proxy:create(Worker, SessionId, {path, utils:ensure_unicode_binary(Path)}, ?FILE_PERMISSIONS) of
          {ok, UUID} -> UUID;
          {error, Code} -> {error, Code}
      end.
  
  %% FileKey type is file_id_or_path() :: {uuid, file_uuid()} | { path, file_path()}
  open_file(Config, FileKey, OpenMode) ->
      [Worker | _] = ?config(op_worker_nodes, Config),
      SessionId = ?config({session_id, 1}, Config),
  
      case lfm_proxy:open(Worker, SessionId, FileKey, OpenMode) of
          {error, Error} -> {error, Error};
          FileHandle -> FileHandle
      end.
  
  write_to_file(Config, Path, Data) ->
      %%TODO maybe Offset sholud be function argument ?
      [Worker | _] = ?config(op_worker_nodes, Config),
  
      FileHandle = open_file(Config, {path, Path}, write),
      case lfm_proxy:write(Worker, FileHandle, ?OFFSET, Data) of
          {error, Error} -> {error, Error};
          Result -> Result
      end.
  
  get_file_content(Config, Path, Size) ->
      %%TODO maybe Offset sholud be function argument ?
      [Worker | _] = ?config(op_worker_nodes, Config),
  
      FileHandle = open_file(Config, {path, Path}, write),
      case lfm_proxy:read(Worker, FileHandle, ?OFFSET, Size) of
          {error, Error} -> {error, Error};
          Result -> Result
      end.