internal static void UseStaticWebAssetsCore(IWebHostEnvironment environment, Stream manifest, bool isJson) { if (isJson) { var staticWebAssetManifest = ManifestStaticWebAssetFileProvider.StaticWebAssetManifest.Parse(manifest); var provider = new ManifestStaticWebAssetFileProvider( staticWebAssetManifest, (contentRoot) => new PhysicalFileProvider(contentRoot)); environment.WebRootFileProvider = new CompositeFileProvider(new[] { environment.WebRootFileProvider, provider }); return; } var webRootFileProvider = environment.WebRootFileProvider; var additionalFiles = StaticWebAssetsReader.Parse(manifest) .Select(cr => new StaticWebAssetsFileProvider(cr.BasePath, cr.Path)) .OfType <IFileProvider>() // Upcast so we can insert on the resulting list. .ToList(); if (additionalFiles.Count == 0) { return; } else { additionalFiles.Insert(0, webRootFileProvider); environment.WebRootFileProvider = new CompositeFileProvider(additionalFiles); } }
public void ParseManifest_ThrowsFor_UnknownVersion() { // Arrange var manifestContent = @"<StaticWebAssets Version=""2.0""/>"; var manifest = CreateManifest(manifestContent); // Act & Assert var exception = Assert.Throws <InvalidOperationException>(() => StaticWebAssetsReader.Parse(manifest).ToArray()); Assert.StartsWith("Unknown manifest version", exception.Message); }
public void ParseManifest_ThrowsFor_UnknownRootElement() { // Arrange var manifestContent = @"<Invalid />"; var manifest = CreateManifest(manifestContent); // Act & Assert var exception = Assert.Throws <InvalidOperationException>(() => StaticWebAssetsReader.Parse(manifest).ToArray()); Assert.StartsWith("Invalid manifest", exception.Message); }
public void ParseManifest_ThrowsFor_EmptyManifest() { // Arrange var manifestContent = @""; var manifest = CreateManifest(manifestContent); // Act & Assert var exception = Assert.Throws <XmlException>(() => StaticWebAssetsReader.Parse(manifest).ToArray()); Assert.StartsWith("Root element is missing.", exception.Message); }
public void ParseManifest_ThrowsFor_InvalidStaticWebAssetsChildren() { // Arrange var manifestContent = @"<StaticWebAssets Version=""1.0""> <Invalid /> </StaticWebAssets>"; var manifest = CreateManifest(manifestContent); // Act & Assert var exception = Assert.Throws <InvalidOperationException>(() => StaticWebAssetsReader.Parse(manifest).ToArray()); Assert.StartsWith("Invalid manifest", exception.Message); }
public void ParseManifest_ParsesManifest_WithSingleItem() { // Arrange var manifestContent = @"<StaticWebAssets Version=""1.0""> <ContentRoot Path=""/Path"" BasePath=""/BasePath"" /> </StaticWebAssets>"; var manifest = CreateManifest(manifestContent); // Act var mappings = StaticWebAssetsReader.Parse(manifest).ToArray(); // Assert var mapping = Assert.Single(mappings); Assert.Equal("/Path", mapping.Path); Assert.Equal("/BasePath", mapping.BasePath); }
internal static void UseStaticWebAssetsCore(IWebHostEnvironment environment, Stream manifest) { var webRootFileProvider = environment.WebRootFileProvider; var additionalFiles = StaticWebAssetsReader.Parse(manifest) .Select(cr => new StaticWebAssetsFileProvider(cr.BasePath, cr.Path)) .OfType <IFileProvider>() // Upcast so we can insert on the resulting list. .ToList(); if (additionalFiles.Count == 0) { return; } else { additionalFiles.Insert(0, webRootFileProvider); environment.WebRootFileProvider = new CompositeFileProvider(additionalFiles); } }