Merge branch 'master' into 800-AddMissingChatCommand

This commit is contained in:
Jordan Brown
2018-10-23 17:40:09 -04:00
committed by GitHub
2 changed files with 18 additions and 1 deletions
@@ -9,7 +9,6 @@ using System.Linq;
using System.Linq.Expressions;
using System.Net;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
using Tgstation.Server.Api;
@@ -121,6 +120,17 @@ namespace Tgstation.Server.Host.Controllers
return BadRequest(new ErrorMessage { Message = "path must not be empty!" });
NormalizeModelPath(model, out var rawPath);
var localPath = ioManager.ResolvePath(".");
NormalizeModelPath(new Api.Models.Instance
{
Path = localPath
}, out var normalizedLocalPath);
if (rawPath.StartsWith(normalizedLocalPath, StringComparison.Ordinal))
return Conflict("Instances cannot be created in the installation directory!");
var dirExistsTask = ioManager.DirectoryExists(model.Path, cancellationToken);
bool attached = false;
if (await ioManager.FileExists(model.Path, cancellationToken).ConfigureAwait(false) || await dirExistsTask.ConfigureAwait(false))
@@ -51,6 +51,13 @@ namespace Tgstation.Server.Tests
}, cancellationToken)).ConfigureAwait(false);
await Assert.ThrowsExceptionAsync<ConflictException>(() => instanceManagerClient.CreateOrAttach(firstTest, cancellationToken)).ConfigureAwait(false);
//can't create instances in installation directory
await Assert.ThrowsExceptionAsync<ConflictException>(() => instanceManagerClient.CreateOrAttach(new Api.Models.Instance
{
Path = "./A/Local/Path",
Name = "NoInstallDirTest"
}, cancellationToken)).ConfigureAwait(false);
//can't move to existent directories
await Assert.ThrowsExceptionAsync<ConflictException>(() => instanceManagerClient.Update(new Api.Models.Instance
{