Пример #1
0
        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();
        }
Пример #2
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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));
 }