public async Task <IActionResult> CreateContact([FromBody] ContactDetailsRequestObject contactRequest) { var token = _tokenFactory.Create(_httpContextWrapper.GetContextRequestHeaders(HttpContext)); var result = await _createContactUseCase.ExecuteAsync(contactRequest, token).ConfigureAwait(false); return(Created("api/v1/contactDetails", result)); }
public void SourceServiceAreaShouldErrorWhenNull() { var model = new ContactDetailsRequestObject() { SourceServiceArea = null }; var result = _sut.TestValidate(model); result.ShouldHaveValidationErrorFor(x => x.SourceServiceArea); }
public void ContactInformationShouldErrorWhenNull() { var model = new ContactDetailsRequestObject() { ContactInformation = null }; var result = _sut.TestValidate(model); result.ShouldHaveValidationErrorFor(x => x.ContactInformation); }
public void TargetTypeShouldNotErrorWithValidValue(TargetType valid) { var model = new ContactDetailsRequestObject() { TargetType = valid }; var result = _sut.TestValidate(model); result.ShouldNotHaveValidationErrorFor(x => x.TargetType); }
public void ContactTypeShouldErrorWithInvalidValue(int?val) { var model = new ContactDetailsRequestObject() { TargetType = (TargetType)val }; var result = _sut.TestValidate(model); result.ShouldHaveValidationErrorFor(x => x.TargetType); }
public void ShouldErrorWithEmptyTargetId() { var model = new ContactDetailsRequestObject() { TargetId = Guid.Empty }; var result = _sut.TestValidate(model); result.ShouldHaveValidationErrorFor(x => x.TargetId); }
public void RecordValidUntilShouldErrorWithInvalidValue() { var model = new ContactDetailsRequestObject() { RecordValidUntil = default(DateTime) }; var result = _sut.TestValidate(model); result.ShouldHaveValidationErrorFor(x => x.RecordValidUntil); }
public void ContactInformationShouldErrorWithInvalidValue() { var invalid = new ContactInformation(); var model = new ContactDetailsRequestObject() { ContactInformation = invalid }; var result = _sut.TestValidate(model); result.ShouldHaveValidationErrorFor(x => x.ContactInformation.Value); }
public void RecordValidUntilShouldNotErrorValidValue(string valid) { var model = new ContactDetailsRequestObject(); if (valid != null) { model.RecordValidUntil = DateTime.Parse(valid); } var result = _sut.TestValidate(model); result.ShouldNotHaveValidationErrorFor(x => x.RecordValidUntil); }
public static ContactDetails ToDomain(this ContactDetailsRequestObject entity, Token token) { return(new ContactDetails { Id = entity.Id == Guid.Empty ? Guid.NewGuid() : entity.Id, TargetId = entity.TargetId, TargetType = entity.TargetType, ContactInformation = entity.ContactInformation, SourceServiceArea = entity.SourceServiceArea, CreatedBy = token.ToCreatedBy(), IsActive = true, RecordValidUntil = entity.RecordValidUntil }); }
public async Task <ContactDetailsResponseObject> ExecuteAsync(ContactDetailsRequestObject contactRequest, Token token) { var dbObject = contactRequest.ToDomain(token).ToDatabase(); var contact = await _gateway.CreateContact(dbObject).ConfigureAwait(false); var contactTopicArn = Environment.GetEnvironmentVariable("CONTACT_DETAILS_SNS_ARN"); var createContactDetailsSnsMessage = _snsFactory.Create(contact, token, EventConstants.CREATED); await _snsGateway.Publish(createContactDetailsSnsMessage, contactTopicArn).ConfigureAwait(false); return(contact.ToResponse()); }
public void SourceServiceAreaShouldErrorWithInvalidValue() { var invalid = new SourceServiceArea() { Area = "Some<tag>value" }; var model = new ContactDetailsRequestObject() { SourceServiceArea = invalid }; var result = _sut.TestValidate(model); result.ShouldHaveValidationErrorFor(x => x.SourceServiceArea.Area); }
public async Task WhenTheCreateContactEndpointIsCalled(ContactDetailsRequestObject requestObject) { var route = $"api/v2/contactDetails"; var uri = new Uri(route, UriKind.Relative); var message = new HttpRequestMessage(HttpMethod.Post, uri); message.Content = new StringContent(JsonConvert.SerializeObject(requestObject), Encoding.UTF8, "application/json"); message.Method = HttpMethod.Post; message.Headers.Add("Authorization", Jwt); _httpClient.DefaultRequestHeaders .Accept .Add(new MediaTypeWithQualityHeaderValue("application/json")); _lastResponse = await _httpClient.SendAsync(message).ConfigureAwait(false); }
private async Task CheckMaximumsNotReached(ContactDetailsRequestObject contactRequest) { var getExistingRequest = new V1.Boundary.Request.ContactQueryParameter() { TargetId = contactRequest.TargetId, IncludeHistoric = false }; var existingContacts = await _gateway.GetContactDetailsByTargetId(getExistingRequest).ConfigureAwait(false); if (existingContacts != null) { var testObject = new CanCreateContactRequest() { ExistingContacts = existingContacts, Request = contactRequest }; var validator = new CanCreateContactValidator(); var validationResult = validator.Validate(testObject); if (!validationResult.IsValid) { throw new ValidationException(validationResult.Errors); } } }
public void GivenAnInvalidNewContactRequest() { Contact = new ContactDetailsRequestObject(); }