public async Task CreateShouldFailWhenBodyIsNonJsonContentType() { // Arrange var name = "TName"; var code = "TCode"; var source = "TSource"; var damagedQuantityRequired = "true"; var apiVersion = "1.0"; var body = new CreateDamageCodeFromBody() { DamagedQuantityRequired = damagedQuantityRequired, Source = source, Code = code, Name = name }; var jsonBody = JsonConvert.SerializeObject(body); // Act var response = await _client.PostAsync(string.Format("api/damagecodes?api-version={0}", apiVersion), new StringContent(jsonBody, Encoding.UTF8, "text/plain")); var responseBody = await response.Content.ReadAsStringAsync(); // Assert response.StatusCode.Should().Be(HttpStatusCode.UnsupportedMediaType); responseBody.Should().BeNullOrEmpty(); }
public async Task CreateShouldSucceed() { // Arrange var name = "TName"; var code = "TCode"; var source = "TSource"; var damagedQuantityRequired = "true"; var apiVersion = "1.0"; var body = new CreateDamageCodeFromBody() { DamagedQuantityRequired = damagedQuantityRequired, Source = source, Code = code, Name = name }; var jsonBody = JsonConvert.SerializeObject(body); // Act var response = await _client.PostAsync(string.Format("api/damagecodes?api-version={0}", apiVersion), new StringContent(jsonBody, Encoding.UTF8, "application/json")); var responseBody = await response.Content.ReadAsStringAsync(); // Assert response.StatusCode.Should().Be(HttpStatusCode.Created); response.Headers.Location.Should().NotBeNull(); response.Headers.ETag.Should().NotBeNull(); responseBody.Should().BeNullOrEmpty(); }
public async Task <IActionResult> Create([FromQuery] CreateDamageCodeFromQuery query, [FromBody] CreateDamageCodeFromBody body) { var request = new CreateDamageCodeRequest(query, body); var result = await _apiResult.Produce(request); return(result); }
public async Task CreateShouldFailWhenCodeAndSourceAlreadyExists() { // Arrange var name = "TName"; var code = "TCode"; string source = "TSource"; var damagedQuantityRequired = "true"; var apiVersion = "1.0"; await ControllerHelper.CreateDamageCode(code, name, damagedQuantityRequired, source); var body = new CreateDamageCodeFromBody() { DamagedQuantityRequired = damagedQuantityRequired, Source = source, Code = code, Name = name }; var jsonBody = JsonConvert.SerializeObject(body); var expectedError = new ResponseError { Error = new ResponseErrorBody { Code = ServiceError.ResourceAlreadyExists.Code, Message = ServiceError.ResourceAlreadyExists.Message, Details = new List <ResponseErrorField> { new ResponseErrorField { Code = "conflict", Message = HandlerFailures.CodeSourceConflict, Target = "code-source" } } } }; // Act var response = await _client.PostAsync(string.Format("api/damagecodes?api-version={0}", apiVersion), new StringContent(jsonBody, Encoding.UTF8, "application/json")); var responseBody = await response.Content.ReadAsStringAsync(); var error = JsonConvert.DeserializeObject <ResponseError>(responseBody); // Assert response.StatusCode.Should().Be(HttpStatusCode.Conflict); responseBody.Should().NotBeNull(); error.Should().Be(expectedError); }
public async Task CreateShouldFailWhenDamagedQuantityRequiredIsNull() { // Arrange var name = "TName"; var code = "TCode"; string source = "TSource"; string damagedQuantityRequired = null; var apiVersion = "1.0"; var body = new CreateDamageCodeFromBody() { DamagedQuantityRequired = damagedQuantityRequired, Source = source, Code = code, Name = name }; var jsonBody = JsonConvert.SerializeObject(body); var expectedError = new ResponseError { Error = new ResponseErrorBody { Code = ServiceError.InvalidInput.Code, Message = ServiceError.InvalidInput.Message, Details = new List <ResponseErrorField> { new ResponseErrorField { Code = "invalid-input", Message = ValidationFailures.DamageCodeDamagedQuantityRequiredMandatory, Target = "damagedQuantityRequired" } } } }; // Act var response = await _client.PostAsync(string.Format("api/damagecodes?api-version={0}", apiVersion), new StringContent(jsonBody, Encoding.UTF8, "application/json")); var responseBody = await response.Content.ReadAsStringAsync(); var error = JsonConvert.DeserializeObject <ResponseError>(responseBody); // Assert response.StatusCode.Should().Be(HttpStatusCode.BadRequest); responseBody.Should().NotBeNull(); error.Should().Be(expectedError); }
public async Task CreateShouldFailWhenQueryApiVersionIsMissing() { // Arrange var name = "TName"; var code = "TCode"; var source = "TSource"; var damagedQuantityRequired = "true"; var apiVersion = "1.0"; var body = new CreateDamageCodeFromBody() { DamagedQuantityRequired = damagedQuantityRequired, Source = source, Code = code, Name = name }; var jsonBody = JsonConvert.SerializeObject(body); var expectedError = new ResponseError { Error = new ResponseErrorBody { Code = ServiceError.MissingRequiredQueryParameter.Code, Message = ServiceError.MissingRequiredQueryParameter.Message, Details = new List <ResponseErrorField> { new ResponseErrorField { Code = Consts.Failure.Detail.Code.Missing, Message = string.Format(RequestFailures.QueryParameterRequired, "api-version"), Target = Consts.Failure.Detail.Target.ApiVersion } } } }; // Act var response = await _client.PostAsync("api/damagecodes", new StringContent(jsonBody, Encoding.UTF8, "application/json")); var responseBody = await response.Content.ReadAsStringAsync(); var error = JsonConvert.DeserializeObject <ResponseError>(responseBody); // Assert response.StatusCode.Should().Be(HttpStatusCode.BadRequest); responseBody.Should().NotBeNull(); error.Should().Be(expectedError); }
public async Task CreateShouldFailWhenQueryApiVersionIsInvalid() { // Arrange var name = "Name"; var apiVersion = "4.0"; var body = new CreateDamageCodeFromBody() { Name = name }; var jsonBody = JsonConvert.SerializeObject(body); var expectedError = new ResponseError { Error = new ResponseErrorBody { Code = ServiceError.InvalidQueryParameterValue.Code, Message = ServiceError.InvalidQueryParameterValue.Message, Details = new List <ResponseErrorField> { new ResponseErrorField { Code = Consts.Failure.Detail.Code.Invalid, Message = string.Format(RequestFailures.QueryParameterInvalidValue, "api-version"), Target = Consts.Failure.Detail.Target.ApiVersion } } } }; // Act var response = await _client.PostAsync(string.Format("api/damagecodes?api-version={0}", apiVersion), new StringContent(jsonBody, Encoding.UTF8, "application/json")); var responseBody = await response.Content.ReadAsStringAsync(); var error = JsonConvert.DeserializeObject <ResponseError>(responseBody); // Assert response.StatusCode.Should().Be(HttpStatusCode.BadRequest); responseBody.Should().NotBeNull(); error.Should().Be(expectedError); }
public static async Task <CreatedRecordResult> CreateDamageCode(string code, string name, string damagedQuantityRequired, string source) { var apiVersion = "1.0"; var body = new CreateDamageCodeFromBody { DamagedQuantityRequired = damagedQuantityRequired, Source = source, Code = code, Name = name }; var jsonBody = JsonConvert.SerializeObject(body); var response = await _client.PostAsync(string.Format("api/damagecodes?api-version={0}", apiVersion), new StringContent(jsonBody, Encoding.UTF8, "application/json")); var id = response.Headers.Location.GetId(); var eTag = response.Headers.ETag.Tag; var result = new CreatedRecordResult { Id = id, ETag = eTag }; return(result); }
public CreateDamageCodeRequest(CreateDamageCodeFromQuery query, CreateDamageCodeFromBody body) { _query = query ?? throw new ArgumentNullException(nameof(query)); _body = body ?? throw new ArgumentNullException(nameof(body)); }