anchor.diff:  
   %% @private
   -spec verify_dataset(
  -    od_user:id(), od_provider:id(), od_space:id(), dataset:id(), dataset:state(), dataset:id(),
  -    [binary()], time:seconds(), file_id:file_guid(), file_meta:type(), file_meta:path()
  +    od_user:id(), [oct_background:entity_selector()], od_space:id(), dataset:id(), dataset:state(),
  +    dataset:id(), [binary()], time:seconds(), file_id:file_guid(), file_meta:type(), file_meta:path()
   ) ->
       ok.
   verify_dataset(
  -    UserId, Provider, SpaceId, DatasetId, State, ParentId, ProtectionFlagsJson,
  +    UserId, Providers, SpaceId, DatasetId, State, ParentId, ProtectionFlagsJson,
       CreationTime, RootFileGuid, RootFileType, RootFilePath
   ) ->
  -    Node = ?RAND_OP_NODE(Provider),
  -    UserSessId = oct_background:get_user_session_id(UserId, Provider),
  -    ListOpts = #{offset => 0, limit => 1000},
  -
  -    GetDatasetsFun = case ParentId of
  -        undefined -> fun() -> list_top_dataset_ids(Node, UserSessId, SpaceId, State, ListOpts) end;
  -        _ -> fun() -> list_child_dataset_ids(Node, UserSessId, ParentId, ListOpts) end
  -    end,
  -
  -    ?assertEqual(true, lists:member(DatasetId, GetDatasetsFun()), ?ATTEMPTS),
  -
  -    ExpDatasetInfo = #dataset_info{
  -        id = DatasetId,
  -        state = State,
  -        guid = RootFileGuid,
  -        path = RootFilePath,
  -        type = RootFileType,
  -        creation_time = CreationTime,
  -        protection_flags = file_meta:protection_flags_from_json(ProtectionFlagsJson),
  -        parent = ParentId
  -    },
  -    ?assertEqual({ok, ExpDatasetInfo}, lfm_proxy:get_dataset_info(Node, UserSessId, DatasetId)),
  -    ok.
  +    lists:foreach(fun(Provider) ->
  +        Node = ?RAND_OP_NODE(Provider),
  +        UserSessId = oct_background:get_user_session_id(UserId, Provider),
  +        ListOpts = #{offset => 0, limit => 1000},
  +
  +        GetDatasetsFun = case ParentId of
  +            undefined -> fun() -> list_top_dataset_ids(Node, UserSessId, SpaceId, State, ListOpts) end;
  +            _ -> fun() -> list_child_dataset_ids(Node, UserSessId, ParentId, ListOpts) end
  +        end,
  +
  +        ?assertEqual(true, lists:member(DatasetId, GetDatasetsFun()), ?ATTEMPTS),
  +
  +        ExpDatasetInfo = #dataset_info{
  +            id = DatasetId,
  +            state = State,
  +            guid = RootFileGuid,
  +            path = RootFilePath,
  +            type = RootFileType,
  +            creation_time = CreationTime,
  +            protection_flags = file_meta:protection_flags_from_json(ProtectionFlagsJson),
  +            parent = ParentId
  +        },
  +        ?assertEqual({ok, ExpDatasetInfo}, lfm_proxy:get_dataset_info(Node, UserSessId, DatasetId))
  +    end, Providers).
   
   
   %% @private
  
positive.code: -export([
      establish_dataset_test/1,
      get_dataset_test/1,
      delete_dataset_test/1
  ]).
  
  all() -> [
      establish_dataset_test,
      get_dataset_test,
      delete_dataset_test
  ].
  
  
negative.code:             CreationTime = get_global_time(TestNode),
              ProtectionFlags = maps:get(<<"protectionFlags">>, Data, []),
  
              verify_dataset(
                  UserId, Providers, SpaceId, DatasetId, ?ATTACHED_DATASET, SpaceDirDatasetId,
                  ProtectionFlags, CreationTime, RootFileGuid, RootFileType, RootFilePath
              );
          (expected_failure, _) ->
              ok
      end.
  