using System.IO; using System.Linq; using System.Web.Mvc; using System.Web.Routing; using Autofac; using Autofac.Builder; using JetBrains.Annotations; using Moq; using NUnit.Framework; using Orchard.Data.Builders; using Orchard.Environment; 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 IContainer _container; [SetUp] public void Init() { _tempFolder = Path.GetTempFileName(); File.Delete(_tempFolder); Directory.CreateDirectory(_tempFolder); var hostContainer = OrchardStarter.CreateHostContainer(builder => { builder.Register(new ControllerBuilder()); builder.Register(new ViewEngineCollection { new WebFormViewEngine() }); builder.Register(new RouteCollection()); builder.Register(new ModelBinderDictionary()); }); hostContainer.Resolve().SetBasePath(_tempFolder); var host = (DefaultOrchardHost)hostContainer.Resolve(); _container = host.CreateShellContainer(); _container.Build(builder => { builder.Register(); }); //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(null); 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"))); } } }