Ejemplo n.º 1
0
        public async Task Should_allocate_new_user_no_users_exist_does_not_exist_in_aad()
        {
            var users = new List <UserDto>();

            QueryHandler
            .Setup(x => x.Handle <GetAllUsersByFilterQuery, List <UserDto> >(It.IsAny <GetAllUsersByFilterQuery>()))
            .ReturnsAsync(users);

            const int NUMBER = 1;

            QueryHandler
            .Setup(x =>
                   x.Handle <GetNextUserNumberByUserTypeQuery, Integer>(It.IsAny <GetNextUserNumberByUserTypeQuery>()))
            .ReturnsAsync(new Integer(NUMBER));

            CommandHandler
            .Setup(x => x.Handle(It.IsAny <CreateNewUserCommand>()))
            .Returns(Task.CompletedTask);

            var user = CreateNewUser(UserType.Individual, NUMBER);

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

            var allocation = CreateAllocation(user);

            CommandHandler
            .Setup(x => x.Handle(It.IsAny <CreateNewAllocationByUserIdCommand>()))
            .Returns(Task.FromResult(allocation));

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

            MockUserApiService
            .Setup(x => x.CheckUserExistsInAAD(It.IsAny <string>()))
            .ReturnsAsync(false);

            var newUserResponse = new NewUserResponse
            {
                OneTimePassword = "******",
                UserId          = "1234",
                Username        = user.Username
            };

            MockUserApiService
            .Setup(x => x.CreateNewUserInAAD(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <bool>()))
            .ReturnsAsync(newUserResponse);

            const int NUMBER_OF_USER_GROUPS = 2;

            MockUserApiService
            .Setup(x => x.AddGroupsToUser(It.IsAny <UserDto>(), It.IsAny <string>()))
            .ReturnsAsync(NUMBER_OF_USER_GROUPS);

            CommandHandler
            .Setup(x => x.Handle(It.IsAny <AllocateByUserIdCommand>()))
            .Returns(Task.CompletedTask);

            const int MINUTES = 1;

            var allocatedUser = await AllocationService.AllocateToService(user.UserType, user.Application, user.TestType, user.IsProdUser, MINUTES);

            allocatedUser.Should().BeEquivalentTo(user);
        }