Пример #1
0
        public void Then_The_Request_Data_Is_Sent(Guid id, string email, int ukprn, PostVacancyRequestData data)
        {
            var actual = new PostVacancyRequest(id, ukprn, email, data);

            var actualData = actual.Data as PostVacancyRequestData;

            actualData.Should().BeEquivalentTo(data);
        }
Пример #2
0
        public async Task <CreateVacancyCommandResponse> Handle(CreateVacancyCommand request, CancellationToken cancellationToken)
        {
            var accountLegalEntity = await _accountLegalEntityPermissionService.GetAccountLegalEntity(
                request.AccountIdentifier, request.PostVacancyRequestData.AccountLegalEntityPublicHashedId);

            if (accountLegalEntity == null)
            {
                throw new SecurityException();
            }

            request.PostVacancyRequestData.LegalEntityName = accountLegalEntity.Name;

            if (request.AccountIdentifier.AccountType == AccountType.Provider)
            {
                request.PostVacancyRequestData.EmployerAccountId = accountLegalEntity.AccountHashedId;
            }

            if (request.PostVacancyRequestData.EmployerNameOption == EmployerNameOption.RegisteredName)
            {
                request.PostVacancyRequestData.EmployerName = accountLegalEntity.Name;
            }

            IPostApiRequest apiRequest;

            if (request.IsSandbox)
            {
                apiRequest = new PostValidateVacancyRequest(request.Id, request.PostVacancyRequestData);
            }
            else
            {
                if (request.AccountIdentifier.AccountType == AccountType.Provider)
                {
                    apiRequest = new PostVacancyRequest(request.Id, request.PostVacancyRequestData.User.Ukprn, "", request.PostVacancyRequestData);
                }
                else
                {
                    apiRequest = new PostVacancyRequest(request.Id, request.PostVacancyRequestData.User.Ukprn, request.PostVacancyRequestData.User.Email, request.PostVacancyRequestData);
                }
            }

            var result = await _recruitApiClient.PostWithResponseCode <string>(apiRequest);

            if (!((int)result.StatusCode >= 200 && (int)result.StatusCode <= 299))
            {
                if (result.StatusCode.Equals(HttpStatusCode.BadRequest))
                {
                    throw new HttpRequestContentException($"Response status code does not indicate success: {(int)result.StatusCode} ({result.StatusCode})", result.StatusCode, result.ErrorContent);
                }

                throw new Exception(
                          $"Response status code does not indicate success: {(int) result.StatusCode} ({result.StatusCode})");
            }

            return(new CreateVacancyCommandResponse
            {
                VacancyReference = result.Body
            });
        }
Пример #3
0
        public void Then_The_Url_Is_Correctly_Built(Guid id, string email, int ukprn, PostVacancyRequestData data)
        {
            var actual = new PostVacancyRequest(id, ukprn, email, data);

            actual.PostUrl.Should().Be($"api/Vacancies/{id}?ukprn={ukprn}&userEmail={email}");
        }