public void ShrinkByDate_when_index_prefix_is_null() { ShrinkByDateRequestBody request = new ShrinkByDateRequestBody { IndexPrefix = null, StartDate = DateTime.UtcNow.AddDays(-2).ToString("yyyy-MM-dd"), EndDate = DateTime.UtcNow.AddDays(-1).ToString("yyyy-MM-dd") }; BaseServiceResponse <ShrinkByDateResponseBody> response = Controller.ShrinkByDate(request); Assert.IsTrue(response.Operation.Failed); Assert.IsNull(response.Body); Assert.AreEqual(nameof(ArgumentNullException), response.Operation.Error.ClassName); }
public BaseServiceResponse <ShrinkByDateResponseBody> ShrinkByDate([FromBody] ShrinkByDateRequestBody request) { BaseServiceResponse <ShrinkByDateResponseBody> response = new BaseServiceResponse <ShrinkByDateResponseBody>(); try { #region Validations // Request's body can't be null. if (request == null) { throw new ArgumentNullException(nameof(request)); } // Index prefix must be informed. if (string.IsNullOrWhiteSpace((request.IndexPrefix))) { throw new ArgumentNullException(nameof(request.IndexPrefix)); } // StartDate can't be null or empty or whitespaced. if (string.IsNullOrWhiteSpace((request.StartDate))) { throw new ArgumentNullException(nameof(request.StartDate)); } // EndDate can't be null or empty or whitespaced. if (string.IsNullOrWhiteSpace((request.EndDate))) { throw new ArgumentNullException(nameof(request.EndDate)); } // StartDate must be a valid date. if (DateTime.TryParseExact(request.StartDate, "yyyy-MM-dd", new CultureInfo("en-US"), DateTimeStyles.None, out DateTime parsedStartDate) == false) { throw new ArgumentException(string.Format("The argument {0} must be a valid date.", nameof(request.StartDate))); } // EndDate must be a valid date. if (DateTime.TryParseExact(request.EndDate, "yyyy-MM-dd", new CultureInfo("en-US"), DateTimeStyles.None, out DateTime parsedEndDate) == false) { throw new ArgumentException(string.Format("The argument {0} must be a valid date.", nameof(request.EndDate))); } // StartDate must be at least one day in the past if (parsedStartDate >= DateTime.UtcNow.Date) { throw new ArgumentOutOfRangeException(nameof(request.StartDate), request.StartDate, string.Format("The {0} must be at least one day in the past.", nameof(request.StartDate))); } // EndDate must be at least onde day in the past if (parsedEndDate >= DateTime.UtcNow.Date) { throw new ArgumentOutOfRangeException(nameof(request.EndDate), request.EndDate, string.Format("The {0} must be at least one day in the past.", nameof(request.EndDate))); } // EndDate must be higher than StartDate. if (parsedEndDate < parsedStartDate) { throw new ArgumentOutOfRangeException(nameof(request.EndDate), request.EndDate, string.Format("The {0} must be higher than {1}.", nameof(request.EndDate), nameof(request.StartDate))); } #endregion } catch (Exception ex) { response = new BaseServiceResponse <ShrinkByDateResponseBody>(ex); } return(response); }