BusinessLogic.Logic.Users.FirstTimeAuthenticator.CreateGamingGroupAndSendEmailConfirmation C# (CSharp) Метод

CreateGamingGroupAndSendEmailConfirmation() публичный Метод

public CreateGamingGroupAndSendEmailConfirmation ( ApplicationUser applicationUser, TransactionSource registrationSource ) : Task
applicationUser ApplicationUser
registrationSource TransactionSource
Результат Task
        public async Task<NewlyRegisteredUser> CreateGamingGroupAndSendEmailConfirmation(
            ApplicationUser applicationUser, 
            TransactionSource registrationSource)
        {
            //fetch this first since we want to fail as early as possible if the config entry is missing
            var callbackUrl = this.GetCallbackUrlFromConfig();

            NewlyCreatedGamingGroupResult result = this.gamingGroupSaver.CreateNewGamingGroup(
                applicationUser.UserName + "'s Gaming Group",
                registrationSource,
                applicationUser);

            await this.SendConfirmationEmail(applicationUser, callbackUrl);

            return new NewlyRegisteredUser
            {
                GamingGroupId = result.NewlyCreatedGamingGroup.Id,
                GamingGroupName = result.NewlyCreatedGamingGroup.Name,
                PlayerId = result.NewlyCreatedPlayer.Id,
                PlayerName = result.NewlyCreatedPlayer.Name,
                UserId = applicationUser.Id
            };
        }

Usage Example

        public async Task ItThrowsAConfigurationExceptionIfTheCallbackUrlConfigSettingIsMissing()
        {
            configurationManagerMock = MockRepository.GenerateMock<IConfigurationManager>();
            var appSettingsMock = MockRepository.GenerateMock<IAppSettings>();
            configurationManagerMock.Expect(mock => mock.AppSettings)
                                    .Return(appSettingsMock);
            appSettingsMock.Expect(mock => mock.Get(FirstTimeAuthenticator.APP_KEY_EMAIL_CONFIRMATION_CALLBACK_URL))
                           .Throw(new Exception());

            firstTimeAuthenticator = new FirstTimeAuthenticator(
                gamingGroupSaverMock,
                applicationUserManagerMock,
                configurationManagerMock,
                dataContextMock);

            string exceptionMessage = string.Empty;
            try
            {
                await firstTimeAuthenticator.CreateGamingGroupAndSendEmailConfirmation(applicationUser, registrationSource);
            }
            catch (ConfigurationException expectedException)
            {
                exceptionMessage = expectedException.Message;
            }

            Assert.AreEqual(exceptionMessage, "Missing app setting with key: emailConfirmationCallbackUrl");
        }