Beispiel #1
0
            public void TrackVerifyPackageKeyEventThrowsIfUserIsNull()
            {
                // Arrange
                var service = CreateService();

                // Act & Assert
                Assert.Throws <ArgumentNullException>(() =>
                                                      service.TrackVerifyPackageKeyEvent("id", "1.0.0", null, Fakes.ToIdentity(fakes.User), 200));
            }
Beispiel #2
0
        public void Fail_Decrypt_NoSalt()
        {
            // Setup
            var password      = Fakes.RandomString();
            var parameterData = new ParameterSetupData()
            {
                Value     = Fakes.RandomString(),
                DataType  = DataType.String,
                Name      = Fakes.RandomString(),
                Sensitive = true
            };


            var xml  = XmlGenerators.ProjectParamsFile(new List <ParameterSetupData>(new[] { parameterData }));
            var path = Path.Combine(_workingFolder, Guid.NewGuid().ToString("N"));

            File.WriteAllText(path, xml);
            var projectFile = new ProjectFileImpl();

            projectFile.Initialize(path, null);


            var    newProjectFile = new ProjectFileImpl();
            string encryptedXml;

            using (var stream = new MemoryStream())
            {
                projectFile.Save(stream, ProtectionLevel.EncryptSensitiveWithPassword, password);
                stream.Position = 0;

                var sr = new StreamReader(stream);
                encryptedXml = sr.ReadToEnd();
            }

            var encryptedXmlDoc = new XmlDocument();

            encryptedXmlDoc.LoadXml(encryptedXml);
            var saltAttribute = encryptedXmlDoc.SelectSingleNode("//*[@Salt or @SSIS:Salt]", encryptedXmlDoc.GetNameSpaceManager()).GetAttributeNode("Salt");

            if (saltAttribute != null)
            {
                saltAttribute.Value = string.Empty;
            }

            // Execute
            Exception exception;

            using (var stream = new MemoryStream())
            {
                encryptedXmlDoc.Save(stream);
                stream.Flush();
                stream.Position = 0;

                exception = Record.Exception(() => newProjectFile.Initialize(stream, password));
            }

            // Assert
            Assert.NotNull(exception);
            Assert.IsType <InvalidXmlException>(exception);
            Assert.True(exception.Message.Contains("\"Salt\""));
        }
Beispiel #3
0
            public void TrackPackagePushEventThrowsIfUserIsNull()
            {
                // Arrange
                var service = CreateService();

                // Act & Assert
                Assert.Throws <ArgumentNullException>(() =>
                                                      service.TrackPackagePushEvent(fakes.Package.Packages.First(), null, Fakes.ToIdentity(fakes.User)));
            }
Beispiel #4
0
            public void ReturnsAuthenticationType()
            {
                var principal = Fakes.ToPrincipal(new User("user"));

                Assert.Equal("Test", principal.Identity.AuthenticationType);
            }
Beispiel #5
0
 public TheAddAction()
 {
     Fakes = Get <Fakes>();
     Admin = Fakes.User;
 }
 public void Invoke(IReadVisitor visitor, Fakes.ValueDictionary graph)
 {
     var instance = Activator.CreateInstance(typeof (Fakes.ValueDictionary));
 }
Beispiel #7
0
        public void Fail_Dtproj_InvalidDeploymentModel()
        {
            // Setup
            var projectName       = $"proj_{Fakes.RandomString()}.dtproj";
            var projectPath       = Path.Combine(_workingFolder, projectName);
            var configurationName = Fakes.RandomString();

            CreateDtprojFiles(projectName, configurationName);
            var xmlDoc = new XmlDocument();

            xmlDoc.Load(projectPath);
            var deploymentModelNode = xmlDoc.SelectSingleNode("/Project/DeploymentModel", xmlDoc.GetNameSpaceManager());

            if (deploymentModelNode != null)
            {
                deploymentModelNode.InnerText = Fakes.RandomString();
            }
            xmlDoc.Save(projectPath);

            var proj = new Project();

            // Execute
            var exception = Record.Exception(() => proj.LoadFromDtproj(projectPath, configurationName, Fakes.RandomString()));

            // Assert
            Assert.NotNull(exception);
            Assert.IsType <InvalidDeploymentModelException>(exception);
        }
Beispiel #8
0
        public void Fail_LoadFromDtproj_NoManifest()
        {
            // Setup
            var projectName       = $"proj_{Fakes.RandomString()}.dtproj";
            var projectPath       = Path.Combine(_workingFolder, projectName);
            var configurationName = Fakes.RandomString();

            CreateDtprojFiles(projectName, configurationName);
            var xmlDoc = new XmlDocument();

            xmlDoc.Load(projectPath);
            var manifestNode = xmlDoc.SelectSingleNode("//SSIS:Project", xmlDoc.GetNameSpaceManager());
            var parent       = manifestNode?.ParentNode;

            parent?.RemoveChild(manifestNode);
            xmlDoc.Save(projectPath);

            var proj = new Project();

            // Execute
            var exception = Record.Exception(() => proj.LoadFromDtproj(projectPath, configurationName, Fakes.RandomString()));

            // Assert
            Assert.NotNull(exception);
            Assert.IsType <InvalidXmlException>(exception);
            Assert.True(exception.Message.Contains("Manifest"));
        }
Beispiel #9
0
            public void WhenClaimFound_ReturnsClaim()
            {
                var principal = Fakes.ToPrincipal(new User("user"));

                Assert.Equal("user", principal.GetClaimOrDefault(ClaimsIdentity.DefaultNameClaimType));
            }
Beispiel #10
0
        public void Fail_LoadFromDtproj_FileNotFound()
        {
            // Setup
            var projectName = $"proj_{Fakes.RandomString()}.dtproj";
            var proj        = new Project();

            // Execute
            var exception = Record.Exception(() => proj.LoadFromDtproj(Path.Combine(_workingFolder, projectName), Fakes.RandomString(), Fakes.RandomString()));

            // Assert
            Assert.NotNull(exception);
            Assert.IsType <FileNotFoundException>(exception);
        }
Beispiel #11
0
        public void Fail_LoadFromDtproj_BadExtension()
        {
            // Setup
            var projectName = $"proj_{Fakes.RandomString()}.xyz";
            var projectPath = Path.Combine(_workingFolder, projectName);

            File.Create(projectPath).Close();
            var proj = new Project();

            // Execute
            var exception = Record.Exception(() => proj.LoadFromDtproj(projectPath, Fakes.RandomString(), Fakes.RandomString()));

            // Assert
            Assert.NotNull(exception);
            Assert.IsType <InvalidExtensionException>(exception);
        }
Beispiel #12
0
        internal void CreateDtprojFiles(string projectName, string configurationName)
        {
            var packages    = new[] { $"p_{Fakes.RandomString()}.dtsx", $"p_{Fakes.RandomString()}.dtsx" };
            var connections = new[] { $"c_{Fakes.RandomString()}.conmgr", $"c_{Fakes.RandomString()}.conmgr" };


            var paramName = Fakes.RandomString();

            var projectParamsXml = XmlGenerators.ProjectParamsFile(new List <ParameterSetupData>()
            {
                { new ParameterSetupData
                  {
                      Value     = Fakes.RandomString(),
                      Name      = paramName,
                      DataType  = DataType.String,
                      Sensitive = false
                  } }
            });

            var projectManifestXml = XmlGenerators.ProjectManifestFile(ProtectionLevel.DontSaveSensitive, 1, 2, Fakes.RandomString(), 3, "Descr", packages, connections,
                                                                       new[]
            {
                new ParameterSetupData()
                {
                    Value     = Fakes.RandomString(),
                    DataType  = DataType.String,
                    Name      = Fakes.RandomString(),
                    Sensitive = false
                },
            });
            var configurationXml = XmlGenerators.ConfigurationFile(configurationName, new Dictionary <string, string>()
            {
                {
                    $"Project::{paramName}", Fakes.RandomString()
                }
            });
            var configurationsXmlDoc = new XmlDocument();

            configurationsXmlDoc.LoadXml(configurationXml);

            var userConfigurationXml = XmlGenerators.UserConfigurationFile(configurationName, new Dictionary <string, string>()
            {
                {
                    $"Project::{paramName}", Fakes.RandomString()
                }
            });
            var dtprojXml = $@"<?xml version=""1.0"" encoding=""utf-8""?>
                <Project xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
                  <DeploymentModel>Project</DeploymentModel>
                  <DeploymentModelSpecificContent>
                    <Manifest>
                      {projectManifestXml}
                    </Manifest>
                  </DeploymentModelSpecificContent>
                  <Configurations>
                      {configurationsXmlDoc.SelectSingleNode("//Configuration", configurationsXmlDoc.GetNameSpaceManager())?.OuterXml}
                  </Configurations>
                </Project>";

            var dtproj = projectName;

            File.WriteAllText(Path.Combine(_workingFolder, dtproj), dtprojXml);
            File.WriteAllText(Path.Combine(_workingFolder, "Project.params"), projectParamsXml);
            File.WriteAllText($"{Path.Combine(_workingFolder, dtproj)}.user", userConfigurationXml);
            foreach (var package in packages)
            {
                var packageXml = XmlGenerators.PackageFile(Fakes.RandomString(), (int)ProtectionLevel.EncryptSensitiveWithPassword, Fakes.RandomString());
                File.WriteAllText($"{Path.Combine(_workingFolder, package)}", packageXml);
            }

            foreach (var connection in connections)
            {
                var projectConnectionsXml = XmlGenerators.ProjectConnectionsFile();
                File.WriteAllText($"{Path.Combine(_workingFolder, connection)}", projectConnectionsXml);
            }
        }
Beispiel #13
0
        public void Pass_DtProj()
        {
            // Setup
            var projectName       = $"proj_{Fakes.RandomString()}.dtproj";
            var configurationName = Fakes.RandomString();

            CreateDtprojFiles(projectName, configurationName);
            var proj = new Project();

            // Execute
            proj.LoadFromDtproj(Path.Combine(_workingFolder, projectName), configurationName, Fakes.RandomString());

            // Assert
        }
Beispiel #14
0
        public void Pass_UpdateParameters()
        {
            // Setup
            var manifestMock = new Mock <IProjectManifest>();

            var manifestParameters = new[]
            {
                CreateParameter($"Project::{Fakes.RandomString()}", Fakes.RandomString(), Fakes.RandomBool(), ParameterSource.Original),
                CreateParameter($"Project::{Fakes.RandomString()}", Fakes.RandomString(), Fakes.RandomBool(), ParameterSource.Original),
            }.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(), ParameterSource.Original),
                CreateParameter($"Project::{Fakes.RandomString()}", Fakes.RandomString(), Fakes.RandomBool(), ParameterSource.Original),
            }.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)
            {
                var newValue = Fakes.RandomString();
                project.UpdateParameter(parameter.Value.Name, newValue, ParameterSource.Manual);

                Assert.True(project.Parameters.ContainsKey(parameter.Key));
                Assert.Equal(newValue, project.Parameters[parameter.Key].Value);
                Assert.Equal(ParameterSource.Manual, project.Parameters[parameter.Key].Source);
            }
            foreach (var parameter in manifestParameters)
            {
                var newValue = Fakes.RandomString();
                project.UpdateParameter(parameter.Value.Name, newValue, ParameterSource.Manual);

                Assert.True(project.Parameters.ContainsKey(parameter.Key));
                Assert.Equal(newValue, project.Parameters[parameter.Key].Value);
                Assert.Equal(ParameterSource.Manual, project.Parameters[parameter.Key].Source);
            }
        }
Beispiel #15
0
        public void Fail_UserKeyProtectionLevel(ProtectionLevel protectionLevel)
        {
            // Setup
            var xml  = XmlGenerators.ProjectManifestFile(protectionLevel, 1, 1, Fakes.RandomString(), 1, Fakes.RandomString(), new string[] {}, new string[] {}, new ParameterSetupData[] {});
            var path = Path.Combine(_workingFolder, Guid.NewGuid().ToString("N"));

            File.WriteAllText(path, xml);

            // Execute
            var projectManifest = new ProjectManifest();
            var exception       = Record.Exception(() => projectManifest.Initialize(path, null));

            // Assert
            Assert.NotNull(exception);
            Assert.IsType <InvalidProtectionLevelException>(exception);
            Assert.Equal(((InvalidProtectionLevelException)exception).ProtectionLevel, protectionLevel);
        }
Beispiel #16
0
            public void WhenClaimNotFound_ReturnsNull()
            {
                var principal = Fakes.ToPrincipal(new User("user"));

                Assert.Null(principal.GetClaimOrDefault("noSuchClaim"));
            }
Beispiel #17
0
        public void Fail_InvalidVersionMajor()
        {
            // Setup
            var xml    = XmlGenerators.ProjectManifestFile(ProtectionLevel.DontSaveSensitive, 1, 1, Fakes.RandomString(), 1, Fakes.RandomString(), new string[] { }, new string[] { }, new ParameterSetupData[] { });
            var path   = Path.Combine(_workingFolder, Guid.NewGuid().ToString("N"));
            var xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(xml);
            var versionMajorNode = xmlDoc.SelectSingleNode("/SSIS:Project/SSIS:Properties/SSIS:Property[@SSIS:Name = \"VersionMajor\"]", xmlDoc.GetNameSpaceManager());

            if (versionMajorNode != null)
            {
                versionMajorNode.InnerText = Fakes.RandomString();
            }

            File.WriteAllText(path, xmlDoc.OuterXml);

            // Execute
            var projectManifest = new ProjectManifest();
            var exception       = Record.Exception(() => projectManifest.Initialize(path, null));

            // Assert
            Assert.NotNull(exception);
            Assert.IsType <InvalidXmlException>(exception);
            Assert.True(exception.Message.Contains("Major"));
        }
Beispiel #18
0
            public void WhenNotClaimsIdentity_ReturnsEmpty()
            {
                var identity = Fakes.ToIdentity(new User("user"));

                Assert.Equal("", identity.AuthenticationType);
            }
 public void Init()
 {
   _fakes = new Fakes();
 }
Beispiel #20
0
        public void Fail_UpdateParameter_NotLoaded()
        {
            // Setup
            var proj = new Project();

            // Execute
            var exception = Record.Exception(() => proj.UpdateParameter(Fakes.RandomString(), Fakes.RandomString(), ParameterSource.Configuration));

            // Assert
            Assert.NotNull(exception);
            Assert.IsType <ProjectNotInitializedException>(exception);
        }