private async Task <CosmosUserDefinedFunctionResponse> CreateRandomUdf()
        {
            string id       = Guid.NewGuid().ToString();
            string function = UserDefinedFunctionsTests.function;

            CosmosUserDefinedFunctionSettings settings = new CosmosUserDefinedFunctionSettings
            {
                Id   = id,
                Body = function,
            };

            //Create a user defined function
            CosmosUserDefinedFunctionResponse createResponse = await this.container.UserDefinedFunctions.CreateUserDefinedFunctionAsync(
                userDefinedFunctionSettings : settings,
                cancellationToken : this.cancellationToken);

            ValidateUserDefinedFunctionSettings(settings, createResponse);

            return(createResponse);
        }
        public async Task CRUDTest()
        {
            CosmosUserDefinedFunctionSettings settings = new CosmosUserDefinedFunctionSettings
            {
                Id   = Guid.NewGuid().ToString(),
                Body = UserDefinedFunctionsTests.function,
            };

            CosmosUserDefinedFunctionResponse response =
                await this.container.UserDefinedFunctions.CreateUserDefinedFunctionAsync(settings);

            double reqeustCharge = response.RequestCharge;

            Assert.IsTrue(reqeustCharge > 0);
            Assert.AreEqual(HttpStatusCode.Created, response.StatusCode);
            UserDefinedFunctionsTests.ValidateUserDefinedFunctionSettings(settings, response);

            response = await response.UserDefinedFunction.ReadAsync();

            reqeustCharge = response.RequestCharge;
            Assert.IsTrue(reqeustCharge > 0);
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            UserDefinedFunctionsTests.ValidateUserDefinedFunctionSettings(settings, response);

            CosmosUserDefinedFunctionSettings updatedSettings = response.Resource;

            updatedSettings.Body = @"function(amt) { return amt * 0.42; }";

            CosmosUserDefinedFunctionResponse replaceResponse = await response.UserDefinedFunction.ReplaceAsync(updatedSettings);

            UserDefinedFunctionsTests.ValidateUserDefinedFunctionSettings(updatedSettings, replaceResponse);
            reqeustCharge = replaceResponse.RequestCharge;
            Assert.IsTrue(reqeustCharge > 0);
            Assert.AreEqual(HttpStatusCode.OK, replaceResponse.StatusCode);

            replaceResponse = await replaceResponse.UserDefinedFunction.DeleteAsync();

            reqeustCharge = replaceResponse.RequestCharge;
            Assert.IsTrue(reqeustCharge > 0);
            Assert.AreEqual(HttpStatusCode.NoContent, replaceResponse.StatusCode);
        }
        private static void ValidateUserDefinedFunctionSettings(CosmosUserDefinedFunctionSettings udfSettings, CosmosUserDefinedFunctionResponse cosmosResponse)
        {
            CosmosUserDefinedFunctionSettings settings = cosmosResponse.Resource;

            Assert.AreEqual(udfSettings.Body, settings.Body,
                            "User defined function do not match");
            Assert.AreEqual(udfSettings.Id, settings.Id,
                            "User defined function id do not match");
            Assert.IsTrue(cosmosResponse.RequestCharge > 0);
            Assert.IsNotNull(cosmosResponse.MaxResourceQuota);
            Assert.IsNotNull(cosmosResponse.CurrentResourceQuotaUsage);
        }