public void IsolatedTemplateService_WillThrowException_WhenUsingNullAppDomain()
 {
     Assert.Throws <InvalidOperationException>(() =>
     {
         using (var service = new IsolatedTemplateService(() => null))
         { }
     });
 }
        public void IsolatedTemplateService_CanParseMultipleTemplatesInParallel_WitNoModels()
        {
            using (var service = new IsolatedTemplateService())
            {
                const string template  = "<h1>Hello World</h1>";
                var          templates = Enumerable.Repeat(template, 10).ToArray();

                var results = service.ParseMany(templates, null, null, null, true);

                Assert.That(templates.SequenceEqual(results), "Rendered templates do not match expected.");
            }
        }
        public void IsolatedTemplateService_CanParseSimpleTemplate_WithNoModel()
        {
            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Hello World</h1>";
                const string expected = template;

                string result = service.Parse(template);

                Assert.That(result == expected, "Result does not match expected: " + result);
            }
        }
        public void IsolatedTemplateService_CanParseSimpleTemplate_WithNoModel()
        {
            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Hello World</h1>";
                const string expected = template;

                string result = service.Parse(template, null, null, null);

                Assert.That(result == expected, "Result does not match expected: " + result);
            }
        }
        public void IsolatedTemplateService_CannotParseSimpleTemplate_WithAnonymousModel()
        {
            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Animal Type: @Model.Type</h1>";

                Assert.Throws <ArgumentException>(() =>
                {
                    var model = new { Type = "Cat" };
                    service.Parse(template, model, null, null);
                });
            }
        }
        public void IsolatedTemplateService_CannotParseSimpleTemplate_WithDynamicModel()
        {
            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Animal Type: @Model.Type</h1>";

                Assert.Throws<ArgumentException>(() =>
                {
                    dynamic model = new ValueObject(new Dictionary<string, object> { { "Type", "Cat" } });
                    service.Parse(template, model, null, null);
                });
            }
        }
        public void IsolatedTemplateService_CannotParseSimpleTemplate_WithAnonymousModel()
        {
            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Animal Type: @Model.Type</h1>";

                Assert.Throws<ArgumentException>(() =>
                {
                    var model = new { Type = "Cat" };
                    service.Parse(template, model, null, null);
                });
            }
        }
        public void IsolatedTemplateService_CanParseSimpleTemplate_WithComplexSerialisableModel()
        {
            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Hello @Model.Forename</h1>";
                const string expected = "<h1>Hello Matt</h1>";

                var model = new Person { Forename = "Matt" };
                string result = service.Parse(template, model);

                Assert.That(result == expected, "Result does not match expected: " + result);
            }
        }
        public void IsolatedTemplateService_CannotParseSimpleTemplate_WithComplexNonSerialisableModel()
        {
            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Animal Type: @Model.Type</h1>";

                Assert.Throws<SerializationException>(() =>
                {
                    var model = new Animal { Type = "Cat" };
                    service.Parse(template, model);
                });
            }
        }
        public void IsolatedTemplateService_CannotParseSimpleTemplate_WithExpandoModel()
        {
            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Animal Type: @Model.Type</h1>";

                Assert.Throws <ArgumentException>(() =>
                {
                    dynamic model = new ExpandoObject();
                    model.Type    = "Cat";
                    service.Parse(template, model, null, null);
                });
            }
        }
        public void IsolatedTemplateService_CannotParseSimpleTemplate_WithComplexNonSerializableModel()
        {
            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Animal Type: @Model.Type</h1>";

                Assert.Throws <SerializationException>(() =>
                {
                    var model = new Animal {
                        Type = "Cat"
                    };
                    service.Parse(template, model, null, null);
                });
            }
        }
        public void IsolatedTemplateService_CannotParseSimpleTemplate_WithDynamicModel()
        {
            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Animal Type: @Model.Type</h1>";

                Assert.Throws <ArgumentException>(() =>
                {
                    dynamic model = new ValueObject(new Dictionary <string, object> {
                        { "Type", "Cat" }
                    });
                    service.Parse(template, model, null, null);
                });
            }
        }
        public void IsolatedTemplateService_CanParseSimpleTemplate_UsingRawEncoding()
        {
            using (var service = new IsolatedTemplateService(Encoding.Raw))
            {
                const string template = "<h1>Hello @Model.Forename</h1>";
                const string expected = "<h1>Hello Matt & World</h1>";

                var model = new Person {
                    Forename = "Matt & World"
                };
                string result = service.Parse(template, model, null, null);

                Assert.That(result == expected, "Result does not match expected: " + result);
            }
        }
        public void IsolatedTemplateService_CanParseSimpleTemplate_WithComplexSerializableModel()
        {
            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Hello @Model.Forename</h1>";
                const string expected = "<h1>Hello Matt</h1>";

                var model = new Person {
                    Forename = "Matt"
                };
                string result = service.Parse(template, model, null, null);

                Assert.That(result == expected, "Result does not match expected: " + result);
            }
        }
Esempio n. 15
0
        public void IsolatedTemplateService_CanParseSingleTemplateInSequence_WithMultipleModels()
        {
            const int maxTemplates = 10;

            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Age: @Model.Age</h1>";
                var          expected = Enumerable.Range(1, maxTemplates).Select(i => string.Format("<h1>Age: {0}</h1>", i));
                var          models   = Enumerable.Range(1, maxTemplates).Select(i => new Person {
                    Age = i
                }).ToArray();

                var results = service.ParseMany(template, models, false /* Sequence */);
                Assert.That(expected.SequenceEqual(results), "Parsed templates do not match expected results.");
            }
        }
Esempio n. 16
0
        public void IsolatedTemplateService_CanParseToWriterSimpleTemplate_UsingHtmlEncoding()
        {
            using (var service = new IsolatedTemplateService(Encoding.Html))
                using (var writer = new StringWriter())
                {
                    const string template = "<h1>Hello @Model.Forename</h1>";
                    const string expected = "<h1>Hello Matt &amp; World</h1>";

                    var model = new Person {
                        Forename = "Matt & World"
                    };

                    service.ParseToWriter(writer, template, model, null, null);
                    string result = writer.ToString();

                    Assert.That(result == expected, "Result does not match expected: " + result);
                }
        }
        public void IsolatedTemplateService_BadTemplate_InSandbox()
        {
            using (var service = new IsolatedTemplateService(IsolatedRazorEngineServiceTestFixture.SandboxCreator))
            {
                string file = Path.Combine(Environment.CurrentDirectory, Path.GetRandomFileName());

                string template = @"
@using System.IO
@{
File.WriteAllText(""$file$"", ""BAD DATA"");
}".Replace("$file$", file.Replace("\\", "\\\\"));
                Assert.Throws<SecurityException>(() =>
                {
                    service.Parse(template, null, null, "test");
                });

                Assert.IsFalse(File.Exists(file));
            }
        }
        public void IsolatedTemplateService_BadTemplate_InSandbox()
        {
            using (var service = new IsolatedTemplateService(IsolatedRazorEngineServiceTestFixture.SandboxCreator))
            {
                string file = Path.Combine(Environment.CurrentDirectory, Path.GetRandomFileName());

                string template = @"
@using System.IO
@{
File.WriteAllText(""$file$"", ""BAD DATA"");
}".Replace("$file$", file.Replace("\\", "\\\\"));
                Assert.Throws <SecurityException>(() =>
                {
                    service.Parse(template, null, null, "test");
                });

                Assert.IsFalse(File.Exists(file));
            }
        }
        public void IsolatedTemplateService_VeryBadTemplate_InSandbox()
        {
            using (var service = new IsolatedTemplateService(IsolatedRazorEngineServiceTestFixture.SandboxCreator))
            {
                string file = Path.Combine(Environment.CurrentDirectory, Path.GetRandomFileName());

                string template = @"
@using System.IO
@using System.Security
@using System.Security.Permissions
@{
(new PermissionSet(PermissionState.Unrestricted)).Assert();
File.WriteAllText(""$file$"", ""BAD DATA"");
}".Replace("$file$", file.Replace("\\", "\\\\"));
                Assert.Throws <InvalidOperationException>(() =>
                { // cannot create a file in template
                    service.Parse(template, null, null, "test");
                });

                Assert.IsFalse(File.Exists(file));
            }
        }
        public void IsolatedTemplateService_VeryBadTemplate_InSandbox()
        {
            using (var service = new IsolatedTemplateService(IsolatedRazorEngineServiceTestFixture.SandboxCreator))
            {
                string file = Path.Combine(Environment.CurrentDirectory, Path.GetRandomFileName());

                string template = @"
@using System.IO
@using System.Security
@using System.Security.Permissions
@{
(new PermissionSet(PermissionState.Unrestricted)).Assert();
File.WriteAllText(""$file$"", ""BAD DATA"");
}".Replace("$file$", file.Replace("\\", "\\\\"));
                Assert.Throws<InvalidOperationException>(() =>
                { // cannot create a file in template
                    service.Parse(template, null, null, "test");
                });

                Assert.IsFalse(File.Exists(file));
            }
        }
        public void IsolatedTemplateService_CanParseToWriterSimpleTemplate_UsingHtmlEncoding()
        {
            using (var service = new IsolatedTemplateService(Encoding.Html))
            using (var writer = new StringWriter())
            {
                const string template = "<h1>Hello @Model.Forename</h1>";
                const string expected = "<h1>Hello Matt &amp; World</h1>";

                var model = new Person { Forename = "Matt & World" };

                service.ParseToWriter(writer, template, model, null, null);
                string result = writer.ToString();

                Assert.That(result == expected, "Result does not match expected: " + result);
            }
        }
        public void IsolatedTemplateService_CanParseToWriterSimpleTemplate_WithNoModel()
        {
            using (var service = new IsolatedTemplateService())
            using (var writer = new StringWriter())
            {

                const string template = "<h1>Hello World</h1>";
                const string expected = template;

                service.ParseToWriter(writer, template, null, null, null);

                string result = writer.ToString();

                Assert.That(result == expected, "Result does not match expected: " + result);
            }
        }
        public void IsolatedTemplateService_CanParseSingleTemplateInSequence_WithMultipleModels()
        {
            const int maxTemplates = 10;

            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Age: @Model.Age</h1>";
                var expected = Enumerable.Range(1, maxTemplates).Select(i => string.Format("<h1>Age: {0}</h1>", i));
                var models = Enumerable.Range(1, maxTemplates).Select(i => new Person { Age = i }).ToArray();

                var results = service.ParseMany(template, models, false /* Sequence */);
                Assert.That(expected.SequenceEqual(results), "Parsed templates do not match expected results.");
            }
        }
        public void IsolatedTemplateService_CanParseMultipleTemplatesInParallel_WitNoModels()
        {
            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Hello World</h1>";
                var templates = Enumerable.Repeat(template, 10).ToArray();

                var results = service.ParseMany(templates, true);

                Assert.That(templates.SequenceEqual(results), "Rendered templates do not match expected.");
            }
        }
        public void IsolatedTemplateService_CanParseSimpleTemplate_UsingRawEncoding()
        {
            using (var service = new IsolatedTemplateService(Encoding.Raw))
            {
                const string template = "<h1>Hello @Model.Forename</h1>";
                const string expected = "<h1>Hello Matt & World</h1>";

                var model = new Person { Forename = "Matt & World" };
                string result = service.Parse(template, model);

                Assert.That(result == expected, "Result does not match expected: " + result);
            }
        }
 public void IsolatedTemplateService_WillThrowException_WhenUsingNullAppDomain()
 {
     Assert.Throws<InvalidOperationException>(() =>
     {
         using (var service = new IsolatedTemplateService(() => null))
         { }
     });
 }
        public void IsolatedTemplateService_CannotParseSimpleTemplate_WithExpandoModel()
        {
            using (var service = new IsolatedTemplateService())
            {
                const string template = "<h1>Animal Type: @Model.Type</h1>";

                Assert.Throws<ArgumentException>(() =>
                {
                    dynamic model = new ExpandoObject();
                    model.Type = "Cat";
                    service.Parse(template, model);
                });
            }
        }
        public void IsolatedTemplateService_CanParseToWriterSimpleTemplate_WithComplexSerializableModel()
        {
            using (var service = new IsolatedTemplateService())
            using(var writer = new StringWriter())
            {
                const string template = "<h1>Hello @Model.Forename</h1>";
                const string expected = "<h1>Hello Matt</h1>";

                var model = new Person { Forename = "Matt" };

                service.ParseToWriter(writer, template, model, null, null);
                string result = writer.ToString();

                Assert.That(result == expected, "Result does not match expected: " + result);
            }
        }