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(); }
public void Set(string key, ApplicationInstance item) { DateTime expiration = _clock.GetCurrentDateTime().AddMinutes(1); _context.SetItem(key, item); _context.SetCacheItem(key, item, expiration, TimeSpan.Zero); }
public void Should_enable_load_balancing_when_requested() { ApplicationInstance instance = new ApplicationInstance(); instance.AvailableForLoadBalancing = false; MockRepository mocks = new MockRepository(); IApplicationInstanceContext instanceContext = mocks.CreateMock<IApplicationInstanceContext>(); IWebContext context = mocks.CreateMock<IWebContext>(); ISecureAvailabilityStatusUpdater updater = mocks.CreateMock<ISecureAvailabilityStatusUpdater>(); using (mocks.Record()) { Expect.Call(instanceContext.GetCurrent()).Return(instance); Expect.Call(context.GetRequestItem(LoadBalanceStatusManager.ENABLED_PARAM)).Return("True"); Expect.Call(updater.SetStatus(true)).Return("My error message"); } using (mocks.Playback()) { ILoadBalanceStatusManager manager = new LoadBalanceStatusManager(instanceContext, context, updater); string errorMessage = manager.HandleLoadBalanceRequest(); Assert.That(errorMessage, Is.EqualTo("My error message")); } }
string ListApplications(ApplicationInstance applicationInstance) { System.Text.StringBuilder output = new System.Text.StringBuilder(); WriteCSS(); if (_authenticated) { output.AppendFormat("<form method=post action=''>"); } output.Append("<table >\n"); output.AppendFormat("<tr><td><a href='Tarantino.WebManagement.Application.axd'>Back</a></td><td></td></tr>"); output.AppendFormat("<tr><td>Machine Name</td><td>{0}</td></tr>", applicationInstance.MachineName); output.AppendFormat("<tr><td>Version</td><td>{0}</td></tr>", applicationInstance.Version); output.AppendFormat("<tr><td>Unique Hostname</td><td><input type=\"text\" name=\"hostname\" value=\"{0}\"></td></tr>", applicationInstance.UniqueHostHeader); output.AppendFormat("<tr><td>Shared Hostname</td><td>{0}</td></tr>", applicationInstance.MaintenanceHostHeader); output.AppendFormat("<tr><td>Load balanaced</td><td>{0}</td></tr>", applicationInstance.AvailableForLoadBalancing ? "Online" : "Offline"); output.AppendFormat("<tr><td>Maintenance Mode</td><td>{0}</td></tr>", applicationInstance.DownForMaintenance ? "Down" : "Online"); output.Append("</table>\n"); if (_authenticated) { output.AppendFormat("<input type=submit value='Submit' />"); output.AppendFormat("</form>"); } return output.ToString(); }
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; }
public string BuildMRowHtml(ApplicationInstance applicationInstance) { string template = fileLocator.ReadTextFile("Tarantino.Core", ApplicationListingBodyView.RowNFragment); tokenReplacer.Text = template; tokenReplacer.Replace("INSTANCE_ID", applicationInstance.Id.ToString()); tokenReplacer.Replace("MAINTANANCE_HOST_HEADER", applicationInstance.MaintenanceHostHeader); tokenReplacer.Replace("MAINTANANCE_STATUS", applicationInstance.DownForMaintenance ? "Offline" : "Online"); tokenReplacer.Replace("MACHINE_NAME", applicationInstance.MachineName); tokenReplacer.Replace("LOAD_BALANCE_STATUS", applicationInstance.AvailableForLoadBalancing ? "Online" : "Offline"); tokenReplacer.Replace("NEW_LOAD_BALANCE_STATUS", (!applicationInstance.AvailableForLoadBalancing).ToString()); tokenReplacer.Replace("VERSION", applicationInstance.Version); tokenReplacer.Replace("HOST_HEADER", applicationInstance.UniqueHostHeader); return tokenReplacer.Text; }
public void Can_persist_application_instance() { var instance = new ApplicationInstance { AvailableForLoadBalancing = true, ApplicationDomain = "Domain...", CacheRefreshQueryString = "QueryString", DownForMaintenance = true, MachineName = "My Machine", MaintenanceHostHeader = "HostHeader", UniqueHostHeader = "Unique Host Header", Version = "Version" }; AssertObjectCanBePersisted(instance); }
public void Correctly_retrieves_application_instance_from_first_level_cache() { ApplicationInstance instance = new ApplicationInstance(); MockRepository mocks = new MockRepository(); IWebContext webContext = mocks.CreateMock<IWebContext>(); using (mocks.Record()) { Expect.Call(webContext.GetItem<ApplicationInstance>(ApplicationInstance.CacheKey)).Return(instance); } using (mocks.Playback()) { IApplicationInstanceCache cache = new ApplicationInstanceCache(webContext, null); Assert.That(cache.GetCurrent(), Is.SameAs(instance)); } }
public void Can_correctly_save_application_instance() { var instance = new ApplicationInstance(); var mocks = new MockRepository(); var objectRepository = mocks.CreateMock<IPersistentObjectRepository>(); using (mocks.Record()) { objectRepository.ConfigurationFile = "webmanagement.hibernate.cfg.xml"; objectRepository.Save(instance); } using (mocks.Playback()) { IApplicationInstanceRepository repository = new ApplicationInstanceRepository(objectRepository); repository.Save(instance); } }
public void Retrieves_application_instance_from_cache() { ApplicationInstance instance = new ApplicationInstance(); MockRepository mocks = new MockRepository(); IApplicationInstanceCache cache = mocks.CreateMock<IApplicationInstanceCache>(); using (mocks.Record()) { Expect.Call(cache.GetCurrent()).Return(instance); } using (mocks.Playback()) { IApplicationInstanceContext instanceContext = new ApplicationInstanceContext(cache, null); Assert.That(instanceContext.GetCurrent(), Is.SameAs(instance)); } mocks.VerifyAll(); }
public void Correctly_caches_application_instance() { ApplicationInstance instance = new ApplicationInstance(); MockRepository mocks = new MockRepository(); IWebContext context = mocks.CreateMock<IWebContext>(); ISystemClock clock = mocks.CreateMock<ISystemClock>(); using (mocks.Record()) { Expect.Call(clock.GetCurrentDateTime()).Return(new DateTime(2007, 4, 15)); context.SetItem(ApplicationInstance.CacheKey, instance); context.SetCacheItem(ApplicationInstance.CacheKey, instance, new DateTime(2007, 4, 15).AddMinutes(1), TimeSpan.Zero); } using (mocks.Playback()) { IApplicationInstanceCache cache = new ApplicationInstanceCache(context, clock); cache.Set(ApplicationInstance.CacheKey, instance); } }
public void Correctly_returns_html_for_error_non_authenticated_page_with_enabled_instance() { string errorMessages = "An error has occured"; string bodyTemplate = "body template"; ApplicationInstance instance = new ApplicationInstance(); instance.MachineName = "MyMachine"; instance.AvailableForLoadBalancing = true; MockRepository mocks = new MockRepository(); IApplicationInstanceContext context = mocks.CreateMock<IApplicationInstanceContext>(); IResourceFileLocator fileLocator = mocks.CreateMock<IResourceFileLocator>(); ITokenReplacer replacer = mocks.CreateMock<ITokenReplacer>(); IAdministratorSecurityChecker securityChecker = mocks.CreateMock<IAdministratorSecurityChecker>(); using (mocks.Record()) { Expect.Call(securityChecker.IsCurrentUserAdministrator()).Return(false); Expect.Call(context.GetCurrent()).Return(instance); Expect.Call(fileLocator.ReadTextFile("Tarantino.Core", LoadBalancerBodyView.LoadBalancerBodyTemplate)).Return(bodyTemplate); replacer.Text = bodyTemplate; replacer.Replace("ERROR_MESSAGE", errorMessages); replacer.Replace("CURRENT_STATE", "enabled"); replacer.Replace("MACHINE", "MyMachine"); replacer.Replace("CHANGE_STATE_LINK", string.Empty); Expect.Call(replacer.Text).Return("formatted HTML"); } using (mocks.Playback()) { ILoadBalancerBodyView view = new LoadBalancerBodyView(context, fileLocator, replacer, securityChecker); string html = view.BuildHtml(errorMessages); Assert.That(html, Is.EqualTo("formatted HTML")); } }
public void Can_correctly_gets_single_application_instance() { var id = Guid.NewGuid(); var instance = new ApplicationInstance(); var mocks = new MockRepository(); var objectRepository = mocks.CreateMock<IPersistentObjectRepository>(); using (mocks.Record()) { objectRepository.ConfigurationFile = "webmanagement.hibernate.cfg.xml"; Expect.Call(objectRepository.GetById<ApplicationInstance>(id)).Return(instance); } using (mocks.Playback()) { IApplicationInstanceRepository repository = new ApplicationInstanceRepository(objectRepository); var actualInstance = repository.GetById(id); Assert.That(actualInstance, Is.SameAs(instance)); } }
public string BuildHtml() { if (checker.IsCurrentUserAdministrator()) { IList<ApplicationInstance> applications = new List<ApplicationInstance>(applicationInstanceRepository.GetAll()); string bodyTemplate = fileLocator.ReadTextFile("Tarantino.Core", ApplicationListingBodyView.BodyTemplate); replacer.Text = bodyTemplate; ApplicationInstance lastInstance = new ApplicationInstance(); string rowHTMl = ""; foreach(ApplicationInstance instance in applications) { if(instance.MaintenanceHostHeader!=lastInstance.MaintenanceHostHeader) { int instanceCount= GetInstanceCount(applications,instance.MaintenanceHostHeader); rowHTMl += applicationListingRowView.BuildFirstRowHtml(instance,instanceCount); } else { rowHTMl += applicationListingRowView.BuildMRowHtml(instance); } lastInstance = instance; } replacer.Replace("ROWS", rowHTMl); } else { replacer.Text = "Unauthorized request."; } return replacer.Text; }
public void View_should_build_html_for_row_one() { ApplicationInstance instance = new ApplicationInstance(); instance.MaintenanceHostHeader = "1"; instance.MachineName = "2"; instance.Id = Guid.NewGuid(); MockRepository mocks = new MockRepository(); IResourceFileLocator fileLocator = mocks.CreateMock<IResourceFileLocator>(); ITokenReplacer tokenReplacer = mocks.CreateMock<ITokenReplacer>(); using (mocks.Record()) { Expect.Call(fileLocator.ReadTextFile("Tarantino.Core", ApplicationListingBodyView.Row1Fragment)).Return( "template"); tokenReplacer.Text = "template"; tokenReplacer.Replace("INSTANCE_COUNT", "2"); tokenReplacer.Replace("INSTANCE_ID", instance.Id.ToString()); tokenReplacer.Replace("MAINTANANCE_HOST_HEADER", instance.MaintenanceHostHeader); tokenReplacer.Replace("MAINTANANCE_STATUS", instance.DownForMaintenance ? "Offline" : "Online"); tokenReplacer.Replace("MACHINE_NAME", instance.MachineName); tokenReplacer.Replace("LOAD_BALANCE_STATUS", instance.AvailableForLoadBalancing ? "Online" : "Offline"); tokenReplacer.Replace("NEW_LOAD_BALANCE_STATUS", (!instance.AvailableForLoadBalancing).ToString()); tokenReplacer.Replace("VERSION", instance.Version); tokenReplacer.Replace("HOST_HEADER", instance.UniqueHostHeader); Expect.Call(tokenReplacer.Text).Return("html"); } using (mocks.Playback()) { ApplicationListingRowView view = new ApplicationListingRowView(fileLocator, tokenReplacer); string html = view.BuildFirstRowHtml(instance, 2); Assert.That(html, Is.EqualTo("html")); } mocks.VerifyAll(); }
public void Return_normal_status_200_message_if_instance_should_be_online_and_status_not_being_changed() { ApplicationInstance instance = new ApplicationInstance(); instance.AvailableForLoadBalancing = true; MockRepository mocks = new MockRepository(); IApplicationInstanceContext instanceContext = mocks.CreateMock<IApplicationInstanceContext>(); IWebContext context = mocks.CreateMock<IWebContext>(); using (mocks.Record()) { Expect.Call(instanceContext.GetCurrent()).Return(instance); Expect.Call(context.GetRequestItem(LoadBalanceStatusManager.ENABLED_PARAM)).Return(null); } using (mocks.Playback()) { ILoadBalanceStatusManager manager = new LoadBalanceStatusManager(instanceContext, context, null); string errorMessage = manager.HandleLoadBalanceRequest(); Assert.That(errorMessage, Is.Empty); } }
private void performTest(bool isRedirectableExtension, bool isExternalUrl, bool isDownForMaintenance, bool shouldBeRedirected) { ApplicationInstance instance = new ApplicationInstance(); instance.DownForMaintenance = isDownForMaintenance; MockRepository mocks = new MockRepository(); IFileExtensionChecker extensionChecker = mocks.CreateMock<IFileExtensionChecker>(); IExternalUrlChecker urlChecker = mocks.CreateMock<IExternalUrlChecker>(); IApplicationInstanceContext context = mocks.CreateMock<IApplicationInstanceContext>(); using (mocks.Record()) { Expect.Call(extensionChecker.CurrentUrlCanBeRedirected()).Return(isRedirectableExtension); Expect.Call(urlChecker.CurrentUrlIsExternal()).Return(isExternalUrl); Expect.Call(context.GetCurrent()).Return(instance); } using (mocks.Playback()) { IMaintenanceRedirectionChecker checker = new MaintenanceRedirectionChecker(extensionChecker, urlChecker, context); Assert.That(checker.ShouldBeRedirectedToMaintenancePage(), Is.EqualTo(shouldBeRedirected)); } }
public void Can_correctly_gets_all_application_instances() { var instance1 = new ApplicationInstance(); var instance2 = new ApplicationInstance(); var instances = new[] { instance1, instance2 }; var mocks = new MockRepository(); var objectRepository = mocks.CreateMock<IPersistentObjectRepository>(); using (mocks.Record()) { objectRepository.ConfigurationFile = "webmanagement.hibernate.cfg.xml"; Expect.Call(objectRepository.GetAll<ApplicationInstance>()).Return(instances); } using (mocks.Playback()) { IApplicationInstanceRepository repository = new ApplicationInstanceRepository(objectRepository); IEnumerable<ApplicationInstance> actualInstances = repository.GetAll(); EnumerableAssert.That(actualInstances, Is.EqualTo(instances)); } }
public void Retrieves_application_instance_when_not_found_in_cache() { ApplicationInstance instance = new ApplicationInstance(); MockRepository mocks = new MockRepository(); IApplicationInstanceCache cache = mocks.CreateMock<IApplicationInstanceCache>(); ICurrentApplicationInstanceRetriever retriever = mocks.CreateMock<ICurrentApplicationInstanceRetriever>(); using (mocks.Record()) { Expect.Call(cache.GetCurrent()).Return(null); Expect.Call(retriever.GetApplicationInstance()).Return(instance); cache.Set(ApplicationInstance.CacheKey, instance); } using (mocks.Playback()) { IApplicationInstanceContext instanceContext = new ApplicationInstanceContext(cache, retriever); Assert.That(instanceContext.GetCurrent(), Is.SameAs(instance)); } mocks.VerifyAll(); }
public void Correctly_disables_application_instance() { ApplicationInstance instance = new ApplicationInstance(); MockRepository mocks = new MockRepository(); IApplicationInstanceRepository repository = mocks.CreateMock<IApplicationInstanceRepository>(); IApplicationInstanceContext context = mocks.CreateMock<IApplicationInstanceContext>(); using (mocks.Record()) { Expect.Call(context.GetCurrent()).Return(instance); repository.Save(instance); } using (mocks.Playback()) { IAvailabilityStatusUpdater updater = new AvailabilityStatusUpdater(repository, context); updater.SetAvailabilityStatus(false); Assert.That(instance.AvailableForLoadBalancing, Is.False); } mocks.VerifyAll(); }
public void Property_accessors_work() { ApplicationInstance instance = new ApplicationInstance(); Assert.AreEqual(null, instance.MachineName); instance.MachineName = "MachineName"; Assert.AreEqual("MachineName", instance.MachineName); Assert.AreEqual(null, instance.ApplicationDomain); instance.ApplicationDomain = "ApplicationDomain"; Assert.AreEqual("ApplicationDomain", instance.ApplicationDomain); Assert.AreEqual(null, instance.UniqueHostHeader); instance.UniqueHostHeader = "UniqueHostHeader"; Assert.AreEqual("UniqueHostHeader", instance.UniqueHostHeader); Assert.AreEqual(null, instance.CacheRefreshQueryString); instance.CacheRefreshQueryString = "CacheRefreshQueryString"; Assert.AreEqual("CacheRefreshQueryString", instance.CacheRefreshQueryString); Assert.AreEqual(null, instance.MaintenanceHostHeader); instance.MaintenanceHostHeader = "MaintenanceHostHeader"; Assert.AreEqual("MaintenanceHostHeader", instance.MaintenanceHostHeader); Assert.AreEqual(false, instance.DownForMaintenance); instance.DownForMaintenance = true; Assert.AreEqual(true, instance.DownForMaintenance); Assert.AreEqual(false, instance.AvailableForLoadBalancing); instance.AvailableForLoadBalancing = true; Assert.AreEqual(true, instance.AvailableForLoadBalancing); Assert.AreEqual(null, instance.Version); instance.Version = "Version"; Assert.AreEqual("Version", instance.Version); }
protected override void SetupDatabase() { _instance1 = new ApplicationInstance(); _instance2 = new ApplicationInstance(); _instance3 = new ApplicationInstance(); _instance4 = new ApplicationInstance(); _instance1.MaintenanceHostHeader = "Domain1"; _instance2.MaintenanceHostHeader = "Domain1"; _instance1.ApplicationDomain = "Domain1"; _instance2.ApplicationDomain = "Domain2"; _instance1.MachineName = "Machine1"; _instance2.MachineName = "Machine2"; _instance3.MachineName = "Machine1"; _instance4.MachineName = "Machine2"; _instance3.UniqueHostHeader = "HostHeader1"; _instance4.UniqueHostHeader = "HostHeader2"; Save(_instance1, _instance2, _instance3, _instance4); }
public void Save(ApplicationInstance instance) { _objectRepository.Save(instance); }
public void Delete(ApplicationInstance instance) { _objectRepository.Delete(instance); }
public void Can_correctly_gets_application_instances_by_host_header() { var instance1 = new ApplicationInstance(); var instance2 = new ApplicationInstance(); var instances = new[] { instance1, instance2 }; var criteria = new CriterionSet(); criteria.AddCriterion(new Criterion("UniqueHostHeader", "MyHostHeader")); var mocks = new MockRepository(); var objectRepository = mocks.CreateMock<IPersistentObjectRepository>(); using (mocks.Record()) { objectRepository.ConfigurationFile = "webmanagement.hibernate.cfg.xml"; Expect.Call(objectRepository.FindAll<ApplicationInstance>(criteria)).Return(instances); } using (mocks.Playback()) { IApplicationInstanceRepository repository = new ApplicationInstanceRepository(objectRepository); IEnumerable<ApplicationInstance> actualInstances = repository.GetByHostHeader("MyHostHeader"); EnumerableAssert.That(actualInstances, Is.EqualTo(instances)); } }
public void Can_correctly_gets_application_instances_by_machine_name_and_maintenance_host_header() { var instance = new ApplicationInstance(); var criteria = new CriterionSet(); criteria.AddCriterion(new Criterion("MachineName", "MyMachine")); criteria.AddCriterion(new Criterion("MaintenanceHostHeader", "MyDomain")); var mocks = new MockRepository(); var objectRepository = mocks.CreateMock<IPersistentObjectRepository>(); using (mocks.Record()) { objectRepository.ConfigurationFile = "webmanagement.hibernate.cfg.xml"; Expect.Call(objectRepository.FindFirst<ApplicationInstance>(criteria)).Return(instance); } using (mocks.Playback()) { IApplicationInstanceRepository repository = new ApplicationInstanceRepository(objectRepository); var actualInstance = repository.GetByMaintenanceHostHeaderAndMachineName("MyDomain", "MyMachine"); Assert.That(actualInstance, Is.SameAs(instance)); } }