public HttpResponseMessage PostConfiguration(FunctionsConfiguration configuration)
 {
     try {
         FunctionsFactory.Instance.Configuration = configuration;
         return(Request.CreateResponse(HttpStatusCode.NoContent).SetMandatoryFields());
     } catch (ValidationException ve) {
         return(Request.CreateResponse <ValidationException>(HttpStatusCode.BadRequest, ve).SetMandatoryFields());
     }
 }
        public async Task PostConfigurationUpdateConfiguration()
        {
            var address = $"http://127.0.0.1:{Port}/api/Configuration";

            var configuration = new FunctionsConfiguration()
            {
                TimeoutInMillis = 1000
            };

            var jsonString = JsonConvert.SerializeObject(configuration);
            var content    = new StringContent(jsonString, Encoding.UTF8, "application/json");

            var response        = await new HttpClient().PostAsync(address, content);
            var responseContent = await response.Content.ReadAsStringAsync();

            Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode);
            Assert.AreEqual(1000, FunctionsFactory.Instance.Configuration.TimeoutInMillis);
        }
        public async Task PostConfigurationDoesNotUpdateBadConfiguration()
        {
            var address = $"http://127.0.0.1:{Port}/api/Configuration";

            var configuration = new FunctionsConfiguration()
            {
                TimeoutInMillis = -1000
            };

            var jsonString = JsonConvert.SerializeObject(configuration);
            var content    = new StringContent(jsonString, Encoding.UTF8, "application/json");

            var response        = await new HttpClient().PostAsync(address, content);
            var responseContent = await response.Content.ReadAsStringAsync();

            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.IsTrue(responseContent.Contains(configuration.TimeoutInMillis.ToString()),
                          "Error message states what is wrong with the request");
        }