protected static int Generate(GenerateOptions options) { System.Console.WriteLine($"Generating file {options.Destination} based on {options.Source}."); //Parse the model var container = new ParserContainer(); container.Initialize(Path.GetExtension(options.Source)); var modelFactory = new ModelFactory(); var collection = modelFactory.Instantiate(options.Source, container); var types = collection.Select(o => o.GetType()).Distinct(); //Render the template foreach (var type in types) { var templateContainer = new TemplateContainer(); templateContainer.Initialize(); var templateFactory = templateContainer.Retrieve(type); var engine = templateFactory.Instantiate(string.Empty, false, options.Template); var objects = collection.Where(o => o.GetType() == type); var text = engine.Execute(objects); File.WriteAllText(options.Destination, text); } return(0); }
public void Parse_ValidXml_CorrectlyParsedAccount(string extension) { var assembly = Assembly.GetExecutingAssembly(); using (var stream = assembly.GetManifestResourceStream($"Idunn.FileShare.Testing.Unit.Parser.Resources.Sample{extension}")) { var register = new FileShare.Parser.ParserRegister(); var container = new ParserContainer(); container.Initialize(register, extension); var parser = register.GetRootParser(); var accounts = parser.Parse(stream); Assert.That(accounts, Is.Not.Null); Assert.That(accounts, Is.AssignableTo <IEnumerable <Account> >()); Assert.That(accounts, Has.Count.EqualTo(1)); } }
public void Parse_ValidXml_CorrectlyParsedFolderPermissions(string extension) { var assembly = Assembly.GetExecutingAssembly(); using (var stream = assembly.GetManifestResourceStream($"Idunn.FileShare.Testing.Unit.Parser.Resources.Sample{extension}")) { var register = new FileShare.Parser.ParserRegister(); var container = new ParserContainer(); container.Initialize(register, extension); var parser = register.GetRootParser(); var account = (parser.Parse(stream).ElementAt(0) as Account); var folder = account.Folders.Single(f => f.Path == "c:\\folder-001"); Assert.That(folder.Permissions, Is.Not.Null.And.Not.Empty); Assert.That(folder.Permissions, Has.Count.EqualTo(1)); Assert.That(folder.Permissions.First().Name, Is.EqualTo("LIST")); } }
public void Parse_Valid_CorrectlyParsedDatabasePermissions(string extension) { var assembly = Assembly.GetExecutingAssembly(); using (var stream = assembly.GetManifestResourceStream($"Idunn.SqlServer.Testing.Unit.Parser.Resources.Sample{extension}")) { var register = new ParserRegister(); var container = new ParserContainer(); container.Initialize(register, extension); var parser = register.GetRootParser(); var principal = (parser.Parse(stream).ElementAt(0) as Principal); var db = principal.Databases.Single(d => d.Name == "db-001"); Assert.That(db.Permissions, Is.Not.Null.And.Not.Empty); Assert.That(db.Permissions, Has.Count.EqualTo(1)); Assert.That(db.Permissions.First().Name, Is.EqualTo("CONNECT")); } }
//[TestCase(".yml")] public void Parse_ValidXmlWithMultiplePrincipals_CorrectlyPrincipals(string extension) { var assembly = Assembly.GetExecutingAssembly(); using (var stream = assembly.GetManifestResourceStream($"Idunn.FileShare.Testing.Unit.Parser.Resources.Multiple{extension}")) { var register = new FileShare.Parser.ParserRegister(); var container = new ParserContainer(); container.Initialize(register, extension); var parser = register.GetRootParser(); var accounts = (parser.Parse(stream) as IEnumerable <Account>); Assert.That(accounts, Is.Not.Null); Assert.That(accounts, Has.Count.EqualTo(2)); Assert.That(accounts.Any(a => a.Name == "domain\\account-001")); Assert.That(accounts.Any(a => a.Name == "domain\\account-002")); Assert.That(accounts.All(a => a.Folders.Count >= 1)); } }
//[TestCase(".yml")] public void Parse_ValidWithMultiplePrincipals_CorrectlyPrincipals(string extension) { var assembly = Assembly.GetExecutingAssembly(); using (var stream = assembly.GetManifestResourceStream($"Idunn.SqlServer.Testing.Unit.Parser.Resources.Multiple{extension}")) { var register = new ParserRegister(); var container = new ParserContainer(); container.Initialize(register, extension); var parser = register.GetRootParser(); var principals = (parser.Parse(stream) as IEnumerable <Principal>); Assert.That(principals, Is.Not.Null); Assert.That(principals, Has.Count.EqualTo(2)); Assert.That(principals.Any(p => p.Name == "ExecuteDwh")); Assert.That(principals.Any(p => p.Name == "Logger")); Assert.That(principals.All(p => p.Databases.Count >= 1)); } }
public void Parse_Valid_CorrectlyParsedSecurables(string extension) { var assembly = Assembly.GetExecutingAssembly(); using (var stream = assembly.GetManifestResourceStream($"Idunn.SqlServer.Testing.Unit.Parser.Resources.Sample{extension}")) { var register = new ParserRegister(); var container = new ParserContainer(); container.Initialize(register, extension); var parser = register.GetRootParser(); var principal = (parser.Parse(stream).ElementAt(0) as Principal); var db = principal.Databases.Single(d => d.Name == "db-001"); Assert.That(db.Securables, Is.Not.Null.And.Not.Empty); Assert.That(db.Securables, Has.Count.EqualTo(2)); Assert.That(db.Securables.All(s => s.Type == "schema")); Assert.That(db.Securables.Any(s => s.Name == "dbo")); Assert.That(db.Securables.Any(s => s.Name == "admin")); } }
protected static int Execute(ExecuteOptions options) { System.Console.WriteLine($"Execute permissions' checks based on {options.Source}."); //Parse the model var container = new ParserContainer(); container.Initialize(Path.GetExtension(options.Source)); var modelFactory = new ModelFactory(); var collection = modelFactory.Instantiate(options.Source, container); var types = collection.Select(o => o.GetType()).Distinct(); //Execute the checks foreach (var type in types) { var executorContainer = new ExecutorContainer(); executorContainer.Initialize(); var executorFactory = executorContainer.Retrieve(type); var textWriters = new List <TextWriter>() { System.Console.Out, }; if (!string.IsNullOrEmpty(options.Output)) { textWriters.Add(new StreamWriter(options.Output)); } var engine = executorFactory.Instantiate(textWriters); var objects = collection.Where(o => o.GetType() == type); engine.Execute(objects); } return(0); }