コード例 #1
0
        public void Correctly_creates_new_application_instance_if_existing_instance_does_not_exist()
        {
            ApplicationInstance instance = new ApplicationInstance();

            MockRepository                 mocks               = new MockRepository();
            ISystemEnvironment             environment         = mocks.CreateMock <ISystemEnvironment>();
            IConfigurationReader           configurationReader = mocks.CreateMock <IConfigurationReader>();
            IApplicationInstanceRepository repository          = mocks.CreateMock <IApplicationInstanceRepository>();
            IApplicationInstanceFactory    factory             = mocks.CreateMock <IApplicationInstanceFactory>();

            using (mocks.Record())
            {
                Expect.Call(environment.GetMachineName()).Return("MyMachine");
                Expect.Call(configurationReader.GetRequiredSetting("TarantinoWebManagementHttpHost")).Return("www.myapp.com");
                Expect.Call(repository.GetByMaintenanceHostHeaderAndMachineName("www.myapp.com", "MyMachine")).Return(null);
                Expect.Call(factory.Create()).Return(instance);
                repository.Save(instance);
            }

            using (mocks.Playback())
            {
                ICurrentApplicationInstanceRetriever retriever = new CurrentApplicationInstanceRetriever(environment, configurationReader, repository, factory);
                Assert.That(retriever.GetApplicationInstance(), Is.SameAs(instance));
            }

            mocks.VerifyAll();
        }
コード例 #2
0
        public void Creates_new_application_instance()
        {
            MockRepository       mocks               = new MockRepository();
            ISystemEnvironment   systemEnvironment   = mocks.CreateMock <ISystemEnvironment>();
            IAssemblyContext     context             = mocks.CreateMock <IAssemblyContext>();
            IConfigurationReader configurationReader = mocks.CreateMock <IConfigurationReader>();

            using (mocks.Record())
            {
                Expect.Call(context.GetAssemblyVersion()).Return("1.0");
                Expect.Call(systemEnvironment.GetMachineName()).Return("MyMachine");
                Expect.Call(configurationReader.GetRequiredSetting("TarantinoWebManagementHttpHost")).Return("www.myapp.com");
            }

            using (mocks.Playback())
            {
                IApplicationInstanceFactory factory  = new ApplicationInstanceFactory(systemEnvironment, context, configurationReader);
                ApplicationInstance         instance = factory.Create();

                Assert.That(instance.AvailableForLoadBalancing, Is.True);
                Assert.That(instance.MachineName, Is.EqualTo("MyMachine"));
                Assert.That(instance.Version, Is.EqualTo("1.0"));
                Assert.That(instance.MaintenanceHostHeader, Is.EqualTo("www.myapp.com"));
                Assert.That(instance.ApplicationDomain, Is.EqualTo("www.myapp.com"));
            }

            mocks.VerifyAll();
        }
コード例 #3
0
        public bool CurrentUrlIsExternal()
        {
            string applicationHostFromConfigFile = _configurationReader.GetRequiredSetting("TarantinoWebManagementHttpHost");
            string hostFromRequest = _context.GetServerVariable("HTTP_HOST");
            bool   isExternalUrl   = applicationHostFromConfigFile.ToLower() == hostFromRequest.ToLower();

            return(isExternalUrl);
        }
コード例 #4
0
        public ApplicationInstance GetApplicationInstance()
        {
            string machineName           = _environment.GetMachineName();
            string applicationDomainName = _configurationReader.GetRequiredSetting("TarantinoWebManagementHttpHost");
            ApplicationInstance instance = _repository.GetByMaintenanceHostHeaderAndMachineName(applicationDomainName, machineName);

            if (instance == null)
            {
                instance = _factory.Create();
                _repository.Save(instance);
            }

            return(instance);
        }
コード例 #5
0
        public MailMessage CreateEmail(string recipientEmailAddress, string clearTextPassword)
        {
            MailMessage mailMessage = new MailMessage();

            string from = _configurationReader.GetRequiredSetting("SmtpFromAddress");

            mailMessage.From = new MailAddress(from);
            mailMessage.To.Add(recipientEmailAddress);

            mailMessage.Subject = "Your forgotten password";
            mailMessage.Body    = string.Format("Your password is {0}", clearTextPassword);

            return(mailMessage);
        }
コード例 #6
0
        public ApplicationInstance Create()
        {
            string hostHeader = _configurationReader.GetRequiredSetting("TarantinoWebManagementHttpHost");

            ApplicationInstance instance = new ApplicationInstance();

            instance.MachineName = _systemEnvironment.GetMachineName();
            instance.AvailableForLoadBalancing = true;
            instance.Version = _assemblyContext.GetAssemblyVersion();
            instance.MaintenanceHostHeader = hostHeader;
            instance.ApplicationDomain     = hostHeader;

            return(instance);
        }
コード例 #7
0
        public void RedirectToMaintenancePageIfAppropriate()
        {
            try
            {
                bool redirect = _checker.ShouldBeRedirectedToMaintenancePage();

                if (redirect)
                {
                    string maintenancePageUrl = _configurationReader.GetRequiredSetting("TarantinoWebManagementMaintenancePage");
                    _context.ServerTransfer(maintenancePageUrl, false);
                }
            }
            catch
            {
            }
        }
コード例 #8
0
        public void Should_read_smtp_password()
        {
            MockRepository       mocks  = new MockRepository();
            IConfigurationReader reader = mocks.CreateMock <IConfigurationReader>();

            using (mocks.Record())
            {
                Expect.Call(reader.GetRequiredSetting("SmtpPassword")).Return("mypass");
            }

            using (mocks.Playback())
            {
                IApplicationSettings settings = new ApplicationSettings(reader);
                Assert.That(settings.GetSmtpPassword(), Is.EqualTo("mypass"));
            }
        }
コード例 #9
0
        public void Determines_that_url_is_internal_when_application_domain_names_match_except_for_casing()
        {
            MockRepository       mocks               = new MockRepository();
            IWebContext          context             = mocks.CreateMock <IWebContext>();
            IConfigurationReader configurationReader = mocks.CreateMock <IConfigurationReader>();

            using (mocks.Record())
            {
                Expect.Call(context.GetServerVariable("HTTP_HOST")).Return("www1.myapp.com");
                Expect.Call(configurationReader.GetRequiredSetting("TarantinoWebManagementHttpHost")).Return("www.MyApp.com");
            }

            using (mocks.Playback())
            {
                IExternalUrlChecker urlChecker = new ExternalUrlChecker(context, configurationReader);
                Assert.That(urlChecker.CurrentUrlIsExternal(), Is.False);
            }
        }
コード例 #10
0
        public void Does_not_redirect_if_an_exception_takes_place()
        {
            MockRepository mocks = new MockRepository();

            IConfigurationReader           reader  = mocks.CreateMock <IConfigurationReader>();
            IMaintenanceRedirectionChecker checker = mocks.CreateMock <IMaintenanceRedirectionChecker>();

            using (mocks.Record())
            {
                Expect.Call(checker.ShouldBeRedirectedToMaintenancePage()).Return(true);
                Expect.Call(reader.GetRequiredSetting("TarantinoWebManagementMaintenancePage")).Throw(new Exception());
            }

            using (mocks.Playback())
            {
                IMaintenancePageRedirector redirector = new MaintenancePageRedirector(null, reader, checker);
                redirector.RedirectToMaintenancePageIfAppropriate();
            }
        }
コード例 #11
0
        public void Does_redirect_if_appropriate()
        {
            MockRepository mocks = new MockRepository();

            IWebContext                    context = mocks.CreateMock <IWebContext>();
            IConfigurationReader           reader  = mocks.CreateMock <IConfigurationReader>();
            IMaintenanceRedirectionChecker checker = mocks.CreateMock <IMaintenanceRedirectionChecker>();

            using (mocks.Record())
            {
                Expect.Call(checker.ShouldBeRedirectedToMaintenancePage()).Return(true);
                Expect.Call(reader.GetRequiredSetting("TarantinoWebManagementMaintenancePage")).Return("DownForMaintenance.aspx");
                context.ServerTransfer("DownForMaintenance.aspx", false);
            }

            using (mocks.Playback())
            {
                IMaintenancePageRedirector redirector = new MaintenancePageRedirector(context, reader, checker);
                redirector.RedirectToMaintenancePageIfAppropriate();
            }
        }
コード例 #12
0
        public void Should_construct_forgotten_password_email()
        {
            MockRepository       mocks  = new MockRepository();
            IConfigurationReader reader = mocks.CreateMock <IConfigurationReader>();

            using (mocks.Record())
            {
                Expect.Call(reader.GetRequiredSetting("SmtpFromAddress")).Return("*****@*****.**");
            }

            using (mocks.Playback())
            {
                IForgottenPasswordMailFactory factory = new ForgottenPasswordMailFactory(reader);
                MailMessage message = factory.CreateEmail("*****@*****.**", "clearTextPassword");

                Assert.That(message.Subject, Is.EqualTo("Your forgotten password"));
                Assert.That(message.Body, Is.EqualTo("Your password is clearTextPassword"));
                Assert.That(message.From.Address, Is.EqualTo("*****@*****.**"));
                Assert.That(message.To.Count, Is.EqualTo(1));
                Assert.That(message.To[0].Address, Is.EqualTo("*****@*****.**"));
            }

            mocks.VerifyAll();
        }
コード例 #13
0
        public string GetSmtpServer()
        {
            string setting = _configurationReader.GetRequiredSetting("SmtpServer");

            return(setting);
        }