Esempio n. 1
0
        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);
        }
Esempio n. 2
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));
            }
        }
Esempio n. 3
0
        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"));
            }
        }
Esempio n. 4
0
        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"));
            }
        }
Esempio n. 5
0
        //[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));
            }
        }
Esempio n. 6
0
        //[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));
            }
        }
Esempio n. 7
0
        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"));
            }
        }
Esempio n. 8
0
        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);
        }