@Test(groups = "unit")
public void readPrimaryAsync() {

    TransportClient transportClient = Mockito.mock(TransportClient.class);
    AddressSelector addressSelector = Mockito.mock(AddressSelector.class);
    ISessionContainer sessionContainer = Mockito.mock(ISessionContainer.class);
    Uri primaryURI = Uri.create("primaryLoc");
    RxDocumentServiceRequest request = RxDocumentServiceRequest.createFromName(
            OperationType.Read, "/dbs/db/colls/col/docs/docId", ResourceType.Document);
    request.requestContext = Mockito.mock(DocumentServiceRequestContext.class);
    request.requestContext.timeoutHelper = Mockito.mock(TimeoutHelper.class);
    request.requestContext.resolvedPartitionKeyRange = partitionKeyRangeWithId("12");
    request.requestContext.requestChargeTracker = new RequestChargeTracker();
    Mockito.doReturn(Single.just(primaryURI)).when(addressSelector).resolvePrimaryUriAsync(
          Mockito.eq(request) , Mockito.eq(false));
    StoreResponse storeResponse = Mockito.mock(StoreResponse.class);
    Mockito.doReturn(Single.just(storeResponse)).when(transportClient).invokeResourceOperationAsync(Mockito.eq(primaryURI), Mockito.eq(request));
    StoreReader storeReader = new StoreReader(transportClient, addressSelector, sessionContainer);
    Single<StoreResult> readResult = storeReader.readPrimaryAsync(request, true, true);
    StoreResultValidator validator = StoreResultValidator.create()
            .withStoreResponse(StoreResponseValidator.create().isSameAs(storeResponse).build())
            .build();
    validateSuccess(readResult, validator);
}