public void TrackVerifyPackageKeyEventThrowsIfUserIsNull() { // Arrange var service = CreateService(); // Act & Assert Assert.Throws <ArgumentNullException>(() => service.TrackVerifyPackageKeyEvent("id", "1.0.0", null, Fakes.ToIdentity(fakes.User), 200)); }
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\"")); }
public void TrackPackagePushEventThrowsIfUserIsNull() { // Arrange var service = CreateService(); // Act & Assert Assert.Throws <ArgumentNullException>(() => service.TrackPackagePushEvent(fakes.Package.Packages.First(), null, Fakes.ToIdentity(fakes.User))); }
public void ReturnsAuthenticationType() { var principal = Fakes.ToPrincipal(new User("user")); Assert.Equal("Test", principal.Identity.AuthenticationType); }
public TheAddAction() { Fakes = Get <Fakes>(); Admin = Fakes.User; }
public void Invoke(IReadVisitor visitor, Fakes.ValueDictionary graph) { var instance = Activator.CreateInstance(typeof (Fakes.ValueDictionary)); }
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); }
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")); }
public void WhenClaimFound_ReturnsClaim() { var principal = Fakes.ToPrincipal(new User("user")); Assert.Equal("user", principal.GetClaimOrDefault(ClaimsIdentity.DefaultNameClaimType)); }
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); }
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); }
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); } }
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 }
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); } }
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); }
public void WhenClaimNotFound_ReturnsNull() { var principal = Fakes.ToPrincipal(new User("user")); Assert.Null(principal.GetClaimOrDefault("noSuchClaim")); }
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")); }
public void WhenNotClaimsIdentity_ReturnsEmpty() { var identity = Fakes.ToIdentity(new User("user")); Assert.Equal("", identity.AuthenticationType); }
public void Init() { _fakes = new Fakes(); }
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); }