public void DescriptorResolver_DoesNotReturnInvalidTagHelpersWhenSpecified() { // Arrange var tagHelperDescriptorResolver = new TagHelperDescriptorResolver( new TestTagHelperTypeResolver(TestableTagHelpers)); // Act var descriptors = tagHelperDescriptorResolver.Resolve( "Microsoft.AspNet.Razor.Runtime.Test.TagHelpers.Invalid_AbstractTagHelper, MyAssembly"); descriptors = descriptors.Concat(tagHelperDescriptorResolver.Resolve( "Microsoft.AspNet.Razor.Runtime.Test.TagHelpers.Invalid_GenericTagHelper`, MyAssembly")); descriptors = descriptors.Concat(tagHelperDescriptorResolver.Resolve( "Microsoft.AspNet.Razor.Runtime.Test.TagHelpers.Invalid_NestedPublicTagHelper, MyAssembly")); descriptors = descriptors.Concat(tagHelperDescriptorResolver.Resolve( "Microsoft.AspNet.Razor.Runtime.Test.TagHelpers.Invalid_NestedInternalTagHelper, MyAssembly")); descriptors = descriptors.Concat(tagHelperDescriptorResolver.Resolve( "Microsoft.AspNet.Razor.Runtime.Test.TagHelpers.Invalid_PrivateTagHelper, MyAssembly")); descriptors = descriptors.Concat(tagHelperDescriptorResolver.Resolve( "Microsoft.AspNet.Razor.Runtime.Test.TagHelpers.Invalid_ProtectedTagHelper, MyAssembly")); descriptors = descriptors.Concat(tagHelperDescriptorResolver.Resolve( "Microsoft.AspNet.Razor.Runtime.Test.TagHelpers.Invalid_InternalTagHelper, MyAssembly")); // Assert Assert.Empty(descriptors); }
internal MvcRazorHost(ICodeTreeCache codeTreeCache, RazorPathNormalizer pathNormalizer) : base(new CSharpRazorCodeLanguage()) { _pathNormalizer = pathNormalizer; _baseType = BaseType; _codeTreeCache = codeTreeCache; TagHelperDescriptorResolver = new TagHelperDescriptorResolver(); DefaultBaseClass = BaseType + "<" + DefaultModel + ">"; DefaultNamespace = "Asp"; // Enable instrumentation by default to allow precompiled views to work with BrowserLink. EnableInstrumentation = true; GeneratedClassContext = new GeneratedClassContext( executeMethodName: "ExecuteAsync", writeMethodName: "Write", writeLiteralMethodName: "WriteLiteral", writeToMethodName: "WriteTo", writeLiteralToMethodName: "WriteLiteralTo", templateTypeName: "Microsoft.AspNet.Mvc.Razor.HelperResult", defineSectionMethodName: "DefineSection", generatedTagHelperContext: new GeneratedTagHelperContext { ExecutionContextTypeName = typeof(TagHelperExecutionContext).FullName, ExecutionContextAddMethodName = nameof(TagHelperExecutionContext.Add), ExecutionContextAddTagHelperAttributeMethodName = nameof(TagHelperExecutionContext.AddTagHelperAttribute), ExecutionContextAddHtmlAttributeMethodName = nameof(TagHelperExecutionContext.AddHtmlAttribute), ExecutionContextOutputPropertyName = nameof(TagHelperExecutionContext.Output), RunnerTypeName = typeof(TagHelperRunner).FullName, RunnerRunAsyncMethodName = nameof(TagHelperRunner.RunAsync), ScopeManagerTypeName = typeof(TagHelperScopeManager).FullName, ScopeManagerBeginMethodName = nameof(TagHelperScopeManager.Begin), ScopeManagerEndMethodName = nameof(TagHelperScopeManager.End), TagHelperContentTypeName = nameof(TagHelperContent), // Can't use nameof because RazorPage is not accessible here. CreateTagHelperMethodName = "CreateTagHelper", StartTagHelperWritingScopeMethodName = "StartTagHelperWritingScope", EndTagHelperWritingScopeMethodName = "EndTagHelperWritingScope", WriteTagHelperAsyncMethodName = "WriteTagHelperAsync", WriteTagHelperToAsyncMethodName = "WriteTagHelperToAsync", // Can't use nameof because IHtmlHelper is (also) not accessible here. MarkAsHtmlEncodedMethodName = HtmlHelperPropertyName + ".Raw", }) { ResolveUrlMethodName = "Href", BeginContextMethodName = "BeginContext", EndContextMethodName = "EndContext" }; foreach (var ns in _defaultNamespaces) { NamespaceImports.Add(ns); } }
public void DescriptorResolver_ResolvesMultipleTypes() { // Arrange var resolver = new TagHelperDescriptorResolver( new LookupBasedTagHelperTypeResolver( new Dictionary <string, IEnumerable <Type> >(StringComparer.OrdinalIgnoreCase) { { "lookupText", new Type[] { typeof(Valid_PlainTagHelper), typeof(Valid_InheritedTagHelper) } }, })); var expectedDescriptors = new TagHelperDescriptor[] { new TagHelperDescriptor("Valid_Plain", typeof(Valid_PlainTagHelper).FullName, ContentBehavior.None), new TagHelperDescriptor("Valid_Inherited", typeof(Valid_InheritedTagHelper).FullName, ContentBehavior.None) }; // Act var descriptors = resolver.Resolve("lookupText").ToArray(); // Assert Assert.Equal(descriptors.Length, 2); Assert.Equal(descriptors, expectedDescriptors, CompleteTagHelperDescriptorComparer.Default); }
public void DescriptorResolver_DoesNotResolveTypesForNoTypeResolvingLookupText() { // Arrange var resolver = new TagHelperDescriptorResolver( new LookupBasedTagHelperTypeResolver( new Dictionary <string, IEnumerable <Type> >(StringComparer.OrdinalIgnoreCase) { { "lookupText1", ValidTestableTagHelpers }, { "lookupText2", new Type[] { typeof(Valid_PlainTagHelper) } } })); // Act var descriptors = resolver.Resolve("lookupText").ToArray(); // Assert Assert.Empty(descriptors); }
public void DescriptorResolver_ResolveThrowsIfNullOrEmptyLookupText(string lookupText) { // Arrange var tagHelperDescriptorResolver = new TagHelperDescriptorResolver( new TestTagHelperTypeResolver(InvalidTestableTagHelpers)); var expectedMessage = Resources.FormatTagHelperDescriptorResolver_InvalidTagHelperLookupText(lookupText) + Environment.NewLine + "Parameter name: lookupText"; // Act & Assert var ex = Assert.Throws <ArgumentException>(nameof(lookupText), () => { tagHelperDescriptorResolver.Resolve(lookupText); }); Assert.Equal(expectedMessage, ex.Message); }
public void DescriptorResolver_ResolvesOnlyTypeResolverProvidedTypes() { // Arrange var resolver = new TagHelperDescriptorResolver( new LookupBasedTagHelperTypeResolver( new Dictionary <string, IEnumerable <Type> >(StringComparer.OrdinalIgnoreCase) { { "lookupText1", ValidTestableTagHelpers }, { "lookupText2", new Type[] { typeof(Valid_PlainTagHelper) } } })); var expectedDescriptor = new TagHelperDescriptor("Valid_Plain", typeof(Valid_PlainTagHelper).FullName, ContentBehavior.None); // Act var descriptors = resolver.Resolve("lookupText2"); // Assert var descriptor = Assert.Single(descriptors); Assert.Equal(descriptor, expectedDescriptor, CompleteTagHelperDescriptorComparer.Default); }
public void DescriptorResolver_IgnoresSpaces(string lookupText) { // Arrange var tagHelperTypeResolver = new TestTagHelperTypeResolver(TestableTagHelpers) { OnGetLibraryDefinedTypes = (assemblyName) => { Assert.Equal("MyAssembly", assemblyName.Name); } }; var tagHelperDescriptorResolver = new TagHelperDescriptorResolver(tagHelperTypeResolver); var expectedDescriptor = new TagHelperDescriptor("Valid_Plain", typeof(Valid_PlainTagHelper).FullName, ContentBehavior.None); // Act var descriptors = tagHelperDescriptorResolver.Resolve(lookupText); // Assert var descriptor = Assert.Single(descriptors); Assert.Equal(expectedDescriptor, descriptor, CompleteTagHelperDescriptorComparer.Default); }