private UserWithCredential GetMonitoringAccount()
        {
            UserWithCredential result     = default(UserWithCredential);
            string             datacenter = Datacenter.IsMicrosoftHostedOnly(true) ? ".Datacenter" : string.Empty;
            ADSite             localSite  = this.ConfigSession.GetLocalSite();

            try
            {
                result = CommonTestTasks.GetDefaultTestAccount(new CommonTestTasks.ClientAccessContext
                {
                    Instance             = this,
                    MonitoringContext    = true,
                    ConfigurationSession = this.ConfigSession,
                    RecipientSession     = this.RecipientSession,
                    Site          = localSite,
                    WindowsDomain = localSite.Id.DomainId.ToCanonicalName()
                });
            }
            catch (Exception ex)
            {
                base.WriteError(new TestWebServicesTaskException(Strings.ErrorTestMailboxNotFound(ExchangeSetupContext.ScriptPath, datacenter, ex.ToString())), ErrorCategory.InvalidData, null);
            }
            if (string.IsNullOrEmpty(result.Credential.Password))
            {
                base.WriteError(new TestWebServicesTaskException(Strings.ErrorTestMailboxPasswordNotFound(result.User.Identity.ToString(), ExchangeSetupContext.ScriptPath, datacenter)), ErrorCategory.InvalidData, null);
            }
            return(result);
        }
        internal static UserWithCredential GetDefaultTestAccount(CommonTestTasks.ClientAccessContext context)
        {
            SmtpAddress?smtpAddress;

            if (TestConnectivityCredentialsManager.IsExchangeMultiTenant())
            {
                smtpAddress = TestConnectivityCredentialsManager.GetMultiTenantAutomatedTaskUser(context.Instance, context.ConfigurationSession, context.Site);
            }
            else
            {
                smtpAddress = TestConnectivityCredentialsManager.GetEnterpriseAutomatedTaskUser(context.Site, context.WindowsDomain);
            }
            if (smtpAddress == null)
            {
                throw new MailboxNotFoundException(new MailboxIdParameter(), null);
            }
            MailboxIdParameter localMailboxId = new MailboxIdParameter(string.Format("{0}\\{1}", smtpAddress.Value.Domain, smtpAddress.Value.Local));
            ADUser             aduser         = CommonTestTasks.EnsureSingleObject <ADUser>(() => localMailboxId.GetObjects <ADUser>(null, context.RecipientSession));

            if (aduser == null)
            {
                throw new MailboxNotFoundException(new MailboxIdParameter(smtpAddress.ToString()), null);
            }
            ExchangePrincipal exchangePrincipal = ExchangePrincipal.FromADUser(aduser, null);

            if (exchangePrincipal == null)
            {
                throw new MailboxNotFoundException(new MailboxIdParameter(smtpAddress.ToString()), null);
            }
            NetworkCredential networkCredential  = new NetworkCredential(smtpAddress.Value.ToString(), string.Empty, context.WindowsDomain);
            NetworkCredential networkCredential2 = CommonTestTasks.MakeCasCredential(networkCredential);
            bool flag = false;
            LocalizedException ex;

            if (Datacenter.IsLiveIDForExchangeLogin(true) || context.MonitoringContext)
            {
                ex = TestConnectivityCredentialsManager.LoadAutomatedTestCasConnectivityInfo(exchangePrincipal, networkCredential2);
            }
            else
            {
                ex = TestConnectivityCredentialsManager.ResetAutomatedCredentialsAndVerify(exchangePrincipal, networkCredential2, false, out flag);
            }
            if (ex != null)
            {
                throw ex;
            }
            networkCredential.Domain   = smtpAddress.Value.Domain;
            networkCredential.Password = networkCredential2.Password;
            return(new UserWithCredential
            {
                User = aduser,
                Credential = networkCredential
            });
        }