public void Should_allocate_prod_user()
        {
            const bool IS_PROD_USER = UserData.IS_PROD_USER;

            var user = CreateUser(UserType.Individual, IS_PROD_USER);

            CreateAllocation(user);

            var request = new AllocateUserRequestBuilder()
                          .WithUserType(user.UserType)
                          .IsProdUser()
                          .Build();

            QueryHandler
            .Setup(
                x => x.Handle <GetAllocatedUserByUserTypeQuery, UserDto>(It.IsAny <GetAllocatedUserByUserTypeQuery>()))
            .ReturnsAsync(user);

            var response = Controller.AllocateSingleUser(request);

            response.Should().NotBeNull();

            var result = (OkObjectResult)response;

            result.StatusCode.Should().Be((int)HttpStatusCode.OK);

            var userDetailsResponse = (UserDetailsResponse)result.Value;

            userDetailsResponse.Should().BeEquivalentTo(user);
        }
        public async Task Should_retrieve_allocations_by_user()
        {
            const string ALLOCATED_BY = EmailData.TEST_WEB_MANUAL_USER;
            var          request      = new AllocateUserRequestBuilder().WithUserType(UserType.Judge).WithAllocatedBy(ALLOCATED_BY).Build();

            var uri = ApiUriFactory.AllocationEndpoints.AllocateSingleUser;

            await SendPatchRequest(uri, RequestHelper.Serialise(request));

            VerifyResponse(HttpStatusCode.OK, true);

            uri = ApiUriFactory.AllocationEndpoints.GetAllocatedUsers(ALLOCATED_BY);
            await SendGetRequest(uri);

            VerifyResponse(HttpStatusCode.OK, true);
            var allocations = RequestHelper.Deserialise <List <AllocationDetailsResponse> >(Json);

            allocations.Should().NotBeEmpty();

            foreach (var allocation in allocations)
            {
                allocation.Allocated.Should().BeTrue();
                allocation.AllocatedBy.Should().Be(ALLOCATED_BY);
                allocation.ExpiresAt.Should().HaveValue();
                allocation.Id.Should().NotBeEmpty();
                allocation.UserId.Should().NotBeEmpty();
                allocation.Username.Should().NotBeNullOrWhiteSpace();
            }
        }
        public void Should_create_user_first_names_based_on_test_type(TestType testType)
        {
            var user = CreateUser(testType);

            CreateAllocation(user);

            var request = new AllocateUserRequestBuilder()
                          .WithUserType(user.UserType)
                          .ForTestType(testType)
                          .Build();

            QueryHandler
            .Setup(
                x => x.Handle <GetAllocatedUserByUserTypeQuery, UserDto>(It.IsAny <GetAllocatedUserByUserTypeQuery>()))
            .ReturnsAsync(user);

            var response = Controller.AllocateSingleUser(request);

            response.Should().NotBeNull();

            var result = (OkObjectResult)response;

            result.StatusCode.Should().Be((int)HttpStatusCode.OK);

            var userDetailsResponse = (UserDetailsResponse)result.Value;

            userDetailsResponse.Should().BeEquivalentTo(user);

            userDetailsResponse.FirstName.ToLower().Should().Contain(testType == TestType.Automated
                ? UserData.AUTOMATED_FIRST_NAME_PREFIX.ToLower()
                : testType.ToString().ToLower());
        }
        public void Should_return_allocated_user_for_test_type(TestType testType)
        {
            var user = CreateUser(testType);

            CreateAllocation(user);

            var request = new AllocateUserRequestBuilder()
                          .WithUserType(user.UserType)
                          .ForTestType(testType)
                          .Build();

            QueryHandler
            .Setup(
                x => x.Handle <GetAllocatedUserByUserTypeQuery, UserDto>(It.IsAny <GetAllocatedUserByUserTypeQuery>()))
            .ReturnsAsync(user);

            var response = Controller.AllocateSingleUser(request);

            response.Should().NotBeNull();

            var result = (OkObjectResult)response;

            result.StatusCode.Should().Be((int)HttpStatusCode.OK);

            var userDetailsResponse = (UserDetailsResponse)result.Value;

            userDetailsResponse.Should().BeEquivalentTo(user);
        }
Beispiel #5
0
        public async Task Should_pass_validation()
        {
            var request = new AllocateUserRequestBuilder().Build();

            var result = await _validator.ValidateAsync(request);

            result.IsValid.Should().BeTrue();
        }
        protected UserDetailsResponse AllocateUser(UserType userType, bool isEjud = false)
        {
            var body     = new AllocateUserRequestBuilder().WithUserType(userType).IsEjud(isEjud).Build();
            var uri      = ApiUriFactory.AllocationEndpoints.AllocateSingleUser;
            var request  = RequestHandler.Patch(uri, body);
            var response = SendRequest(request);

            response.StatusCode.Should().Be(HttpStatusCode.OK);
            response.IsSuccessful.Should().BeTrue();
            return(RequestHelper.Deserialise <UserDetailsResponse>(response.Content));
        }
Beispiel #7
0
        public async Task Should_be_greater_than_zero_for_expiry()
        {
            var request = new AllocateUserRequestBuilder().WithExpiryInMinutes(-1).Build();

            var result = await _validator.ValidateAsync(request);

            result.IsValid.Should().BeFalse();
            result.Errors.Count.Should().Be(1);
            result.Errors.First().ErrorMessage.Should()
            .Be(AllocateUserRequestValidator.EXPIRES_IN_GREATER_THAN_ZERO_ERROR_MESSAGE);
        }
Beispiel #8
0
        public async Task Should_be_less_than_twelve_hours_for_expiry()
        {
            var request = new AllocateUserRequestBuilder()
                          .WithExpiryInMinutes(Convert.ToInt32(TimeSpan.FromHours(12).Add(TimeSpan.FromDays(30)).TotalMinutes))
                          .Build();

            var result = await _validator.ValidateAsync(request);

            result.IsValid.Should().BeFalse();
            result.Errors.Count.Should().Be(1);
            result.Errors.First().ErrorMessage.Should()
            .Be(AllocateUserRequestValidator.EXPIRES_IN_LESS_THAN_THIRTY_DAYS_ERROR_MESSAGE);
        }
        public async Task Should_allocate_single_user_no_users_exist(UserType userType)
        {
            var request = new AllocateUserRequestBuilder().WithUserType(userType).Build();

            var uri = ApiUriFactory.AllocationEndpoints.AllocateSingleUser;

            await SendPatchRequest(uri, RequestHelper.Serialise(request));

            VerifyResponse(HttpStatusCode.OK, true);
            var response = RequestHelper.Deserialise <UserDetailsResponse>(Json);

            response.Should().NotBeNull();
            Verify.UserDetailsResponse(response, userType);
        }
Beispiel #10
0
        private async Task <string> AllocateUser(bool isEjud = false)
        {
            var request = new AllocateUserRequestBuilder()
                          .WithUserType(UserType.Judge)
                          .ForTestType(TestType.Manual)
                          .IsEjud(isEjud)
                          .Build();

            var uri = ApiUriFactory.AllocationEndpoints.AllocateSingleUser;

            await SendPatchRequest(uri, RequestHelper.Serialise(request));

            VerifyResponse(HttpStatusCode.OK, true);
            var response = RequestHelper.Deserialise <UserDetailsResponse>(Json);

            response.Should().NotBeNull();
            return(response.Username);
        }
        public async Task Should_allocate_single_ejud_user(UserType userType)
        {
            var request = new AllocateUserRequestBuilder()
                          .WithUserType(userType)
                          .IsEjud()
                          .Build();

            var uri = ApiUriFactory.AllocationEndpoints.AllocateSingleUser;

            await SendPatchRequest(uri, RequestHelper.Serialise(request));

            VerifyResponse(HttpStatusCode.OK, true);
            var response = RequestHelper.Deserialise <UserDetailsResponse>(Json);

            response.Should().NotBeNull();
            Verify.EjudUserDetailsResponse(response, userType);
            response.ContactEmail.Should().EndWith(Context.Config.EjudUsernameStem);
            response.ContactEmail.Should().NotEndWith(Context.Config.UsernameStem);
            response.Username.Should().EndWith(Context.Config.EjudUsernameStem);
            response.Username.Should().NotEndWith(Context.Config.UsernameStem);
        }
        public async Task Should_allocate_none_joh_user_with_ejud_true()
        {
            const UserType USER_TYPE = UserType.Individual;

            var request = new AllocateUserRequestBuilder()
                          .WithUserType(USER_TYPE)
                          .IsEjud()
                          .Build();

            var uri = ApiUriFactory.AllocationEndpoints.AllocateSingleUser;

            await SendPatchRequest(uri, RequestHelper.Serialise(request));

            VerifyResponse(HttpStatusCode.OK, true);
            var response = RequestHelper.Deserialise <UserDetailsResponse>(Json);

            response.Should().NotBeNull();
            Verify.UserDetailsResponse(response, USER_TYPE);
            response.ContactEmail.Should().NotEndWith(Context.Config.EjudUsernameStem);
            response.Username.Should().EndWith(Context.Config.UsernameStem);
            response.Username.Should().NotEndWith(Context.Config.EjudUsernameStem);
        }
        public async Task Should_allocate_user_with_specified_test_type(TestType testType)
        {
            var user = await Context.Data.SeedUser(testType);

            await Context.Data.SeedAllocation(user.Id);

            var request = new AllocateUserRequestBuilder()
                          .WithUserType(user.UserType)
                          .ForApplication(user.Application)
                          .ForTestType(testType)
                          .Build();

            var uri = ApiUriFactory.AllocationEndpoints.AllocateSingleUser;

            await SendPatchRequest(uri, RequestHelper.Serialise(request));

            VerifyResponse(HttpStatusCode.OK, true);
            var response = RequestHelper.Deserialise <UserDetailsResponse>(Json);

            response.Should().NotBeNull();
            Verify.UserDetailsResponse(response, user);
        }
        public async Task Should_allocate_prod_user()
        {
            const bool IS_PROD_USER = UserData.IS_PROD_USER;
            var        user         = await Context.Data.SeedUser(UserType.Judge, IS_PROD_USER);

            await Context.Data.SeedAllocation(user.Id);

            var request = new AllocateUserRequestBuilder()
                          .WithUserType(user.UserType)
                          .ForApplication(user.Application)
                          .IsProdUser()
                          .Build();

            var uri = ApiUriFactory.AllocationEndpoints.AllocateSingleUser;

            await SendPatchRequest(uri, RequestHelper.Serialise(request));

            VerifyResponse(HttpStatusCode.OK, true);
            var response = RequestHelper.Deserialise <UserDetailsResponse>(Json);

            response.Should().NotBeNull();
            Verify.UserDetailsResponse(response, user);
        }
        public async Task Should_allocate_user_no_users_exist()
        {
            const UserType    USER_TYPE     = UserType.Individual;
            const Application APPLICATION   = Application.TestApi;
            const string      USERNAME_STEM = EmailData.FAKE_EMAIL_STEM;
            const int         NUMBER        = 1;

            var user = new UserBuilder(USERNAME_STEM, NUMBER)
                       .WithUserType(USER_TYPE)
                       .ForApplication(APPLICATION)
                       .BuildUserDto();

            var allocationRequest = new AllocateUserRequestBuilder().WithUserType(USER_TYPE).Build();

            _allocationService
            .Setup(x => x.AllocateToService(It.IsAny <UserType>(), It.IsAny <Application>(), It.IsAny <TestType>(), It.IsAny <bool>(), It.IsAny <int>(), It.IsAny <string>()))
            .Returns(Task.FromResult(user));

            var userDetails = await _query.Handle(new GetAllocatedUserByUserTypeQuery(allocationRequest));

            userDetails.Should().NotBeNull();
            userDetails.Should().BeEquivalentTo(user);
        }