using System.IO; using System.Linq; using System.Web.Mvc; using System.Web.Routing; using Autofac; using NUnit.Framework; using Orchard.Environment; using Orchard.Environment.AutofacUtil; using Orchard.Environment.Configuration; using Orchard.Setup.Controllers; using Orchard.Setup.ViewModels; using Orchard.UI.Notify; namespace Orchard.Tests.Modules.Setup { [TestFixture, Ignore("this can't be made to work")] public class SetupControllerTests { private string _tempFolder; private ILifetimeScope _container; [SetUp] public void Init() { //_tempFolder = Path.GetTempFileName(); //File.Delete(_tempFolder); //Directory.CreateDirectory(_tempFolder); //var hostContainer = OrchardStarter.CreateHostContainer(builder => { // builder.RegisterInstance(new ControllerBuilder()); // builder.RegisterInstance(new ViewEngineCollection { new WebFormViewEngine() }); // builder.RegisterInstance(new RouteCollection()); // builder.RegisterInstance(new ModelBinderDictionary()); //}); //hostContainer.Resolve().SetBasePath(_tempFolder); //var host = (DefaultOrchardHost)hostContainer.Resolve(); //_container = host.CreateShellContainer_Obsolete().BeginLifetimeScope(); //var updater = new ContainerUpdater(); //updater.RegisterType(); //updater.Update(_container); //var builder = new ContainerBuilder(); //builder.Register(); //builder.Register().As(); //builder.Register().As(); //builder.Register().As(); //builder.Register().As(); //builder.Register().As(); //_container = builder.Build(); } private string GetMessages() { var notifier = _container.Resolve(); return notifier.List().Aggregate("", (a, b) => a + b.Message.ToString()); } private SetupViewModel GetTestSetupModel() { return new SetupViewModel { AdminUsername = "test1", AdminPassword = "test2", DatabaseOptions = true, SiteName = "test3" }; } [Test] public void IndexNormallyReturnsWithDefaultAdminUsername() { var controller = _container.Resolve(); var result = controller.Index(); Assert.That(result, Is.Not.Null); Assert.That(result, Is.TypeOf()); var viewResult = (ViewResult)result; Assert.That(viewResult.ViewData.Model, Is.TypeOf()); var model2 = (SetupViewModel)viewResult.ViewData.Model; Assert.That(model2.AdminUsername, Is.EqualTo("admin")); } [Test] public void SetupShouldCreateShellSettingsFile() { var model = GetTestSetupModel(); var controller = _container.Resolve(); var result = controller.IndexPOST(model); Assert.That(GetMessages(), Is.StringContaining("Setup succeeded")); Assert.That(result, Is.Not.Null); Assert.That(result, Is.TypeOf()); Assert.That(File.Exists(Path.Combine(_tempFolder, "Sites\\default.txt"))); } [Test] public void BuiltinDatabaseShouldCreateSQLiteFile() { var model = GetTestSetupModel(); var controller = _container.Resolve(); var result = controller.IndexPOST(model); Assert.That(GetMessages(), Is.StringContaining("Setup succeeded")); Assert.That(result, Is.Not.Null); Assert.That(result, Is.TypeOf()); Assert.That(File.Exists(Path.Combine(_tempFolder, "Sites\\default\\orchard.db"))); } } }