public async Task TestPreProcessingHandler() { RequestHandler preProcessHandler = new PreProcessingTestHandler(); using CosmosClient client = MockCosmosUtil.CreateMockCosmosClient((builder) => builder.AddCustomHandlers(preProcessHandler)); Assert.IsTrue(typeof(RequestInvokerHandler).Equals(client.RequestHandler.GetType())); Assert.IsTrue(typeof(PreProcessingTestHandler).Equals(client.RequestHandler.InnerHandler.GetType())); Container container = client.GetDatabase("testdb") .GetContainer("testcontainer"); HttpStatusCode[] testHttpStatusCodes = new HttpStatusCode[] { HttpStatusCode.OK }; // User operations foreach (HttpStatusCode code in testHttpStatusCodes) { ItemRequestOptions options = new ItemRequestOptions { Properties = new Dictionary <string, object>() { { PreProcessingTestHandler.StatusCodeName, code }, } }; ItemResponse <object> response = await container.ReadItemAsync <object>("id1", new Cosmos.PartitionKey("pk1"), options); Console.WriteLine($"Got status code {response.StatusCode}"); Assert.AreEqual(code, response.StatusCode); } // Meta-data operations foreach (HttpStatusCode code in testHttpStatusCodes) { ContainerRequestOptions options = new ContainerRequestOptions { Properties = new Dictionary <string, object>() { { PreProcessingTestHandler.StatusCodeName, code } } }; ContainerResponse response = await container.DeleteContainerAsync(options); Console.WriteLine($"Got status code {response.StatusCode}"); Assert.AreEqual(code, response.StatusCode); } }
public async Task TestPreProcessingHandler() { CosmosRequestHandler preProcessHandler = new PreProcessingTestHandler(); CosmosClient client = MockDocumentClient.CreateMockCosmosClient((builder) => builder.AddCustomHandlers(preProcessHandler)); Assert.IsTrue(typeof(RequestInvokerHandler).Equals(client.RequestHandler.GetType())); Assert.IsTrue(typeof(PreProcessingTestHandler).Equals(client.RequestHandler.InnerHandler.GetType())); CosmosContainer container = client.Databases["testdb"] .Containers["testcontainer"]; HttpStatusCode[] testHttpStatusCodes = new HttpStatusCode[] { HttpStatusCode.OK, HttpStatusCode.NotFound }; // User operations foreach (HttpStatusCode code in testHttpStatusCodes) { CosmosItemRequestOptions options = new CosmosItemRequestOptions(); options.Properties = new Dictionary <string, object>(); options.Properties.Add(PreProcessingTestHandler.StatusCodeName, code); CosmosItemResponse <object> response = await container.Items.ReadItemAsync <object>("pk1", "id1", options); Console.WriteLine($"Got status code {response.StatusCode}"); Assert.AreEqual(code, response.StatusCode); } // Meta-data operations foreach (HttpStatusCode code in testHttpStatusCodes) { CosmosContainerRequestOptions options = new CosmosContainerRequestOptions(); options.Properties = new Dictionary <string, object>(); options.Properties.Add(PreProcessingTestHandler.StatusCodeName, code); CosmosContainerResponse response = await container.DeleteAsync(options); Console.WriteLine($"Got status code {response.StatusCode}"); Assert.AreEqual(code, response.StatusCode); } }