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); } }
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_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 & 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_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_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); } }