Пример #1
0
        public void Pass_UpdateVersionInfo()
        {
            // Setup
            var manifestMock = new Mock <IProjectManifest>();

            var protectionLevel = Fakes.RandomEnum <ProtectionLevel>();

            manifestMock.SetupGet(m => m.ProtectionLevel).Returns(protectionLevel);

            manifestMock.SetupAllProperties();
            var manifest = manifestMock.Object;

            var project = new Project();

            typeof(Project).GetField("_projectManifest", BindingFlags.NonPublic | BindingFlags.Instance)?.SetValue(project, manifest);
            typeof(Project).GetField("_isLoaded", BindingFlags.NonPublic | BindingFlags.Instance)?.SetValue(project, true);

            // Execute
            project.VersionMajor    = Fakes.RandomInt(0, 100);
            project.VersionMinor    = Fakes.RandomInt(0, 100);
            project.VersionBuild    = Fakes.RandomInt(0, 100);
            project.VersionComments = Fakes.RandomString();
            project.Description     = Fakes.RandomString();

            // Assert
            Assert.Equal(project.VersionMajor, manifest.VersionMajor);
            Assert.Equal(project.VersionMinor, manifest.VersionMinor);
            Assert.Equal(project.VersionBuild, manifest.VersionBuild);
            Assert.Equal(project.VersionComments, manifest.VersionComments);
            Assert.Equal(project.Description, manifest.Description);
            Assert.Equal(project.ProtectionLevel, manifest.ProtectionLevel);
        }
Пример #2
0
        private static IDictionary <string, IParameter> GenerateRandomParameters()
        {
            var parameters = new Dictionary <string, IParameter>();

            var rnd = new Random();

            for (var cnt = 0; cnt < rnd.Next(30, 100); cnt++)
            {
                var parameterMock = new Mock <IParameter>();
                parameterMock.Setup(p => p.Name).Returns(Fakes.RandomString());
                parameterMock.Setup(p => p.Value).Returns(Fakes.RandomString());
                parameterMock.Setup(p => p.ParameterDataType).Returns(typeof(string));
                parameterMock.Setup(p => p.Sensitive).Returns(Fakes.RandomBool());
                parameterMock.Setup(p => p.Source).Returns(Fakes.RandomEnum <ParameterSource>());

                parameters.Add(parameterMock.Object.Name, parameterMock.Object);
            }
            return(parameters);
        }
Пример #3
0
        public void Pass_New_ProjectParameter_InvalidDataType()
        {
            // Setup
            var name         = Fakes.RandomString();
            var value        = Fakes.RandomString();
            var scope        = Fakes.RandomString();
            var xmldoc       = new XmlDocument();
            var parameterXml = XmlGenerators.ProjectFileParameter(name, value, false, Fakes.RandomEnum <DataType>());

            xmldoc.LoadXml(parameterXml);

            var dataTypeNode = xmldoc.SelectSingleNode("//*[@SSIS:Name=\"DataType\"]", xmldoc.GetNameSpaceManager());

            if (dataTypeNode != null)
            {
                dataTypeNode.InnerText = "xyz";
            }

            // Execute
            var parameter = new ProjectParameter(scope, xmldoc.DocumentElement);

            // Assert
            Assert.NotNull(parameter);
            Assert.Equal(null, parameter.ParameterDataType?.Name);
        }
Пример #4
0
        public void Fail_New_ProjectParameter_EmptyName()
        {
            // Setup
            var name         = string.Empty;
            var value        = Fakes.RandomString();
            var xmldoc       = new XmlDocument();
            var parameterXml = XmlGenerators.ProjectFileParameter(name, value, Fakes.RandomBool(), Fakes.RandomEnum <DataType>(), Fakes.RandomBool());

            xmldoc.LoadXml(parameterXml);

            // Execute
            var exception = Record.Exception(() => new ProjectParameter(Fakes.RandomString(), xmldoc.DocumentElement));

            // Assert
            Assert.NotNull(exception);
            Assert.IsType <InvalidXmlException>(exception);
            Assert.Equal(xmldoc.DocumentElement?.OuterXml, ((InvalidXmlException)exception).NodeXml);
            Assert.NotNull(exception.Message);
        }
Пример #5
0
        public void Fail_New_ProjectParameter_NoScope()
        {
            // Setup
            var name         = Fakes.RandomString();
            var value        = Fakes.RandomString();
            var xmldoc       = new XmlDocument();
            var parameterXml = XmlGenerators.ProjectFileParameter(name, value, false, Fakes.RandomEnum <DataType>());

            xmldoc.LoadXml(parameterXml);

            // Execute
            var exception = Record.Exception(() => new ProjectParameter(null, xmldoc.DocumentElement));

            // Assert
            Assert.NotNull(exception);
            Assert.IsType <ArgumentNullException>(exception);
        }
        public void Fail_New_ProjectParameter_InvalidDataType()
        {
            // Setup
            var name         = Fakes.RandomString();
            var value        = Fakes.RandomString();
            var scope        = Fakes.RandomString();
            var xmldoc       = new XmlDocument();
            var parameterXml = XmlGenerators.ProjectFileParameter(name, value, false, Fakes.RandomEnum <DataType>());

            xmldoc.LoadXml(parameterXml);

            var dataTypeNode = xmldoc.SelectSingleNode("//*[@SSIS:Name=\"DataType\"]", xmldoc.GetNameSpaceManager());

            if (dataTypeNode != null)
            {
                dataTypeNode.InnerText = "xyz";
            }

            // Execute
            var exception = Record.Exception(() => new ProjectParameter(scope, xmldoc.DocumentElement));

            // Assert
            Assert.NotNull(exception);
            Assert.IsType <InvalidCastException>(exception);
        }
Пример #7
0
        public void Pass_OriginalParameters()
        {
            // Setup
            var manifestMock = new Mock <IProjectManifest>();

            var manifestParameters = new[]
            {
                CreateParameter($"Project::{Fakes.RandomString()}", Fakes.RandomString(), Fakes.RandomBool(), Fakes.RandomEnum <ParameterSource>()),
                CreateParameter($"Project::{Fakes.RandomString()}", Fakes.RandomString(), Fakes.RandomBool(), Fakes.RandomEnum <ParameterSource>()),
            }.ToDictionary(p => p.Name, p => p);

            manifestMock.Setup(m => m.Parameters).Returns(manifestParameters);
            var manifest = manifestMock.Object;

            var projectParamsMock = new Mock <IProjectFile>();
            var projectParameters = new[]
            {
                CreateParameter($"Project::{Fakes.RandomString()}", Fakes.RandomString(), Fakes.RandomBool(), Fakes.RandomEnum <ParameterSource>()),
                CreateParameter($"Project::{Fakes.RandomString()}", Fakes.RandomString(), Fakes.RandomBool(), Fakes.RandomEnum <ParameterSource>()),
            }.ToDictionary(p => p.Name, p => p);

            projectParamsMock.Setup(m => m.Parameters).Returns(projectParameters);
            var projectParams = projectParamsMock.Object;

            // Execute
            var project = new Project();

            typeof(Project).GetField("_projectManifest", BindingFlags.NonPublic | BindingFlags.Instance)?.SetValue(project, manifest);
            typeof(Project).GetField("_projectParams", BindingFlags.NonPublic | BindingFlags.Instance)?.SetValue(project, projectParams);
            typeof(Project).GetField("_isLoaded", BindingFlags.NonPublic | BindingFlags.Instance)?.SetValue(project, true);

            // Assert
            Assert.Equal(4, project.Parameters.Count);
            foreach (var parameter in projectParameters)
            {
                Assert.True(project.Parameters.ContainsKey(parameter.Key));
                Assert.Equal(parameter.Value.Value, project.Parameters[parameter.Key].Value);
                Assert.Equal(parameter.Value.ParameterDataType, project.Parameters[parameter.Key].ParameterDataType);
                Assert.Equal(parameter.Value.Sensitive, project.Parameters[parameter.Key].Sensitive);
                Assert.Equal(parameter.Value.Source, project.Parameters[parameter.Key].Source);
            }
            foreach (var parameter in manifestParameters)
            {
                Assert.True(project.Parameters.ContainsKey(parameter.Key));
                Assert.Equal(parameter.Value.Value, project.Parameters[parameter.Key].Value);
                Assert.Equal(parameter.Value.ParameterDataType, project.Parameters[parameter.Key].ParameterDataType);
                Assert.Equal(parameter.Value.Sensitive, project.Parameters[parameter.Key].Sensitive);
                Assert.Equal(parameter.Value.Source, project.Parameters[parameter.Key].Source);
            }
        }