public async Task GivenACreateRequest_WithWithNoConsistencySpecifiedAndNoRequestOptions_ThenNoRequestOptionsAreCreated()
        {
            _innerClient.CreateDocumentAsync("coll", (1, 2)).Returns(CosmosDbMockingHelper.CreateResourceResponse(new Document(), HttpStatusCode.OK, new NameValueCollection()));
            await _fhirClient.CreateDocumentAsync("coll", (1, 2));

            await _innerClient.Received().CreateDocumentAsync("coll", (1, 2));

            await _cosmosResponseProcessor.Received(1).ProcessResponse(Arg.Any <ResourceResponseBase>());
        }
Пример #2
0
        private static DocumentClientException CreateDocumentClientException(string requestCharge, string exceptionMessage, HttpStatusCode httpStatusCode)
        {
            var nameValueCollection = new NameValueCollection();

            nameValueCollection.Add("x-ms-request-charge", requestCharge);
            DocumentClientException documentClientException = CosmosDbMockingHelper.CreateDocumentClientException(exceptionMessage, nameValueCollection, httpStatusCode);

            return(documentClientException);
        }
Пример #3
0
        public async Task GivenAFeedRequest_WithWithNoConsistencySpecifiedAndNoRequestOptions_ThenNoRequestOptionsAreCreated()
        {
            _innerClient.ReadDatabaseFeedAsync()
            .ReturnsForAnyArgs(CosmosDbMockingHelper.CreateFeedResponse(Enumerable.Empty <Database>(), new NameValueCollection()));
            await _fhirClient.ReadDatabaseFeedAsync();

            await _innerClient.Received().ReadDatabaseFeedAsync();

            await _cosmosResponseProcessor.Received(1).ProcessResponse(Arg.Any <FeedResponse <Database> >());
        }
        public async Task GivenAFeedRequests_WhenExecutedAndFails_ThenTheResponseHeadersStillContainTheRequestCharge()
        {
            _innerClient
            .ReadDatabaseFeedAsync(Arg.Any <FeedOptions>())
            .Throws(CosmosDbMockingHelper.CreateDocumentClientException("error", new NameValueCollection {
                { CosmosDbHeaders.RequestCharge, "10" }
            }, (HttpStatusCode?)429));

            await Assert.ThrowsAsync <DocumentClientException>(() => _fhirClient.ReadDatabaseFeedAsync());

            await _cosmosResponseProcessor.Received(1).ProcessException(Arg.Any <DocumentClientException>());
        }
Пример #5
0
        public async Task GivenAFeedRequest_WhenMaxContinuationSizeIsSet_ThenFeedRequestIsUpdated()
        {
            IDocumentClient client = new FhirDocumentClient(_innerClient, _fhirRequestContextAccessor, 5, _cosmosResponseProcessor);

            _innerClient
            .ReadDatabaseFeedAsync(Arg.Is <FeedOptions>(o => o.ResponseContinuationTokenLimitInKb == 5))
            .Returns(CosmosDbMockingHelper.CreateFeedResponse(Enumerable.Empty <Database>(), new NameValueCollection()));

            await client.ReadDatabaseFeedAsync();

            await _cosmosResponseProcessor.Received(1).ProcessResponse(Arg.Any <FeedResponse <Database> >());
        }
        private static DocumentClientException CreateDocumentClientException(string requestCharge, string exceptionMessage, HttpStatusCode httpStatusCode, string subStatus = null)
        {
            var nameValueCollection = new NameValueCollection();

            nameValueCollection.Add(CosmosDbHeaders.RequestCharge, requestCharge);
            if (subStatus != null)
            {
                nameValueCollection.Add(CosmosDbHeaders.SubStatus, subStatus);
            }

            DocumentClientException documentClientException = CosmosDbMockingHelper.CreateDocumentClientException(exceptionMessage, nameValueCollection, httpStatusCode);

            return(documentClientException);
        }
Пример #7
0
        public async Task GivenTwoFeedRequests_WhenExecuted_ThenTheResponseHeadersContainTheCumulativeRequestCharge()
        {
            _innerClient
            .ReadDatabaseFeedAsync(Arg.Any <FeedOptions>())
            .Returns(CosmosDbMockingHelper.CreateFeedResponse(Enumerable.Empty <Database>(), new NameValueCollection {
                { CosmosDbHeaders.RequestCharge, "10" }
            }));

            await _fhirClient.ReadDatabaseFeedAsync();

            await _fhirClient.ReadDatabaseFeedAsync();

            await _cosmosResponseProcessor.Received(2).ProcessResponse(Arg.Any <FeedResponse <Database> >());
        }
        public async Task GivenACreateRequest_WithSessionConsistency_ThenTheResponseHeadersContainTheSessionToken()
        {
            _innerClient
            .CreateDocumentAsync("coll", (1, 2), Arg.Is <RequestOptions>(o => o.ConsistencyLevel == ConsistencyLevel.Session && o.SessionToken == "1"))
            .Returns(CosmosDbMockingHelper.CreateResourceResponse(new Document(), HttpStatusCode.OK, new NameValueCollection {
                { CosmosDbHeaders.SessionToken, "2" }
            }));

            _requestHeaders.Add(CosmosDbHeaders.ConsistencyLevel, "Session");
            _requestHeaders.Add(CosmosDbHeaders.SessionToken, "1");

            await _fhirClient.CreateDocumentAsync("coll", (1, 2));

            await _cosmosResponseProcessor.Received(1).ProcessResponse(Arg.Any <ResourceResponseBase>());
        }
        public async Task GivenAStoredProcedureRequestWithUri_WithSessionConsistency_ThenTheResponseHeadersContainTheSessionToken()
        {
            _innerClient
            .ExecuteStoredProcedureAsync <int>(default(Uri), Arg.Is <RequestOptions>(o => o.ConsistencyLevel == ConsistencyLevel.Session))
            .Returns(CosmosDbMockingHelper.CreateStoredProcedureResponse(42, HttpStatusCode.OK, new NameValueCollection {
                { CosmosDbHeaders.SessionToken, "2" }
            }));

            _requestHeaders.Add(CosmosDbHeaders.ConsistencyLevel, "Session");
            _requestHeaders.Add(CosmosDbHeaders.SessionToken, "1");

            await _fhirClient.ExecuteStoredProcedureAsync <int>(default(Uri));

            await _cosmosResponseProcessor.Received(1).ProcessResponse(Arg.Any <StoredProcedureResponse <int> >());
        }
Пример #10
0
        public async Task GivenAFeedRequest_WithSessionConsistency_ThenTheResponseHeadersContainTheSessionToken()
        {
            _innerClient
            .ReadDatabaseFeedAsync(Arg.Is <FeedOptions>(o => o.ConsistencyLevel == ConsistencyLevel.Session && o.SessionToken == "1"))
            .Returns(CosmosDbMockingHelper.CreateFeedResponse(Enumerable.Empty <Database>(), new NameValueCollection {
                { CosmosDbHeaders.SessionToken, "2" }
            }));

            _requestHeaders.Add(CosmosDbHeaders.ConsistencyLevel, "Session");
            _requestHeaders.Add(CosmosDbHeaders.SessionToken, "1");

            await _fhirClient.ReadDatabaseFeedAsync();

            await _cosmosResponseProcessor.Received(1).ProcessResponse(Arg.Any <FeedResponse <Database> >());
        }