示例#1
0
        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;
            }
        }
示例#2
0
        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;
            }
        }