public void InvalidCommitTextTests() { var id = Guid.NewGuid().ToString(); var deploymentPath = @"x:\sites\deployments"; var environment = Mock.Of <IEnvironment>(e => e.DeploymentsPath == deploymentPath); var analytics = Mock.Of <IAnalytics>(); var statusLock = Mock.Of <IOperationLock>(l => l.Lock() == true); var stream = new Mock <MemoryStream> { CallBase = true }; stream.Setup(s => s.Close()); var statusFile = Path.Combine(deploymentPath, id, "status.xml"); FileSystemHelpers.Instance = GetMockFileSystem(statusFile, () => { stream.Object.Position = 0; return(Encoding.UTF8.GetString(stream.Object.GetBuffer(), 0, (int)stream.Object.Length)); }); var fileBase = Mock.Get(FileSystemHelpers.Instance.File); fileBase.Setup(f => f.Create(statusFile)) .Returns((string path) => stream.Object); try { var deploymentStatus = DeploymentStatusFile.Create(id, environment, statusLock); deploymentStatus.Id = id; deploymentStatus.Status = DeployStatus.Success; deploymentStatus.StatusText = "Success"; deploymentStatus.AuthorEmail = "*****@*****.**"; deploymentStatus.Author = "John Doe \x08"; deploymentStatus.Message = "Invalid char is \u0010"; deploymentStatus.Progress = String.Empty; deploymentStatus.EndTime = DateTime.UtcNow; deploymentStatus.LastSuccessEndTime = DateTime.UtcNow; deploymentStatus.Complete = true; deploymentStatus.IsTemporary = false; deploymentStatus.IsReadOnly = false; // Save deploymentStatus.Save(); // Roundtrip deploymentStatus = DeploymentStatusFile.Open(id, environment, analytics, statusLock); // Assert Assert.Equal(id, deploymentStatus.Id); Assert.Equal("John Doe ", deploymentStatus.Author); Assert.Equal("Invalid char is ", deploymentStatus.Message); } finally { FileSystemHelpers.Instance = null; } }
public void CorruptedDeploymentStatusFileTests(string content, bool expectedNull, bool expectedError) { var id = Guid.NewGuid().ToString(); var deploymentPath = @"x:\sites\deployments"; var environment = Mock.Of <IEnvironment>(e => e.DeploymentsPath == deploymentPath); var analytics = Mock.Of <IAnalytics>(); var statusLock = Mock.Of <IOperationLock>(l => l.Lock() == true); var statusFile = Path.Combine(deploymentPath, id, "status.xml"); FileSystemHelpers.Instance = GetMockFileSystem(statusFile, () => content); try { var status = DeploymentStatusFile.Open(id, environment, analytics, statusLock); if (expectedNull) { Assert.Null(status); Mock.Get(FileSystemHelpers.Instance.DirectoryInfo.FromDirectoryName(Path.Combine(deploymentPath, id))) .Verify(d => d.Delete(), content != null ? Times.Once() : Times.Never()); } else { Assert.NotNull(status); Mock.Get(FileSystemHelpers.Instance.DirectoryInfo.FromDirectoryName(Path.Combine(deploymentPath, id))) .Verify(d => d.Delete(), Times.Never()); } if (expectedError) { Mock.Get(analytics).Verify(a => a.UnexpectedException(It.IsAny <Exception>(), true), Times.Once()); } else { Mock.Get(analytics).Verify(a => a.UnexpectedException(It.IsAny <Exception>(), It.IsAny <bool>()), Times.Never()); } } finally { FileSystemHelpers.Instance = null; } }