コード例 #1
0
        public CodeGeneratorForm()
        {
            InitializeComponent();

            templateGenerator = new TemplateGenerator();

            // List up all available Factions and select the first
            factionCombo.Items.AddRange(templateGenerator.Factions.ToArray());
            if (factionCombo.Items.Count > 0)
            {
                factionCombo.SelectedIndex = 0;
            }

            // List up all available Languages and select the first
            languageCombo.Items.AddRange(templateGenerator.Languages.ToArray());
            if (languageCombo.Items.Count > 0)
            {
                languageCombo.SelectedIndex = 0;
            }

            // List up all available Programming Languages and select the first
            programmingLanguageCombo.Items.AddRange(templateGenerator.ProgrammingLanguages.ToArray());
            if (programmingLanguageCombo.Items.Count > 0)
            {
                programmingLanguageCombo.SelectedIndex = 0;
            }

            // List up all available IDEs and select the first
            environmentComboBox.Items.AddRange(templateGenerator.Environments.ToArray());
            if (environmentComboBox.Items.Count > 0)
            {
                environmentComboBox.SelectedIndex = 0;
            }
        }
コード例 #2
0
        /// <summary>
        /// 生成代码文件
        /// </summary>
        public virtual void Generating()
        {
            foreach (var file in CodeFileInfos)
            {
                if (!Directory.Exists(file.AbsolutePath))
                {
                    Directory.CreateDirectory(Path.GetDirectoryName(file.AbsolutePath));
                }

                TemplateGenerator.ProcessTemplate(file.TemplatePath, file.AbsolutePath);
                if (TemplateGenerator.Errors.HasErrors)
                {
                    Logs.AppendLine($"Processing '{file.TemplatePath}' failed.");
                }

                foreach (System.CodeDom.Compiler.CompilerError err in TemplateGenerator.Errors)
                {
                    if (err.IsWarning)
                    {
                        Logs.AppendLine($"{err.FileName}({err.Line},{err.Column}): WARNING {err.ErrorText}");
                    }
                    else
                    {
                        Logs.AppendLine($"{err.FileName}({err.Line},{err.Column}): ERROR {err.ErrorText}");
                    }
                }
            }
        }
コード例 #3
0
        public IActionResult GetAllApplicationsPDF(int id)
        {
            var globalSettings = new GlobalSettings
            {
                ColorMode   = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize   = PaperKind.A4,
                Margins     = new MarginSettings {
                    Top = 10
                },
                DocumentTitle = "Application Document"
            };

            var objectSettings = new ObjectSettings
            {
                PagesCount     = true,
                HtmlContent    = TemplateGenerator.GetHTMLString(),
                WebSettings    = { DefaultEncoding = "utf-8", UserStyleSheet = Path.Combine(Directory.GetCurrentDirectory(), "assets", "styles.css") },
                HeaderSettings = { },
                FooterSettings = { FontName = "Arial", FontSize = 9, Line = true, Right = "Page [page] of [toPage]" }
            };

            var pdf = new HtmlToPdfDocument()
            {
                GlobalSettings = globalSettings,
                Objects        = { objectSettings }
            };

            var file = _converter.Convert(pdf);

            return(File(file, "application/pdf"));
        }
コード例 #4
0
        public IActionResult Get()
        {
            var globalSettings = new GlobalSettings
            {
                ColorMode   = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize   = PaperKind.A4,
                Margins     = new MarginSettings {
                    Top = 10
                },
                DocumentTitle = "PDF Report",
                Out           = @"D:\pdf\Employee_Report.pdf"
            };

            var objectSettings = new ObjectSettings
            {
                PagesCount     = true,
                HtmlContent    = TemplateGenerator.GetHTMLString(),
                WebSettings    = { DefaultEncoding = "utf-8", UserStyleSheet = Path.Combine(Directory.GetCurrentDirectory(), "assets", "styles.css") },
                HeaderSettings = { FontName = "Arial", FontSize = 9, Right = "Page [page] of [toPage]", Line = true },
                FooterSettings = { FontName = "Arial", FontSize = 9, Line = true, Center = "Report Footer" }
            };

            var pdf = new HtmlToPdfDocument()
            {
                GlobalSettings = globalSettings,
                Objects        = { objectSettings }
            };

            converter.Convert(pdf);

            return(Ok("Successfully created PDF document."));
        }
コード例 #5
0
        public virtual void Init(GeneratorParameters parameters)
        {
            if (parameters == null)
            {
                parameters = new GeneratorParameters();
            }


            Templates = GetTemplateFiles(Options.TemplateDirectory);

            Logs.AppendLine($"发现Template '{Templates.Count}' 个。");

            foreach (var item in parameters)
            {
                Parameters.Add(item.Key, item.Value);
            }

            var pathBuilder = new GeneratorPathBuilder(Options, Parameters);

            foreach (var template in Templates)
            {
                CodeFileInfos.Add(pathBuilder.Build(template));
            }

            TemplateGenerator = new TemplateGenerator();

            TemplateGenerator.Refs.Add(Path.Combine(AppContext.BaseDirectory, "System.CodeDom.dll"));
            TemplateGenerator.Refs.Add("System.ComponentModel.Primitives.dll");

            foreach (var item in Parameters)
            {
                TemplateGenerator.TryAddParameter(item.Key + "=" + item.Value);
            }
        }
コード例 #6
0
ファイル: ProcessingTests.cs プロジェクト: atifaziz/t4
        public async Task IncludeFileThatDoesNotExistTest()
        {
            var gen = new TemplateGenerator();
            await gen.ProcessTemplateAsync(null, "<#@ include file=\"none.tt\" #>", null);

            Assert.StartsWith("Could not read included file 'none.tt'", gen.Errors.OfType <CompilerError> ().First().ErrorText);
        }
コード例 #7
0
        public IActionResult CreatePDF(string contratcIds, string request)
        {
            try
            {
                GlobalSettings globalSettings = getGlobalConfig();

                ObjectSettings      objectSettings = getObjectSettings();
                IContractRepository Repository     = new ContractRepository();
                List <Contract>     contratcs      = Repository.GetByIdStringList(contratcIds);
                objectSettings.HtmlContent = TemplateGenerator.GetHTMLString(contratcs, request);

                var pdf = new HtmlToPdfDocument()
                {
                    GlobalSettings = globalSettings,
                    Objects        = { objectSettings }
                };

                _converter.Convert(pdf);
                var buffer = System.IO.File.ReadAllBytes(this._PDFLocale);
                return(File(buffer, "application/pdf"));
            }
            catch (System.Exception)
            {
                throw;
            }
        }
コード例 #8
0
        public async Task ValidateVMInVnetButNotInTargetVNet()
        {
            AzureContext       azureContextUSCommercial          = TestHelper.SetupAzureContext();
            TemplateGenerator  templateGenerator                 = TestHelper.SetupTemplateGenerator(azureContextUSCommercial);
            FakeAzureRetriever azureContextUSCommercialRetriever = (FakeAzureRetriever)azureContextUSCommercial.AzureRetriever;

            azureContextUSCommercialRetriever.LoadDocuments(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TestDocs\\VM3"));

            var artifacts = new AsmArtifacts();

            artifacts.VirtualMachines.Add((await azureContextUSCommercialRetriever.GetAzureAsmCloudServices())[0].VirtualMachines[0]);

            bool exceptionThrown = false;

            try
            {
                TemplateResult templateResult = await templateGenerator.GenerateTemplate(TestHelper.GetTestAzureSubscription(), TestHelper.GetTestAzureSubscription(), artifacts, await TestHelper.GetTargetResourceGroup(azureContextUSCommercial), AppDomain.CurrentDomain.BaseDirectory);
            }
            catch (Exception exc)
            {
                if (exc.GetType() == typeof(ArgumentException) && exc.Message == "Target Virtual Network for ASM Virtual Machine 'VM3' must be specified.")
                {
                    exceptionThrown = true;
                }
            }

            Assert.IsFalse(!exceptionThrown, "Did not receive Null Target Virtual Network Argument Exception");
        }
コード例 #9
0
        public async Task ValidateVMInExistingArmSubnetId()
        {
            AzureContext       azureContextUSCommercial          = TestHelper.SetupAzureContext();
            TemplateGenerator  templateGenerator                 = TestHelper.SetupTemplateGenerator(azureContextUSCommercial);
            FakeAzureRetriever azureContextUSCommercialRetriever = (FakeAzureRetriever)azureContextUSCommercial.AzureRetriever;

            azureContextUSCommercialRetriever.LoadDocuments(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TestDocs\\VM3"));

            var artifacts = new AsmArtifacts();

            artifacts.VirtualMachines.Add((await azureContextUSCommercialRetriever.GetAzureAsmCloudServices())[0].VirtualMachines[0]);
            TestHelper.SetTargetSubnets(artifacts);

            TemplateResult templateReault = await templateGenerator.GenerateTemplate(TestHelper.GetTestAzureSubscription(), TestHelper.GetTestAzureSubscription(), artifacts, await TestHelper.GetTargetResourceGroup(azureContextUSCommercial), AppDomain.CurrentDomain.BaseDirectory);

            JObject templateJson = templateReault.GenerateTemplate();

            // Validate VM
            var vmResource = templateJson["resources"].Where(
                j => j["type"].Value <string>() == "Microsoft.Compute/virtualMachines").Single();

            Assert.AreEqual("VM3-vm", vmResource["name"].Value <string>());
            StringAssert.Contains(vmResource["properties"]["networkProfile"]["networkInterfaces"][0]["id"].Value <string>(),
                                  "'" + ArmConst.ProviderNetworkInterfaces + "VM3-nic'");

            // Validate NIC
            var nicResource = templateJson["resources"].Where(
                j => j["type"].Value <string>() == "Microsoft.Network/networkInterfaces").Single();

            Assert.AreEqual("VM3-nic", nicResource["name"].Value <string>());
            StringAssert.Contains(nicResource["properties"]["ipConfigurations"][0]["properties"]["subnet"]["id"].Value <string>(),
                                  "/subscriptions/22222222-2222-2222-2222-222222222222/resourceGroups/dummygroup-rg/providers/Microsoft.Network/virtualNetworks/DummyVNet/subnets/subnet01");
        }
コード例 #10
0
        public void TestAPI()
        {
            TemplateGenerator generator = GetTemplateGenerator();
            var template = generator.GenerateTemplate().GetAwaiter().GetResult();
            var obj      = ((JArray)template["resources"]).Where(rr => rr.Value <string>("type") == "Microsoft.ApiManagement/service/apis").First();


            Assert.AreEqual("Microsoft.ApiManagement/service/apis", obj.Value <string>("type"));
            Assert.AreEqual("2017-03-01", obj.Value <string>("apiVersion"));

            Assert.AreEqual("[concat(parameters('service_apidev_name'), '/' ,parameters('api_invoice-retrieval-api_name'))]", obj.Value <string>("name"));
            Assert.AreEqual(3, obj["resources"].Count());
            Assert.AreEqual(2, obj["dependsOn"].Count());

            var prop = obj["properties"];

            Assert.AreEqual("Invoices", prop.Value <string>("displayName"));
            Assert.AreEqual("[parameters('invoice-retrieval-api_apiRevision')]", prop.Value <string>("apiRevision"));
            Assert.AreEqual("Retrieves invoices depending on market and invoice id", prop.Value <string>("description"));
            Assert.AreEqual("[parameters('invoice-retrieval-api_serviceUrl')]", prop.Value <string>("serviceUrl"));
            Assert.AreEqual("api/documents/invoices", prop.Value <string>("path"));
            Assert.AreEqual("[parameters('invoice-retrieval-api_isCurrent')]", prop.Value <string>("isCurrent"));
            Assert.AreEqual("[parameters('invoice-retrieval-api_apiVersion')]", prop.Value <string>("apiVersion"));
            Assert.AreEqual("[resourceId('Microsoft.ApiManagement/service/api-version-sets',parameters('service_apidev_name'), '5b1fb4607e5c66b5cb2fe2e8')]", prop.Value <string>("apiVersionSetId"));
            Assert.AreEqual("https", prop.Value <JArray>("protocols").First().Value <string>());
        }
コード例 #11
0
 public TicketController(ITicket ticket, IMemoryCache cache, IConverter converter, TemplateGenerator template)
 {
     _ticket    = ticket;
     _cache     = cache;
     _converter = converter;
     _template  = template;
 }
コード例 #12
0
        private JObject GetTemplate()
        {
            var generator = new TemplateGenerator("INT0012C.Workday.Rehire.Leavers", "c107df29-a4af-4bc9-a733-f88f0eaa4296", "blobtest", new MockResourceCollector("BlobConnector"));

            generator.GenerateHttpTriggerUrlOutput = true;
            return(generator.GenerateTemplate().GetAwaiter().GetResult());
        }
コード例 #13
0
        public async Task <IActionResult> CreatePDFDownload()
        {
            var pdfData = await _repository.Book.GetBookAuthorReports();

            var globalSettings = new GlobalSettings
            {
                ColorMode   = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize   = PaperKind.A4,
                Margins     = new MarginSettings {
                    Top = 10
                },
                DocumentTitle = "Book Author Report"
            };
            var objectSettings = new ObjectSettings
            {
                PagesCount     = true,
                HtmlContent    = TemplateGenerator.GetHTMLString(pdfData),
                WebSettings    = { DefaultEncoding = "utf-8", UserStyleSheet = Path.Combine(Directory.GetCurrentDirectory(), "assets", "styles.css") },
                HeaderSettings = { FontName = "Arial", FontSize = 9, Right = "Page [page] of [toPage]", Line = true },
                FooterSettings = { FontName = "Arial", FontSize = 9, Line = true, Center = "Report Footer" }
            };
            var pdf = new HtmlToPdfDocument()
            {
                GlobalSettings = globalSettings,
                Objects        = { objectSettings }
            };

            var file = _converter.Convert(pdf);

            return(File(file, "application/pdf", "BookReport.pdf"));
        }
コード例 #14
0
        public IActionResult CreatePDF()
        {
            var globalSettings = new GlobalSettings
            {
                ColorMode   = ColorMode.Grayscale,
                Orientation = Orientation.Portrait,
                PaperSize   = PaperKind.A4,
                Margins     = new MarginSettings {
                    Top = 10
                },
                DocumentTitle = "PDF Report",
                Out           = @"C:\PDFCreator\Employee_Report1.pdf"
            };
            var objectSettings = new ObjectSettings
            {
                PagesCount     = true,
                HtmlContent    = TemplateGenerator.GetHTMLString(),
                WebSettings    = { DefaultEncoding = "utf-8", UserStyleSheet = Path.Combine(Directory.GetCurrentDirectory(), "assets", "styles.css") },
                HeaderSettings = { FontName = "Arial", FontSize = 9, Right = "Page [page] of [toPage]", Line = true },
                FooterSettings = { FontName = "Arial", FontSize = 9, Line = true, Center = "Report Footer" }
            };
            var pdf = new HtmlToPdfDocument()
            {
                GlobalSettings = globalSettings,
                Objects        = { objectSettings }
            };

            //_converter.Convert(pdf); IF WE USE Out PROPERTY IN THE GlobalSettings CLASS, THIS IS ENOUGH FOR CONVERSION

            var file = _converter.Convert(pdf);

            //return Ok("Successfully created PDF document.");
            return(File(file, "application/pdf", "EmployeeReport1.pdf"));
            //return File(file, "application/pdf");
        }
コード例 #15
0
		public void TemplateGeneratorTest ()
		{
			var gen = new TemplateGenerator ();
			string tmp = null;
			gen.ProcessTemplate (null, "<#@ template language=\"C#\" #>", ref tmp, out tmp);
			Assert.AreEqual (0, gen.Errors.Count, "ProcessTemplate");
		}
コード例 #16
0
        public IActionResult CreatePdfForUser(int userId)
        {
            var templateGenerator = new TemplateGenerator(_repo, _mapper);
            var globalSettings    = new GlobalSettings
            {
                ColorMode   = ColorMode.Color,
                Orientation = Orientation.Portrait,
                PaperSize   = PaperKind.A4,
                Margins     = new MarginSettings {
                    Top = 15, Bottom = 20
                },
                DocumentTitle = "بطاقة مشترك"
            };

            var objectSettings = new ObjectSettings
            {
                PagesCount     = true,
                HtmlContent    = templateGenerator.GetHTMLStringForUser(userId),
                WebSettings    = { DefaultEncoding = "utf-8", UserStyleSheet = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "assets", "styles.css") },
                HeaderSettings = { FontName = "Impact", FontSize = 12, Spacing = 5, Line = false },
                FooterSettings = { FontName = "Geneva", FontSize = 15, Spacing = 7, Line = true, Center = "ZwajApp By Eng Muhammad Awadallah", Right = "[page]" }
            };

            var pdf = new HtmlToPdfDocument()
            {
                GlobalSettings = globalSettings,
                Objects        = { objectSettings }
            };

            var file = _converter.Convert(pdf);

            return(File(file, "application/pdf"));
        }
コード例 #17
0
        public void TestDiagnosticSettings()
        {
            // /subscriptions/89d02439-770d-43f3-9e4a-8b910457a10c/resourceGroups/INT001.Invoice/providers/Microsoft.Logic/workflows/INT001.Invoice/providers/microsoft.insights/diagnosticSettings/service
            var generator = new TemplateGenerator("INT001.Invoice", "89d02439-770d-43f3-9e4a-8b910457a10c", "INT001.Invoice", new MockResourceCollector("DiagnosticSettings"));

            generator.DiagnosticSettings = true;

            var defintion = generator.GenerateTemplate().GetAwaiter().GetResult();

            Assert.AreEqual("providers/diagnosticSettings", defintion["resources"][0]["resources"][0]["type"]);
            Assert.AreEqual("[concat('Microsoft.Insights/', parameters('diagnosticSettings_name'))]", defintion["resources"][0]["resources"][0]["name"]);
            Assert.AreEqual("[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', parameters('diagnosticSettings_resourceGroupName'), '/providers/Microsoft.OperationalInsights/workspaces/', parameters('diagnosticSettings_workspaceName'))]", defintion["resources"][0]["resources"][0]["properties"]["workspaceId"]);
            Assert.AreEqual("service", defintion["parameters"]["diagnosticSettings_name"]["defaultValue"]);
            Assert.AreEqual("twobits", defintion["parameters"]["diagnosticSettings_workspaceName"]["defaultValue"]);
            Assert.AreEqual("shared.infrastructure", defintion["parameters"]["diagnosticSettings_resourceGroupName"]["defaultValue"]);
            Assert.AreEqual("[parameters('logicAppName')]", defintion["resources"][0]["resources"][0]["dependsOn"][0]);

            // Logs
            Assert.AreEqual("[parameters('diagnosticSettings_logsEnabled')]", defintion["resources"][0]["resources"][0]["properties"]["logs"][0]["enabled"]);
            Assert.AreEqual("WorkflowRuntime", defintion["resources"][0]["resources"][0]["properties"]["logs"][0]["category"]);
            Assert.AreEqual(true, defintion["parameters"]["diagnosticSettings_logsEnabled"]["defaultValue"]);
            Assert.AreEqual(true, defintion["parameters"]["diagnosticSettings_logsRetentionPolicyEnabled"]["defaultValue"]);
            Assert.AreEqual(3, defintion["parameters"]["diagnosticSettings_logsRetentionPolicyDays"]["defaultValue"]);

            // Metrics
            Assert.AreEqual("[parameters('diagnosticSettings_metricsEnabled')]", defintion["resources"][0]["resources"][0]["properties"]["metrics"][0]["enabled"]);
            Assert.AreEqual("AllMetrics", defintion["resources"][0]["resources"][0]["properties"]["metrics"][0]["category"]);
            Assert.AreEqual(false, defintion["parameters"]["diagnosticSettings_metricsEnabled"]["defaultValue"]);
            Assert.AreEqual(false, defintion["parameters"]["diagnosticSettings_metricsRetentionPolicyEnabled"]["defaultValue"]);
            Assert.AreEqual(0, defintion["parameters"]["diagnosticSettings_metricsRetentionPolicyDays"]["defaultValue"]);

            Assert.AreEqual("[parameters('logicAppLocation')]", defintion["resources"][0]["location"]);
        }
コード例 #18
0
        public void TestAPIMMultipleSame()
        {
            var content = GetEmbededFileContent("LogicAppTemplate.Test.TestFiles.APIMMultipleSame.json");

            var generator = new TemplateGenerator("", "", "", null);

            var defintion = generator.generateDefinition(JObject.Parse(content)).GetAwaiter().GetResult();

            //check parameters
            Assert.AreEqual("Api-Default-West-Europe", defintion["parameters"]["apimResourceGroup"]["defaultValue"]);
            Assert.AreEqual("apiminstancename", defintion["parameters"]["apimInstanceName"]["defaultValue"]);
            Assert.AreEqual("58985740990a990dd41e5392", defintion["parameters"]["apimApiId"]["defaultValue"]);
            Assert.AreEqual("8266eb865e6c440eb007067773e6890b", defintion["parameters"]["apimSubscriptionKey"]["defaultValue"]);

            //check parameters 2 is null
            Assert.IsNull(defintion["parameters"]["apimResourceGroup2"]);
            Assert.IsNull(defintion["parameters"]["apimInstanceName2"]);
            Assert.IsNull(defintion["parameters"]["apimApiId2"]);
            Assert.IsNull(defintion["parameters"]["apimSubscriptionKey2"]);

            //check Upload Attachment
            Assert.AreEqual("[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/', parameters('apimResourceGroup'),'/providers/Microsoft.ApiManagement/service/', parameters('apimInstanceName'),'/apis/', parameters('apimApiId'),'')]", defintion["resources"][0]["properties"]["definition"]["actions"]["UploadAttachment"]["inputs"]["api"]["id"]);
            Assert.AreEqual("[parameters('apimSubscriptionKey')]", defintion["resources"][0]["properties"]["definition"]["actions"]["UploadAttachment"]["inputs"]["subscriptionKey"]);
            //check upload Attachment 2
            Assert.AreEqual("[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/', parameters('apimResourceGroup'),'/providers/Microsoft.ApiManagement/service/', parameters('apimInstanceName'),'/apis/', parameters('apimApiId'),'')]", defintion["resources"][0]["properties"]["definition"]["actions"]["UploadAttachment2"]["inputs"]["api"]["id"]);
            Assert.AreEqual("[parameters('apimSubscriptionKey')]", defintion["resources"][0]["properties"]["definition"]["actions"]["UploadAttachment2"]["inputs"]["subscriptionKey"]);
        }
コード例 #19
0
        public void GenerateSQLGatewayConnectionTemplate()
        {
            var apiresource         = JObject.Parse(GetEmbededFileContent("LogicAppTemplate.Test.TestFiles.ApiSource.sqlgateway.json"));
            var apiresourceInstance = JObject.Parse(GetEmbededFileContent("LogicAppTemplate.Test.TestFiles.ApiSource.sqlgatewayInstance.json"));
            var generator           = new TemplateGenerator("", "", "", null);

            var defintion = generator.generateConnectionTemplate(apiresource, apiresourceInstance, "sql", "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', parameters('logicAppLocation'), '/managedApis/', 'sql')]", "sql_name");

            var template = generator.GetTemplate();

            Assert.AreEqual("windows", template.parameters["sql_authType"]["defaultValue"]);
            Assert.AreEqual("windows", template.parameters["sql_authType"]["allowedValues"][0]);
            Assert.AreEqual("Username credential", template.parameters["sql_username"]["metadata"]["description"]);

            Assert.AreEqual("[parameters('sql_server')]", defintion["properties"]["parameterValues"]["server"]);
            Assert.AreEqual("[parameters('sql_database')]", defintion["properties"]["parameterValues"]["database"]);
            Assert.AreEqual("[parameters('sql_authType')]", defintion["properties"]["parameterValues"]["authType"]);
            Assert.AreEqual("[parameters('sql_username')]", defintion["properties"]["parameterValues"]["username"]);
            Assert.AreEqual("[parameters('sql_password')]", defintion["properties"]["parameterValues"]["password"]);
            Assert.AreEqual("[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('sql_gatewayresourcegroup'),'/providers/Microsoft.Web/connectionGateways/',parameters('sql_gatewayname'))]", defintion["properties"]["parameterValues"]["gateway"]["id"]);

            Assert.AreEqual("[parameters('sql_name')]", defintion["name"]);
            Assert.AreEqual("[parameters('sql_displayName')]", defintion["properties"]["displayName"]);

            Assert.AreEqual("SQL server OnPrem", template.parameters["sql_displayName"]["defaultValue"]);
            Assert.AreEqual("[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', parameters('logicAppLocation'), '/managedApis/', 'sql')]", defintion["properties"]["api"]["id"]);
        }
コード例 #20
0
        public void GenerateSQLCloudConnectionTemplate()
        {
            var apiresource         = JObject.Parse(GetEmbededFileContent("LogicAppTemplate.Test.TestFiles.ApiSource.sqlcloud.json"));
            var apiresourceInstance = JObject.Parse(GetEmbededFileContent("LogicAppTemplate.Test.TestFiles.ApiSource.sqlcloudInstance.json"));
            var generator           = new TemplateGenerator("", "", "", null);

            var defintion = generator.generateConnectionTemplate(apiresource, apiresourceInstance, "sql-1", "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', parameters('logicAppLocation'), '/managedApis/', 'sql')]", "sql-1_name");

            var template = generator.GetTemplate();

            Assert.IsNull(template.parameters["sql-1_authType"]);
            Assert.AreEqual("Username credential", template.parameters["sql-1_username"]["metadata"]["description"]);

            Assert.AreEqual("[parameters('sql-1_server')]", defintion["properties"]["parameterValues"]["server"]);
            Assert.AreEqual("[parameters('sql-1_database')]", defintion["properties"]["parameterValues"]["database"]);
            Assert.IsNull(defintion["properties"]["parameterValues"]["authType"]);
            Assert.AreEqual("[parameters('sql-1_username')]", defintion["properties"]["parameterValues"]["username"]);
            Assert.AreEqual("[parameters('sql-1_password')]", defintion["properties"]["parameterValues"]["password"]);
            Assert.IsNull(defintion["properties"]["parameterValues"]["gateway"]);

            Assert.AreEqual("[parameters('sql-1_name')]", defintion["name"]);
            Assert.AreEqual("[parameters('sql-1_displayName')]", defintion["properties"]["displayName"]);

            Assert.AreEqual("SQL Azure", template.parameters["sql-1_displayName"]["defaultValue"]);
            Assert.AreEqual("[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', parameters('logicAppLocation'), '/managedApis/', 'sql')]", defintion["properties"]["api"]["id"]);
        }
コード例 #21
0
        public void TestHTTPAuthentication()
        {
            var content = GetEmbededFileContent("LogicAppTemplate.Test.TestFiles.HTTP-Authentication.json");

            var generator = new TemplateGenerator("", "", "", null);

            var defintion = generator.generateDefinition(JObject.Parse(content)).GetAwaiter().GetResult();

            //check parameters basic auth
            Assert.AreEqual(defintion["parameters"]["HTTP-Password"]["defaultValue"], "bbb");
            Assert.AreEqual(defintion["parameters"]["HTTP-Username"]["defaultValue"], "aa");
            Assert.AreEqual(defintion["parameters"]["HTTP-URI"]["defaultValue"], "http://google.se");
            Assert.AreEqual(defintion["resources"][0]["properties"]["definition"]["actions"]["HTTP"]["inputs"]["uri"], "[parameters('HTTP-URI')]");

            //check parameters certificate auth
            Assert.AreEqual(defintion["parameters"]["HTTP_2-Password"]["defaultValue"], "mypassword");
            Assert.AreEqual(defintion["parameters"]["HTTP_2-Pfx"]["defaultValue"], "pfxcontent");
            Assert.AreEqual(defintion["resources"][0]["properties"]["definition"]["actions"]["HTTP_2"]["inputs"]["uri"], "[parameters('HTTP_2-URI')]");

            //check parameters oauth AAD
            Assert.AreEqual(defintion["parameters"]["HTTP_3-Audience"]["defaultValue"], "myaudience");
            Assert.AreEqual(defintion["parameters"]["HTTP_3-Authority"]["defaultValue"], "https://login.microsoft.com/my");
            Assert.AreEqual(defintion["parameters"]["HTTP_3-ClientId"]["defaultValue"], "myclientid");
            Assert.AreEqual(defintion["parameters"]["HTTP_3-Secret"]["defaultValue"], "mysecret");
            Assert.AreEqual(defintion["parameters"]["HTTP_3-Tenant"]["defaultValue"], "mytenant");
            Assert.AreEqual(defintion["parameters"]["HTTP_3-URI"]["defaultValue"], "http://google.se/w2");
            Assert.AreEqual(defintion["resources"][0]["properties"]["definition"]["actions"]["HTTP_3"]["inputs"]["uri"], "[parameters('HTTP_3-URI')]");

            //check parameters Raw
            Assert.AreEqual(defintion["parameters"]["HTTP_4-Raw"]["defaultValue"], "myauthheader");
            Assert.AreEqual(defintion["resources"][0]["properties"]["definition"]["actions"]["HTTP_4"]["inputs"]["uri"], "[parameters('HTTP_4-URI')]");
        }
コード例 #22
0
        public void GenerateFileSystemGatewayConnectionTemplate()
        {
            var apiresource         = JObject.Parse(GetEmbededFileContent("LogicAppTemplate.Test.TestFiles.ApiSource.filegateway.json"));
            var apiresourceInstance = JObject.Parse(GetEmbededFileContent("LogicAppTemplate.Test.TestFiles.ApiSource.filegatewayInstance.json"));
            var generator           = new TemplateGenerator("", "", "", null);

            var defintion = generator.generateConnectionTemplate(apiresource, apiresourceInstance, "filesystem", "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', parameters('logicAppLocation'), '/managedApis/filesystem')]", "filesystem_name");

            var template = generator.GetTemplate();

            Assert.AreEqual("windows", template.parameters["filesystem_authType"]["defaultValue"]);
            Assert.AreEqual("Root folder path (examples: \\\\MACHINE\\myShare or C:\\myShare)", template.parameters["filesystem_rootfolder"]["metadata"]["description"]);

            Assert.AreEqual("[parameters('filesystem_rootfolder')]", defintion["properties"]["parameterValues"]["rootfolder"]);
            Assert.AreEqual("[parameters('filesystem_authType')]", defintion["properties"]["parameterValues"]["authType"]);
            Assert.AreEqual("[parameters('filesystem_username')]", defintion["properties"]["parameterValues"]["username"]);
            Assert.AreEqual("[parameters('filesystem_password')]", defintion["properties"]["parameterValues"]["password"]);
            Assert.AreEqual("[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('filesystem_gatewayresourcegroup'),'/providers/Microsoft.Web/connectionGateways/',parameters('filesystem_gatewayname'))]", defintion["properties"]["parameterValues"]["gateway"]["id"]);

            Assert.AreEqual("[parameters('filesystem_name')]", defintion["name"]);
            Assert.AreEqual("[parameters('filesystem_displayName')]", defintion["properties"]["displayName"]);

            Assert.AreEqual("Malos-LogicApp2015", template.parameters["filesystem_gatewayname"]["defaultValue"]);
            Assert.AreEqual("OnPremDataGateway", template.parameters["filesystem_gatewayresourcegroup"]["defaultValue"]);

            Assert.AreEqual("File System", template.parameters["filesystem_displayName"]["defaultValue"]);
            Assert.AreEqual("[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', parameters('logicAppLocation'), '/managedApis/filesystem')]", defintion["properties"]["api"]["id"]);
        }
コード例 #23
0
        public void TestTriggerWithGateway()
        {
            var content = GetEmbededFileContent("LogicAppTemplate.Test.TestFiles.file-test-trigger-gateway.json");

            var generator = new TemplateGenerator("", "fakeb73-d0ff-455d-a2bf-eae0b300696d", "", null);
            var defintion = generator.generateDefinition(JObject.Parse(content), false).GetAwaiter().GetResult();

            //check parameters
            Assert.AreEqual(defintion["parameters"]["When_a_file_is_createdFrequency"]["defaultValue"], "Minute");
            Assert.AreEqual(defintion["parameters"]["When_a_file_is_createdInterval"]["defaultValue"], 3);
            Assert.AreEqual(defintion["parameters"]["filesystem-1_name"]["defaultValue"], "filesystem-1");


            //check nested nested action
            Assert.AreEqual("[parameters('When_a_file_is_createdFrequency')]", defintion["resources"][0]["properties"]["definition"]["triggers"]["When_a_file_is_created"]["recurrence"]["frequency"]);
            Assert.AreEqual("[parameters('When_a_file_is_createdInterval')]", defintion["resources"][0]["properties"]["definition"]["triggers"]["When_a_file_is_created"]["recurrence"]["interval"]);

            //make sure no depends on is added
            Assert.AreEqual(0, defintion["resources"][0]["dependsOn"].Count());

            //File trigger parameters and base64 handling
            Assert.IsNotNull(defintion["resources"][0]["properties"]["definition"]["triggers"]["When_a_file_is_created"]["metadata"]["[base64(parameters('When_a_file_is_created-folderPath'))]"]);
            Assert.AreEqual("[parameters('When_a_file_is_created-folderPath')]", defintion["resources"][0]["properties"]["definition"]["triggers"]["When_a_file_is_created"]["metadata"]["[base64(parameters('When_a_file_is_created-folderPath'))]"]);
            Assert.AreEqual("[base64(parameters('When_a_file_is_created-folderPath'))]", defintion["resources"][0]["properties"]["definition"]["triggers"]["When_a_file_is_created"]["inputs"]["queries"]["folderId"]);
        }
コード例 #24
0
        public void TestFileLogicApp()
        {
            var content = GetEmbededFileContent("LogicAppTemplate.Test.TestFiles.file-test-readfolder.json");

            var generator = new TemplateGenerator("", "fakeecb73-d0ff-455d-a2bf-eae0b300696d", "", null);
            var defintion = generator.generateDefinition(JObject.Parse(content), false).GetAwaiter().GetResult();

            //check parameters
            Assert.AreEqual(defintion["parameters"]["RecurrenceFrequency"]["defaultValue"], "Minute");
            Assert.AreEqual(defintion["parameters"]["RecurrenceInterval"]["defaultValue"], 3);
            Assert.AreEqual(defintion["parameters"]["filesystem-1_name"]["defaultValue"], "filesystem-1");


            //check nested nested action
            Assert.AreEqual("[parameters('RecurrenceFrequency')]", defintion["resources"][0]["properties"]["definition"]["triggers"]["Recurrence"]["recurrence"]["frequency"]);
            Assert.AreEqual("[parameters('RecurrenceInterval')]", defintion["resources"][0]["properties"]["definition"]["triggers"]["Recurrence"]["recurrence"]["interval"]);

            //make sure no depends on is added
            Assert.AreEqual(0, defintion["resources"][0]["dependsOn"].Count());

            //File trigger parameters and base64 handling
            Assert.IsNotNull(defintion["resources"][0]["properties"]["definition"]["actions"]["List_files_in_folder"]["metadata"]["[base64(parameters('List_files_in_folder-folderPath'))]"]);
            Assert.AreEqual("[parameters('List_files_in_folder-folderPath')]", defintion["resources"][0]["properties"]["definition"]["actions"]["List_files_in_folder"]["metadata"]["[base64(parameters('List_files_in_folder-folderPath'))]"]);
            Assert.AreEqual("[concat('/datasets/default/folders/@{encodeURIComponent(encodeURIComponent(', parameters('__apostrophe'), base64(parameters('List_files_in_folder-folderPath')), parameters('__apostrophe'), '))}')]", defintion["resources"][0]["properties"]["definition"]["actions"]["List_files_in_folder"]["inputs"]["path"]);
            //Assert.AreEqual("[base64(parameters('When_a_file_is_created-folderPath'))]", defintion["resources"][0]["properties"]["definition"]["triggers"]["When_a_file_is_created"]["inputs"]["queries"]["folderId"]);
        }
コード例 #25
0
        /// <summary>
        /// This is a helper function that generates the steps that need to be executed for initializing the kernel and ProcessedInput
        /// </summary>
        /// <param name="rawSchema">rawSchema as passed in from the frontend</param>
        /// <param name="sampleDataPath">Sample Data path where the sample data is stored</param>
        /// <param name="normalizationSnippet">normalizationSnippet as passed in from the frontend</param>
        private void DiagnosticInputhelper(string rawSchema, string sampleDataPath, string normalizationSnippet, string flowId)
        {
            List <string> columnNames = new List <string>();
            var           normalizationSnippetLines = normalizationSnippet.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

            columnNames.AddRange(normalizationSnippetLines);
            string finalNormalizationString = string.Empty;

            if (columnNames.Count == 0)
            {
                finalNormalizationString = "\"Raw.*\"";
            }
            else
            {
                finalNormalizationString = $"\"{columnNames[0]}\"";
                for (int i = 1; i < columnNames.Count; i++)
                {
                    finalNormalizationString = finalNormalizationString + $@",""{columnNames[i]}""";
                }
            }
            Dictionary <string, string> values = new Dictionary <string, string>
            {
                ["RawSchema"]            = rawSchema,
                ["SampleDataPath"]       = sampleDataPath,
                ["NormalizationSnippet"] = finalNormalizationString,
                ["BinName"]           = TranslateBinNames(_engineEnvironment.EngineFlowConfig.BinaryName, _engineEnvironment.EngineFlowConfig.OpsStorageAccountName, _engineEnvironment.EngineFlowConfig.InteractiveQueryDefaultContainer),
                ["KernelDisplayName"] = _engineEnvironment.GenerateKernelDisplayName(flowId)
            };

            SetupSteps = Helper.TranslateOutputTemplate(TemplateGenerator.GetSetupStepsTemplate(), values);
        }
コード例 #26
0
        public void LoadLogicAppCustom()
        {
            TemplateGenerator generator = GetTemplateGenerator();
            var template = generator.GenerateTemplate().GetAwaiter().GetResult();

            Assert.IsNotNull(template);
        }
コード例 #27
0
        public dynamic RetornoTotalOcorrencia([FromBody] FiltroOcorrenciaCommands command)
        {
            try
            {
                if (!command.IsValid())
                {
                    return(new ComandResult(false, "Por favor corrija os campos abaixo", command.Notifications));
                }


                byte[] file;

                var retorno = _ocorrenciaRepositorio.RetornoTotalOcorrencia(command);


                var obj = TemplateGenerator.TotalOcorrencias(retorno);

                var pdf = RetornoPdf.Retorno(obj, "assets", "styles.css", Orientation.Landscape);


                file = _converter.Convert(pdf);

                return(File(file, "application/pdf"));
            }
            catch (NullReferenceException ex)
            {
                return(ex.Message);
            }
        }
コード例 #28
0
        public async Task ValidateSingleVnetWithNoSubnetsGetsNewDefaultSubet()
        {
            AzureContext       azureContextUSCommercial          = TestHelper.SetupAzureContext();
            TemplateGenerator  templateGenerator                 = TestHelper.SetupTemplateGenerator(azureContextUSCommercial);
            FakeAzureRetriever azureContextUSCommercialRetriever = (FakeAzureRetriever)azureContextUSCommercial.AzureRetriever;

            azureContextUSCommercialRetriever.LoadDocuments(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TestDocs\\VNET4"));

            var artifacts = new AsmArtifacts();

            artifacts.VirtualNetworks.Add(await azureContextUSCommercialRetriever.GetAzureAsmVirtualNetwork("asmnet"));

            TemplateResult templateResult = await templateGenerator.GenerateTemplate(TestHelper.GetTestAzureSubscription(), TestHelper.GetTestAzureSubscription(), artifacts, await TestHelper.GetTargetResourceGroup(azureContextUSCommercial), AppDomain.CurrentDomain.BaseDirectory);

            JObject templateJson = templateResult.GenerateTemplate();

            // Validate VNETs
            var vnets = templateJson["resources"].Children().Where(
                r => r["type"].Value <string>() == "Microsoft.Network/virtualNetworks");

            Assert.AreEqual(1, vnets.Count());
            Assert.AreEqual("asmnet-vnet", vnets.First()["name"].Value <string>());
            Assert.AreEqual("10.0.0.0/20", vnets.First()["properties"]["addressSpace"]["addressPrefixes"][0].Value <string>());

            // Validate subnets
            var subnets = vnets.First()["properties"]["subnets"];

            Assert.AreEqual(1, subnets.Count());
            Assert.AreEqual("Subnet1", subnets[0]["name"].Value <string>());
            Assert.AreEqual("10.0.0.0/20", subnets[0]["properties"]["addressPrefix"].Value <string>());
        }
コード例 #29
0
        public async Task ValidateSingleVnetWithNsgAndRT()
        {
            AzureContext       azureContextUSCommercial          = TestHelper.SetupAzureContext();
            TemplateGenerator  templateGenerator                 = TestHelper.SetupTemplateGenerator(azureContextUSCommercial);
            FakeAzureRetriever azureContextUSCommercialRetriever = (FakeAzureRetriever)azureContextUSCommercial.AzureRetriever;

            azureContextUSCommercialRetriever.LoadDocuments(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "TestDocs\\VNET2"));

            var artifacts = new AsmArtifacts();

            artifacts.VirtualNetworks.Add(await azureContextUSCommercialRetriever.GetAzureAsmVirtualNetwork("asmtest"));
            artifacts.NetworkSecurityGroups.Add(await azureContextUSCommercialRetriever.GetAzureAsmNetworkSecurityGroup("asmnsg"));

            TemplateResult templateResult = await templateGenerator.GenerateTemplate(TestHelper.GetTestAzureSubscription(), TestHelper.GetTestAzureSubscription(), artifacts, await TestHelper.GetTargetResourceGroup(azureContextUSCommercial), AppDomain.CurrentDomain.BaseDirectory);

            JObject templateJson = templateResult.GenerateTemplate();

            // Validate NSG
            var nsgs = templateJson["resources"].Children().Where(
                r => r["type"].Value <string>() == "Microsoft.Network/networkSecurityGroups");

            Assert.AreEqual(1, nsgs.Count());
            Assert.AreEqual("asmnsg-nsg", nsgs.First()["name"].Value <string>());

            // Validate NSG rules
            JArray rules = (JArray)nsgs.First()["properties"]["securityRules"];

            Assert.AreEqual(2, rules.Count());
            Assert.AreEqual("Enable-Internal-DNS", rules[0]["name"].Value <string>());
            Assert.AreEqual("Port-7777-rule", rules[1]["name"].Value <string>());

            // Validate RouteTable
            var rt = templateJson["resources"].Children().Where(
                r => r["type"].Value <string>() == "Microsoft.Network/routeTables");

            Assert.AreEqual(1, rt.Count());
            Assert.AreEqual("asmrt", rt.First()["name"].Value <string>());

            // Validate Routes
            JArray routes = (JArray)rt.First()["properties"]["routes"];

            Assert.AreEqual(1, routes.Count());
            Assert.AreEqual("all-traffic-to-fw", routes[0]["name"].Value <string>());

            // Validate VNETs
            var vnets = templateJson["resources"].Children().Where(
                r => r["type"].Value <string>() == "Microsoft.Network/virtualNetworks");

            Assert.AreEqual(1, vnets.Count());
            Assert.AreEqual("asmtest-vnet", vnets.First()["name"].Value <string>());

            // Validate subnets
            var subnets = vnets.First()["properties"]["subnets"];

            Assert.AreEqual(1, subnets.Count());
            Assert.AreEqual("Subnet-1", subnets.First()["name"].Value <string>());
            StringAssert.Contains(subnets.First()["properties"]["networkSecurityGroup"]["id"].Value <string>(), "networkSecurityGroups/asmnsg");
            StringAssert.Contains(subnets.First()["properties"]["routeTable"]["id"].Value <string>(), "routeTables/asmrt");
        }
コード例 #30
0
 public void When_files_is_null_should_throw_argument_null_exception()
 {
     var writer = new StringWriter();
     var generator = new TemplateGenerator(writer);
     Action method = () => generator.Generate(null);
     method.ShouldThrow<ArgumentNullException>()
         .And.ParamName.Should().Be("files");
 }
コード例 #31
0
        public void TemplateGeneratorTest()
        {
            var    gen = new TemplateGenerator();
            string tmp = null;

            gen.ProcessTemplate(null, "<#@ template language=\"C#\" #>", ref tmp, out tmp);
            Assert.IsNull(gen.Errors.OfType <CompilerError> ().FirstOrDefault(), "ProcessTemplate");
        }
コード例 #32
0
		public void ImportReferencesTest ()
		{
			var gen = new TemplateGenerator ();
			string tmp = null;
			gen.ReferencePaths.Add (Path.GetDirectoryName (typeof (Uri).Assembly.Location));
			gen.ProcessTemplate (null, "<#@ assembly name=\"System.dll\" #>\n<#@ assembly name=\"System.Core.dll\" #>", ref tmp, out tmp);
			Assert.AreEqual (0, gen.Errors.Count, "ImportReferencesTest");
		}
コード例 #33
0
        public void TestResourcesCount()
        {
            TemplateGenerator generator = GetTemplateGenerator();
            var template = generator.GenerateTemplate().GetAwaiter().GetResult();
            var obj      = (JArray)template["resources"];

            Assert.AreEqual(4, obj.Count);
        }
コード例 #34
0
        public void Given_one_content_when_generate_writer_should_contains_all_contents()
        {
            var writer = new StringWriter();
            var generator = new TemplateGenerator(writer);
            var contents = new []
            {
                new FileContent { Name = "template.tpl.html", Content = "<p>Hi!</p>" }
            };

            generator.Generate(contents);

            writer.GetStringBuilder()
                .ToString()
                .Should().Be("<p>Hi!</p>");
        }
コード例 #35
0
        private static void TemplateGaneratorAction(Action<TemplateGenerator> action, string transactionName)
        {
            var versionManager = VersionManager.GetManager(null, transactionName);
            var pageManager = PageManager.GetManager(null, transactionName);
            var moduleManager = ModuleBuilderManager.GetManager(null, transactionName);

            var templateGenerator = new TemplateGenerator(pageManager, moduleManager, versionManager);

            action(templateGenerator);

            if (transactionName.IsNullOrEmpty())
            {
                moduleManager.SaveChanges();
                pageManager.SaveChanges();
                versionManager.SaveChanges();
            }
        }