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);
            }
        }