Beispiel #1
0
        public async Task <Result> Create(int nationalSocietyId, CreateDataConsumerRequestDto createDataConsumerRequestDto)
        {
            try
            {
                string           securityStamp;
                DataConsumerUser user;
                using (var transactionScope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled))
                {
                    var identityUser = await _identityUserRegistrationService.CreateIdentityUser(createDataConsumerRequestDto.Email, Role.DataConsumer);

                    securityStamp = await _identityUserRegistrationService.GenerateEmailVerification(identityUser.Email);

                    user = await CreateDataConsumerUser(identityUser, nationalSocietyId, createDataConsumerRequestDto);

                    transactionScope.Complete();
                }

                await _verificationEmailService.SendVerificationEmail(user, securityStamp);

                return(Success(ResultKey.User.Registration.Success));
            }
            catch (ResultException e)
            {
                _loggerAdapter.Debug(e);
                return(e.Result);
            }
        }
        public async Task RegisterDataConsumer_WhenIdentityUserCreationSuccessful_NyssContextSaveChangesIsCalledOnce()
        {
            var userEmail = "*****@*****.**";
            var registerDataConsumerRequestDto = new CreateDataConsumerRequestDto
            {
                Name  = userEmail,
                Email = userEmail
            };

            var nationalSocietyId = 1;
            var result            = await _dataConsumerService.Create(nationalSocietyId, registerDataConsumerRequestDto);


            await _nyssContext.Received().SaveChangesAsync();
        }
        public void RegisterDataConsumer_WhenNonResultExceptionIsThrown_ShouldPassThroughWithoutBeingCaught()
        {
            _identityUserRegistrationServiceMock.When(ius => ius.CreateIdentityUser(Arg.Any <string>(), Arg.Any <Role>()))
            .Do(x => throw new Exception());

            var userEmail = "*****@*****.**";
            var registerDataConsumerRequestDto = new CreateDataConsumerRequestDto
            {
                Name  = userEmail,
                Email = userEmail
            };

            var nationalSocietyId = 1;

            _dataConsumerService.Create(nationalSocietyId, registerDataConsumerRequestDto).ShouldThrowAsync <Exception>();
        }
        public async Task RegisterDataConsumer_WhenIdentityUserCreationSuccessful_ShouldReturnSuccessResult()
        {
            var userEmail = "*****@*****.**";
            var userName  = "******";
            var registerDataConsumerRequestDto = new CreateDataConsumerRequestDto
            {
                Name  = userName,
                Email = userEmail
            };

            var nationalSocietyId = 1;
            var result            = await _dataConsumerService.Create(nationalSocietyId, registerDataConsumerRequestDto);

            await _identityUserRegistrationServiceMock.Received(1).GenerateEmailVerification(userEmail);

            await _verificationEmailServiceMock.Received(1).SendVerificationEmail(Arg.Is <User>(u => u.EmailAddress == userEmail), Arg.Any <string>());

            result.IsSuccess.ShouldBeTrue();
        }
        public async Task RegisterDataConsumer_WhenIdentityUserServiceThrowsResultException_ShouldReturnErrorResultWithAppropriateKey()
        {
            var exception = new ResultException(ResultKey.User.Registration.UserAlreadyExists);

            _identityUserRegistrationServiceMock.When(ius => ius.CreateIdentityUser(Arg.Any <string>(), Arg.Any <Role>()))
            .Do(x => throw exception);

            var userEmail = "*****@*****.**";
            var registerDataConsumerRequestDto = new CreateDataConsumerRequestDto
            {
                Name  = userEmail,
                Email = userEmail
            };

            var nationalSocietyId = 1;
            var result            = await _dataConsumerService.Create(nationalSocietyId, registerDataConsumerRequestDto);


            result.IsSuccess.ShouldBeFalse();
            result.Message.Key.ShouldBe(exception.Result.Message.Key);
        }
Beispiel #6
0
        private async Task <DataConsumerUser> CreateDataConsumerUser(IdentityUser identityUser, int nationalSocietyId, CreateDataConsumerRequestDto createDataConsumerRequestDto)
        {
            var nationalSociety = await _dataContext.NationalSocieties.Include(ns => ns.ContentLanguage)
                                  .SingleOrDefaultAsync(ns => ns.Id == nationalSocietyId);

            if (nationalSociety == null)
            {
                throw new ResultException(ResultKey.User.Registration.NationalSocietyDoesNotExist);
            }

            if (nationalSociety.IsArchived)
            {
                throw new ResultException(ResultKey.User.Registration.CannotCreateUsersInArchivedNationalSociety);
            }

            var defaultUserApplicationLanguage = await _dataContext.ApplicationLanguages
                                                 .SingleOrDefaultAsync(al => al.LanguageCode == nationalSociety.ContentLanguage.LanguageCode);

            var user = new DataConsumerUser
            {
                IdentityUserId        = identityUser.Id,
                EmailAddress          = identityUser.Email,
                Name                  = createDataConsumerRequestDto.Name,
                PhoneNumber           = createDataConsumerRequestDto.PhoneNumber,
                AdditionalPhoneNumber = createDataConsumerRequestDto.AdditionalPhoneNumber,
                Organization          = createDataConsumerRequestDto.Organization,
                ApplicationLanguage   = defaultUserApplicationLanguage
            };

            var userNationalSociety = CreateUserNationalSocietyReference(nationalSociety, user);

            await _dataContext.AddAsync(userNationalSociety);

            await _dataContext.SaveChangesAsync();

            return(user);
        }
Beispiel #7
0
 public async Task <Result> Create(int nationalSocietyId, [FromBody] CreateDataConsumerRequestDto createDataConsumerRequestDto) =>
 await _dataConsumerService.Create(nationalSocietyId, createDataConsumerRequestDto);