7173 - Refactored to inject IUmbracoVersion instead of using Current.

This commit is contained in:
Bjarke Berg
2019-11-20 10:50:15 +01:00
parent 100d4431dc
commit 4d5d94d3ed
23 changed files with 111 additions and 86 deletions

View File

@@ -29,13 +29,23 @@ namespace Umbraco.Core.Migrations.Install
private readonly IKeyValueService _keyValueService;
private readonly ILogger _logger;
private readonly IIOHelper _ioHelper;
private readonly IUmbracoVersion _umbracoVersion;
private DatabaseSchemaResult _databaseSchemaValidationResult;
/// <summary>
/// Initializes a new instance of the <see cref="DatabaseBuilder"/> class.
/// </summary>
public DatabaseBuilder(IScopeProvider scopeProvider, IGlobalSettings globalSettings, IUmbracoDatabaseFactory databaseFactory, IRuntimeState runtime, ILogger logger, IMigrationBuilder migrationBuilder, IKeyValueService keyValueService, IIOHelper ioHelper)
public DatabaseBuilder(
IScopeProvider scopeProvider,
IGlobalSettings globalSettings,
IUmbracoDatabaseFactory databaseFactory,
IRuntimeState runtime,
ILogger logger,
IMigrationBuilder migrationBuilder,
IKeyValueService keyValueService,
IIOHelper ioHelper,
IUmbracoVersion umbracoVersion)
{
_scopeProvider = scopeProvider;
_globalSettings = globalSettings;
@@ -45,6 +55,7 @@ namespace Umbraco.Core.Migrations.Install
_migrationBuilder = migrationBuilder;
_keyValueService = keyValueService;
_ioHelper = ioHelper;
_umbracoVersion = umbracoVersion;
}
#region Status
@@ -369,7 +380,7 @@ namespace Umbraco.Core.Migrations.Install
return _databaseSchemaValidationResult;
var database = scope.Database;
var dbSchema = new DatabaseSchemaCreator(database, _logger);
var dbSchema = new DatabaseSchemaCreator(database, _logger, _umbracoVersion);
_databaseSchemaValidationResult = dbSchema.ValidateSchema();
scope.Complete();
return _databaseSchemaValidationResult;
@@ -419,7 +430,7 @@ namespace Umbraco.Core.Migrations.Install
if (_runtime.Level == RuntimeLevel.Run)
throw new Exception("Umbraco is already configured!");
var creator = new DatabaseSchemaCreator(database, _logger);
var creator = new DatabaseSchemaCreator(database, _logger, _umbracoVersion);
creator.InitializeDatabaseSchema();
message = message + "<p>Installation completed!</p>";

View File

@@ -15,11 +15,13 @@ namespace Umbraco.Core.Migrations.Install
{
private readonly IDatabase _database;
private readonly ILogger _logger;
private readonly IUmbracoVersion _umbracoVersion;
public DatabaseDataCreator(IDatabase database, ILogger logger)
public DatabaseDataCreator(IDatabase database, ILogger logger, IUmbracoVersion umbracoVersion)
{
_database = database;
_logger = logger;
_umbracoVersion = umbracoVersion;
}
/// <summary>
@@ -324,7 +326,7 @@ namespace Umbraco.Core.Migrations.Install
{
// on install, initialize the umbraco migration plan with the final state
var upgrader = new Upgrader(new UmbracoPlan());
var upgrader = new Upgrader(new UmbracoPlan(_umbracoVersion));
var stateValueKey = upgrader.StateValueKey;
var finalState = upgrader.Plan.FinalState;

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using NPoco;
using Umbraco.Core.Configuration;
using Umbraco.Core.Events;
using Umbraco.Core.Logging;
using Umbraco.Core.Persistence;
@@ -18,11 +19,13 @@ namespace Umbraco.Core.Migrations.Install
{
private readonly IUmbracoDatabase _database;
private readonly ILogger _logger;
private readonly IUmbracoVersion _umbracoVersion;
public DatabaseSchemaCreator(IUmbracoDatabase database, ILogger logger)
public DatabaseSchemaCreator(IUmbracoDatabase database, ILogger logger, IUmbracoVersion umbracoVersion)
{
_database = database;
_logger = logger;
_umbracoVersion = umbracoVersion;
}
private ISqlSyntaxProvider SqlSyntax => _database.SqlContext.SqlSyntax;
@@ -125,7 +128,7 @@ namespace Umbraco.Core.Migrations.Install
if (e.Cancel == false)
{
var dataCreation = new DatabaseDataCreator(_database, _logger);
var dataCreation = new DatabaseDataCreator(_database, _logger,_umbracoVersion);
foreach (var table in OrderedTables)
CreateTable(false, table, dataCreation);
}
@@ -395,7 +398,7 @@ namespace Umbraco.Core.Migrations.Install
where T : new()
{
var tableType = typeof(T);
CreateTable(overwrite, tableType, new DatabaseDataCreator(_database, _logger));
CreateTable(overwrite, tableType, new DatabaseDataCreator(_database, _logger, _umbracoVersion));
}
/// <summary>

View File

@@ -14,16 +14,16 @@ namespace Umbraco.Core.Migrations.Upgrade
/// </summary>
public class UmbracoPlan : MigrationPlan
{
private readonly IUmbracoVersion _umbracoVersion;
private const string InitPrefix = "{init-";
private const string InitSuffix = "}";
private IUmbracoVersion UmbracoVersion => Current.UmbracoVersion;
/// <summary>
/// Initializes a new instance of the <see cref="UmbracoPlan"/> class.
/// </summary>
public UmbracoPlan()
public UmbracoPlan(IUmbracoVersion umbracoVersion)
: base(Constants.System.UmbracoUpgradePlanName)
{
_umbracoVersion = umbracoVersion;
DefinePlan();
}
@@ -66,13 +66,13 @@ namespace Umbraco.Core.Migrations.Upgrade
throw new InvalidOperationException($"Could not get current version from web.config {Constants.AppSettings.ConfigurationStatus} appSetting.");
// cannot go back in time
if (currentVersion > UmbracoVersion.SemanticVersion)
throw new InvalidOperationException($"Version {currentVersion} cannot be downgraded to {UmbracoVersion.SemanticVersion}.");
if (currentVersion > _umbracoVersion.SemanticVersion)
throw new InvalidOperationException($"Version {currentVersion} cannot be downgraded to {_umbracoVersion.SemanticVersion}.");
// only from 7.14.0 and above
var minVersion = new SemVersion(7, 14);
if (currentVersion < minVersion)
throw new InvalidOperationException($"Version {currentVersion} cannot be migrated to {UmbracoVersion.SemanticVersion}."
throw new InvalidOperationException($"Version {currentVersion} cannot be migrated to {_umbracoVersion.SemanticVersion}."
+ $" Please upgrade first to at least {minVersion}.");
// Force versions between 7.14.*-7.15.* into into 7.14 initial state. Because there is no db-changes,
@@ -89,7 +89,7 @@ namespace Umbraco.Core.Migrations.Upgrade
{
if (TryGetInitStateVersion(state, out var initVersion))
{
throw new InvalidOperationException($"Version {UmbracoVersion.SemanticVersion} does not support migrating from {initVersion}."
throw new InvalidOperationException($"Version {_umbracoVersion.SemanticVersion} does not support migrating from {initVersion}."
+ $" Please verify which versions support migrating from {initVersion}.");
}

View File

@@ -249,7 +249,7 @@ namespace Umbraco.Core
protected virtual bool EnsureUmbracoUpgradeState(IUmbracoDatabaseFactory databaseFactory, ILogger logger)
{
var upgrader = new Upgrader(new UmbracoPlan());
var upgrader = new Upgrader(new UmbracoPlan(_umbracoVersion));
var stateValueKey = upgrader.StateValueKey;
// no scope, no service - just directly accessing the database

View File

@@ -5,6 +5,7 @@ using System.IO;
using System.Linq;
using BenchmarkDotNet.Attributes;
using Umbraco.Core;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Migrations.Install;
using Umbraco.Core.Persistence;
@@ -51,8 +52,8 @@ namespace Umbraco.Tests.Benchmarks
{
var logger = new DebugDiagnosticsLogger(new MessageTemplates());
var path = TestHelper.CurrentAssemblyDirectory;
SetupSqlCe(path, logger);
var umbracoVersion = TestHelper.GetUmbracoVersion();
SetupSqlCe(path, logger, umbracoVersion);
SetupSqlServer(logger);
@@ -83,7 +84,7 @@ namespace Umbraco.Tests.Benchmarks
)");
}
private void SetupSqlCe(string path, ILogger logger)
private void SetupSqlCe(string path, ILogger logger, IUmbracoVersion umbracoVersion)
{
var dbName = string.Concat("Umb", Guid.NewGuid(), ".sdf");
AppDomain.CurrentDomain.SetData("DataDirectory", path);
@@ -102,7 +103,7 @@ namespace Umbraco.Tests.Benchmarks
//use the db to create the initial schema so we can reuse in each bench
using (_dbSqlCe = GetSqlCeDatabase(sqlCeConnectionString, logger))
{
var creation = new DatabaseSchemaCreator(_dbSqlCe, logger);
var creation = new DatabaseSchemaCreator(_dbSqlCe, logger, umbracoVersion);
creation.InitializeDatabaseSchema();
}
_initDbBytes = File.ReadAllBytes(_dbFile);

View File

@@ -24,13 +24,6 @@ namespace Umbraco.Tests.Configurations
Current.IOHelper.Root = _root;
}
[Ignore("fixme - ignored test")]
[Test]
public void Is_Version_From_Assembly_Correct()
{
Assert.That(Current.UmbracoVersion.SemanticVersion, Is.EqualTo("6.0.0"));
}
[TestCase("~/umbraco", "/", "umbraco")]
[TestCase("~/umbraco", "/MyVirtualDir", "umbraco")]
[TestCase("~/customPath", "/MyVirtualDir/", "custompath")]

View File

@@ -42,7 +42,7 @@ namespace Umbraco.Tests.Migrations
upgrader.Execute(ScopeProvider, builder, Mock.Of<IKeyValueService>(), logger);
var helper = new DatabaseSchemaCreator(scope.Database, logger);
var helper = new DatabaseSchemaCreator(scope.Database, logger, UmbracoVersion);
var exists = helper.TableExists("umbracoUser");
Assert.IsTrue(exists);

View File

@@ -12,6 +12,7 @@ using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.SqlSyntax;
using Umbraco.Core.Scoping;
using Umbraco.Core.Services;
using Umbraco.Tests.TestHelpers;
using Umbraco.Tests.Testing;
namespace Umbraco.Tests.Migrations
@@ -137,7 +138,7 @@ namespace Umbraco.Tests.Migrations
[Test]
public void ValidateUmbracoPlan()
{
var plan = new UmbracoPlan();
var plan = new UmbracoPlan(TestHelper.GetUmbracoVersion());
plan.Validate();
Console.WriteLine(plan.FinalState);
Assert.IsFalse(plan.FinalState.IsNullOrWhiteSpace());

View File

@@ -7,6 +7,7 @@ using Moq;
using NPoco;
using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Migrations.Install;
using Umbraco.Core.Persistence;
@@ -26,6 +27,7 @@ namespace Umbraco.Tests.Persistence
private ILogger _logger;
private SqlCeSyntaxProvider _sqlCeSyntaxProvider;
private ISqlSyntaxProvider[] _sqlSyntaxProviders;
private IUmbracoVersion _umbracoVersion;
[SetUp]
public void Setup()
@@ -34,6 +36,7 @@ namespace Umbraco.Tests.Persistence
_sqlCeSyntaxProvider = new SqlCeSyntaxProvider();
_sqlSyntaxProviders = new[] { (ISqlSyntaxProvider) _sqlCeSyntaxProvider };
_logger = Mock.Of<ILogger>();
_umbracoVersion = TestHelper.GetUmbracoVersion();
_databaseFactory = new UmbracoDatabaseFactory(_logger, new Lazy<IMapperCollection>(() => Mock.Of<IMapperCollection>()), TestHelper.GetConfigs());
}
@@ -88,7 +91,7 @@ namespace Umbraco.Tests.Persistence
using (var database = _databaseFactory.CreateDatabase())
using (var transaction = database.GetTransaction())
{
schemaHelper = new DatabaseSchemaCreator(database, _logger);
schemaHelper = new DatabaseSchemaCreator(database, _logger, _umbracoVersion);
schemaHelper.InitializeDatabaseSchema();
transaction.Complete();
}

View File

@@ -22,7 +22,7 @@ namespace Umbraco.Tests.Persistence
using (var scope = ScopeProvider.CreateScope())
{
var schema = new DatabaseSchemaCreator(scope.Database, Logger);
var schema = new DatabaseSchemaCreator(scope.Database, Logger, UmbracoVersion);
result = schema.ValidateSchema(
//TODO: When we remove the xml cache from tests we can remove this too
DatabaseSchemaCreator.OrderedTables.Concat(new []{typeof(ContentXmlDto), typeof(PreviewXmlDto)}));

View File

@@ -1,6 +1,7 @@
using Moq;
using NPoco;
using NUnit.Framework;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Migrations.Install;
using Umbraco.Core.Persistence;
@@ -20,7 +21,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
@@ -33,7 +34,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<AccessDto>();
@@ -47,7 +48,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<AccessDto>();
@@ -62,7 +63,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentType2ContentTypeDto>();
@@ -76,7 +77,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentTypeDto>();
@@ -91,7 +92,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentTypeDto>();
@@ -105,7 +106,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentTypeDto>();
@@ -121,7 +122,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentTypeDto>();
@@ -137,7 +138,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<DataTypeDto>();
@@ -151,7 +152,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<DictionaryDto>();
@@ -164,7 +165,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<DictionaryDto>();
helper.CreateTable<LanguageDto>();
@@ -179,7 +180,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<TemplateDto>();
@@ -193,7 +194,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentTypeDto>();
@@ -210,7 +211,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentTypeDto>();
@@ -226,7 +227,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<DomainDto>();
@@ -240,7 +241,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<LanguageDto>();
@@ -253,7 +254,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<LogDto>();
@@ -266,7 +267,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<MacroDto>();
@@ -279,7 +280,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentTypeDto>();
@@ -295,7 +296,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentTypeDto>();
@@ -312,7 +313,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentTypeDto>();
@@ -327,7 +328,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentTypeDto>();
@@ -344,7 +345,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentTypeDto>();
@@ -362,7 +363,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentTypeDto>();
@@ -379,7 +380,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentTypeDto>();
@@ -394,7 +395,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<RelationTypeDto>();
@@ -409,20 +410,20 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<RelationTypeDto>();
scope.Complete();
}
}
[Test]
public void Can_Create_cmsTags_Table()
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<TagDto>();
@@ -435,7 +436,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<ContentTypeDto>();
@@ -456,7 +457,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<UserDto>();
@@ -469,7 +470,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<UserGroupDto>();
@@ -483,7 +484,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<UserDto>();
@@ -497,7 +498,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<UserGroupDto>();
@@ -512,7 +513,7 @@ namespace Umbraco.Tests.Persistence
{
using (var scope = ScopeProvider.CreateScope())
{
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>());
var helper = new DatabaseSchemaCreator(scope.Database, Mock.Of<ILogger>(), UmbracoVersion);
helper.CreateTable<NodeDto>();
helper.CreateTable<UserGroupDto>();

View File

@@ -153,7 +153,7 @@ namespace Umbraco.Tests.Runtimes
var scopeProvider = factory.GetInstance<IScopeProvider>();
using (var scope = scopeProvider.CreateScope())
{
var creator = new DatabaseSchemaCreator(scope.Database, logger);
var creator = new DatabaseSchemaCreator(scope.Database, logger, umbracoVersion);
creator.InitializeDatabaseSchema();
scope.Complete();
}

View File

@@ -131,7 +131,7 @@ namespace Umbraco.Tests.TestHelpers
// ensure the configuration matches the current version for tests
var globalSettingsMock = Mock.Get(Factory.GetInstance<IGlobalSettings>()); //this will modify the IGlobalSettings instance stored in the container
globalSettingsMock.Setup(x => x.ConfigurationStatus).Returns(Current.UmbracoVersion.Current.ToString(3));
globalSettingsMock.Setup(x => x.ConfigurationStatus).Returns(UmbracoVersion.Current.ToString(3));
using (ProfilingLogger.TraceDuration<TestWithDatabaseBase>("Initialize database."))
{
@@ -303,7 +303,7 @@ namespace Umbraco.Tests.TestHelpers
{
using (var scope = ScopeProvider.CreateScope())
{
var schemaHelper = new DatabaseSchemaCreator(scope.Database, Logger);
var schemaHelper = new DatabaseSchemaCreator(scope.Database, Logger, UmbracoVersion);
//Create the umbraco database and its base data
schemaHelper.InitializeDatabaseSchema();

View File

@@ -57,7 +57,7 @@
redirectUrl = Url.Action("AuthorizeUpgrade", "BackOffice")
});
}
@Html.BareMinimumServerVariablesScript(Url, externalLoginUrl, Model.Features, Model.GlobalSettings)
@Html.BareMinimumServerVariablesScript(Url, externalLoginUrl, Model.Features, Model.GlobalSettings, Model.UmbracoVersion)
<script type="text/javascript">
document.angularReady = function (app) {

View File

@@ -112,7 +112,7 @@
on-login="hideLoginScreen()">
</umb-login>
@Html.BareMinimumServerVariablesScript(Url, Url.Action("ExternalLogin", "BackOffice", new { area = ViewData.GetUmbracoPath() }), Model.Features, Current.Configs.Global())
@Html.BareMinimumServerVariablesScript(Url, Url.Action("ExternalLogin", "BackOffice", new { area = ViewData.GetUmbracoPath() }), Model.Features, Current.Configs.Global(), Model.UmbracoVersion)
<script>

View File

@@ -42,14 +42,15 @@ namespace Umbraco.Web.Editors
private readonly IRuntimeState _runtimeState;
private BackOfficeUserManager<BackOfficeIdentityUser> _userManager;
private BackOfficeSignInManager _signInManager;
private IUmbracoVersion _umbracoVersion;
private readonly IUmbracoVersion _umbracoVersion;
public BackOfficeController(IManifestParser manifestParser, UmbracoFeatures features, IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper)
public BackOfficeController(IManifestParser manifestParser, UmbracoFeatures features, IGlobalSettings globalSettings, IUmbracoContextAccessor umbracoContextAccessor, ServiceContext services, AppCaches appCaches, IProfilingLogger profilingLogger, IRuntimeState runtimeState, UmbracoHelper umbracoHelper, IUmbracoVersion umbracoVersion)
: base(globalSettings, umbracoContextAccessor, services, appCaches, profilingLogger, umbracoHelper)
{
_manifestParser = manifestParser;
_features = features;
_runtimeState = runtimeState;
_umbracoVersion = umbracoVersion;
}
protected BackOfficeSignInManager SignInManager => _signInManager ?? (_signInManager = OwinContext.GetBackOfficeSignInManager());
@@ -65,8 +66,8 @@ namespace Umbraco.Web.Editors
public async Task<ActionResult> Default()
{
return await RenderDefaultOrProcessExternalLoginAsync(
() => View(GlobalSettings.Path.EnsureEndsWith('/') + "Views/Default.cshtml", new BackOfficeModel(_features, GlobalSettings)),
() => View(GlobalSettings.Path.EnsureEndsWith('/') + "Views/Default.cshtml", new BackOfficeModel(_features, GlobalSettings)));
() => View(GlobalSettings.Path.EnsureEndsWith('/') + "Views/Default.cshtml", new BackOfficeModel(_features, GlobalSettings, _umbracoVersion)),
() => View(GlobalSettings.Path.EnsureEndsWith('/') + "Views/Default.cshtml", new BackOfficeModel(_features, GlobalSettings, _umbracoVersion)));
}
[HttpGet]
@@ -149,7 +150,7 @@ namespace Umbraco.Web.Editors
{
return await RenderDefaultOrProcessExternalLoginAsync(
//The default view to render when there is no external login info or errors
() => View(GlobalSettings.Path.EnsureEndsWith('/') + "Views/AuthorizeUpgrade.cshtml", new BackOfficeModel(_features, GlobalSettings)),
() => View(GlobalSettings.Path.EnsureEndsWith('/') + "Views/AuthorizeUpgrade.cshtml", new BackOfficeModel(_features, GlobalSettings, _umbracoVersion)),
//The ActionResult to perform if external login is successful
() => Redirect("/"));
}

View File

@@ -6,13 +6,15 @@ namespace Umbraco.Web.Editors
public class BackOfficeModel
{
public BackOfficeModel(UmbracoFeatures features, IGlobalSettings globalSettings)
public BackOfficeModel(UmbracoFeatures features, IGlobalSettings globalSettings, IUmbracoVersion umbracoVersion)
{
Features = features;
GlobalSettings = globalSettings;
UmbracoVersion = umbracoVersion;
}
public UmbracoFeatures Features { get; }
public IGlobalSettings GlobalSettings { get; }
public IUmbracoVersion UmbracoVersion { get; }
}
}

View File

@@ -10,7 +10,7 @@ namespace Umbraco.Web.Editors
private readonly UmbracoFeatures _features;
public IEnumerable<ILanguage> Languages { get; }
public BackOfficePreviewModel(UmbracoFeatures features, IGlobalSettings globalSettings, IEnumerable<ILanguage> languages) : base(features, globalSettings)
public BackOfficePreviewModel(UmbracoFeatures features, IGlobalSettings globalSettings, IUmbracoVersion umbracoVersion, IEnumerable<ILanguage> languages) : base(features, globalSettings, umbracoVersion)
{
_features = features;
Languages = languages;

View File

@@ -24,19 +24,22 @@ namespace Umbraco.Web.Editors
private readonly IPublishedSnapshotService _publishedSnapshotService;
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
private readonly ILocalizationService _localizationService;
private readonly IUmbracoVersion _umbracoVersion;
public PreviewController(
UmbracoFeatures features,
IGlobalSettings globalSettings,
IPublishedSnapshotService publishedSnapshotService,
IUmbracoContextAccessor umbracoContextAccessor,
ILocalizationService localizationService)
ILocalizationService localizationService,
IUmbracoVersion umbracoVersion)
{
_features = features;
_globalSettings = globalSettings;
_publishedSnapshotService = publishedSnapshotService;
_umbracoContextAccessor = umbracoContextAccessor;
_localizationService = localizationService;
_umbracoVersion = umbracoVersion;
}
[UmbracoAuthorize(redirectToUmbracoLogin: true)]
@@ -45,7 +48,7 @@ namespace Umbraco.Web.Editors
{
var availableLanguages = _localizationService.GetAllLanguages();
var model = new BackOfficePreviewModel(_features, _globalSettings, availableLanguages);
var model = new BackOfficePreviewModel(_features, _globalSettings, _umbracoVersion, availableLanguages);
if (model.PreviewExtendedHeaderView.IsNullOrWhiteSpace() == false)
{

View File

@@ -38,7 +38,7 @@ namespace Umbraco.Web.Editors
_umbracoVersion.Current.Build,
_umbracoVersion.Comment);
return new UpgradeCheckResponse(result.UpgradeType.ToString(), result.Comment, result.UpgradeUrl);
return new UpgradeCheckResponse(result.UpgradeType.ToString(), result.Comment, result.UpgradeUrl, _umbracoVersion);
}
catch (System.Net.WebException)
{

View File

@@ -1,6 +1,7 @@
using System.Linq;
using System.Threading.Tasks;
using Umbraco.Core;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Migrations.Install;
using Umbraco.Core.Migrations.Upgrade;
@@ -17,12 +18,14 @@ namespace Umbraco.Web.Install.InstallSteps
private readonly DatabaseBuilder _databaseBuilder;
private readonly IRuntimeState _runtime;
private readonly ILogger _logger;
private readonly IUmbracoVersion _umbracoVersion;
public DatabaseUpgradeStep(DatabaseBuilder databaseBuilder, IRuntimeState runtime, ILogger logger)
public DatabaseUpgradeStep(DatabaseBuilder databaseBuilder, IRuntimeState runtime, ILogger logger, IUmbracoVersion umbracoVersion)
{
_databaseBuilder = databaseBuilder;
_runtime = runtime;
_logger = logger;
_umbracoVersion = umbracoVersion;
}
public override Task<InstallSetupResult> ExecuteAsync(object model)
@@ -35,7 +38,7 @@ namespace Umbraco.Web.Install.InstallSteps
{
_logger.Info<DatabaseUpgradeStep>("Running 'Upgrade' service");
var plan = new UmbracoPlan();
var plan = new UmbracoPlan(_umbracoVersion);
plan.AddPostMigration<ClearCsrfCookies>(); // needed when running installer (back-office)
var result = _databaseBuilder.UpgradeSchemaAndData(plan);

View File

@@ -1,6 +1,7 @@
using System.Runtime.Serialization;
using System.Web;
using Umbraco.Core.Composing;
using Umbraco.Core.Configuration;
namespace Umbraco.Web.Models
{
@@ -17,11 +18,11 @@ namespace Umbraco.Web.Models
public string Url { get; set; }
public UpgradeCheckResponse() { }
public UpgradeCheckResponse(string upgradeType, string upgradeComment, string upgradeUrl)
public UpgradeCheckResponse(string upgradeType, string upgradeComment, string upgradeUrl, IUmbracoVersion umbracoVersion)
{
Type = upgradeType;
Comment = upgradeComment;
Url = upgradeUrl + "?version=" + HttpUtility.UrlEncode(Current.UmbracoVersion.Current.ToString(3));
Url = upgradeUrl + "?version=" + HttpUtility.UrlEncode(umbracoVersion.Current.ToString(3));
}
}
}