public Config(ResizerSection config) { this.configuration = config; //Init plugins module plugins = new PluginConfig(this); //Whenever the extensions change, the image builder instance has to be replaced. plugins.ImageBuilderExtensions.Changed += delegate(SafeList <BuilderExtension> s) { InvalidateImageBuilder(); }; //Relies on plugins, must init second pipeline = new PipelineConfig(this); bool isAspNet = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath != null; //Load default plugins new ImageResizer.Plugins.Basic.DefaultEncoder().Install(this); new ImageResizer.Plugins.Basic.NoCache().Install(this); new ImageResizer.Plugins.Basic.ClientCache().Install(this); new ImageResizer.Plugins.Basic.Diagnostic().Install(this); if (isAspNet) { new ImageResizer.Plugins.Basic.SizeLimiting().Install(this); } //Load plugins immediately. Lazy plugin loading causes problems. plugins.LoadPlugins(); }
public Config(ResizerSection config, bool addAspNetPlugins) { this.configuration = config; //Init plugins module plugins = new PluginConfig(this); //Whenever the extensions change, the image builder instance has to be replaced. plugins.ImageBuilderExtensions.Changed += delegate(SafeList <BuilderExtension> s) { InvalidateImageBuilder(); }; //Relies on plugins, must init second pipeline = new PipelineConfig(this); //Load default plugins new ImageResizer.Plugins.Basic.DefaultEncoder().Install(this); new ImageResizer.Plugins.Basic.NoCache().Install(this); new ImageResizer.Plugins.Basic.ClientCache().Install(this); new ImageResizer.Plugins.Basic.WebConfigLicenseReader().Install(this); if (addAspNetPlugins) { new ImageResizer.Plugins.Basic.Diagnostic().Install(this); //2017-04-04 - this plugin only sets the HTTP handler; adds no other functionality. new ImageResizer.Plugins.Basic.SizeLimiting().Install(this); new ImageResizer.Plugins.Basic.MvcRoutingShimPlugin().Install(this); new ImageResizer.Plugins.Basic.LicenseDisplay().Install(this); } //Load plugins immediately. Lazy plugin loading causes problems. plugins.LoadPlugins(); pipeline.FireHeartbeat(); }
public void ProcessWithCachedDataTest() { // Arrange int expected = 1; int actual = 0; var rs = new ResizerSection(ConfigXml); var c = new Config(rs); ICache target = c.Plugins.Get <TinyCachePlugin>(); ResizeSettings settings = new ResizeSettings(); settings.Cache = ServerCacheMode.Default; ResponseArgs args = new ResponseArgs(); args.RewrittenQuerystring = settings; args.RequestKey = "test"; args.ResizeImageToStream = (Stream ms) => { ms.WriteByte(99); actual++; }; target.Process(HttpContext.Current, args); // Act target.Process(HttpContext.Current, args); // Assert Assert.Equal <int>(expected, actual); }
public void TestBitmapSize(int originalWidth, int originalHeight, int expectedWidth, int expectedHeight, string query) { ResizerSection config = new ResizerSection(); Config c = new Config(config); using (Bitmap b = c.CurrentImageBuilder.Build(GetBitmap(originalWidth, originalHeight), new ResizeSettings(query))) { Assert.AreEqual <Size>(new Size(expectedWidth, expectedHeight), b.Size); } }
public void FileExistsWithNullVirtualPath() { // Arrange var rs = new ResizerSection(ConfigXml); var c = new Config(rs); IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>(); // Act var actual = Assert.Throws <NullReferenceException>(() => target.FileExists(null, null)); // Assert Assert.NotNull(actual); Assert.IsType <NullReferenceException>(actual); }
public void FileExistsWithEmptyVirtualPath() { // Arrange bool expected = false; var rs = new ResizerSection(ConfigXml); var c = new Config(rs); IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>(); // Act var actual = target.FileExists(string.Empty, null); // Assert Assert.Equal <bool>(expected, actual); }
public void GetFileWithEmptyVirtualPath() { // Arrange var rs = new ResizerSection(ConfigXml); var c = new Config(rs); IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>(); string virtualPath = Path.Combine(PathPrefix, Filename); // Act var actual = target.GetFile(string.Empty, null); // Assert Assert.Null(actual); }
public void GetFileWithoutVirtualPathPrefix() { // Arrange var rs = new ResizerSection(Settings); var c = new Config(rs); IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.VirtualProviderPlugins.First; string virtualPath = Filename; // Act var actual = target.GetFile(virtualPath, null); // Assert Assert.Null(actual); }
public void UninstallWithoutInstallingTest() { // Arrange bool expected = true; var rs = new ResizerSection(ConfigXml); var c = new Config(rs); var target = new TinyCachePlugin(); // Act bool actual = target.Uninstall(c); // Assert Assert.Equal <bool>(expected, actual); }
public void ProcessReadCacheFileTest() { // Arrange int expected = 0; int actual = 0; var rs = new ResizerSection(ConfigXml); var c = new Config(rs); var target = c.Plugins.Get <TinyCachePlugin>(); ResizeSettings settings = new ResizeSettings(); settings.Cache = ServerCacheMode.Default; ResponseArgs args = new ResponseArgs(); args.RewrittenQuerystring = settings; File.Delete(target.PhysicalCacheFile); target.VirtualCacheFile = "folder/ImFlushed.txt"; if (Directory.Exists(Path.GetDirectoryName(target.PhysicalCacheFile))) { Directory.Delete(Path.GetDirectoryName(target.PhysicalCacheFile), true); } for (int i = 0; i < 60; i++) { args.ResizeImageToStream = (Stream ms) => { ms.WriteByte(99); }; args.RequestKey = string.Format(CultureInfo.InvariantCulture, "test{0}", i); target.Process(HttpContext.Current, args); } target = new TinyCachePlugin(); target.VirtualCacheFile = "folder/ImFlushed.txt"; args.ResizeImageToStream = (Stream ms) => { ms.WriteByte(99); actual++; }; // Act args.RequestKey = "test0"; target.Process(HttpContext.Current, args); // Assert Assert.True(File.Exists(target.PhysicalCacheFile)); Assert.Equal <int>(expected, actual); }
public void GetFileValidFastMode() { // Arrange var rs = new ResizerSection(Settings); var c = new Config(rs); IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.VirtualProviderPlugins.First; string virtualPath = Path.Combine(PathPrefix, Filename); // Act var actual = target.GetFile(virtualPath, null); // Assert Assert.NotNull(actual); Assert.IsAssignableFrom <Blob>(actual); }
public void FileExistsWithoutVirtualPath() { // Arrange bool expected = false; var rs = new ResizerSection(Settings); var c = new Config(rs); IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.VirtualProviderPlugins.First; string virtualPath = Filename; // Act bool actual = target.FileExists(virtualPath, null); // Assert Assert.Equal <bool>(expected, actual); }
public void ReadPhysicalCacheFileWithEmptyVirtualCacheFile() { // Arrange string expected = string.Empty; var rs = new ResizerSection(ConfigXml); var c = new Config(rs); TinyCachePlugin target = c.Plugins.Get <TinyCachePlugin>(); // Act target.VirtualCacheFile = expected; var actual = target.PhysicalCacheFile; // Assert Assert.Null(actual); }
public void ReadAndWriteVirtualCacheFile() { // Arrange string expected = "/folder/name.txt"; var rs = new ResizerSection(ConfigXml); var c = new Config(rs); TinyCachePlugin target = c.Plugins.Get <TinyCachePlugin>(); // Act target.VirtualCacheFile = expected; var actual = target.VirtualCacheFile; // Assert Assert.Equal(expected, actual); }
public void FileExistsWithNullQueryString() { // Arrange bool expected = true; var rs = new ResizerSection(ConfigXml); var c = new Config(rs); IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>(); string virtualPath = Path.Combine(PathPrefix, Filename); // Act bool actual = target.FileExists(virtualPath, null); // Assert Assert.Equal <bool>(expected, actual); }
public void GetFileWithNullVirtualPath() { // Arrange var rs = new ResizerSection(ConfigXml); var c = new Config(rs); IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>(); string virtualPath = Path.Combine(PathPrefix, Filename); // Act var actual = Assert.Throws <NullReferenceException>(() => target.GetFile(null, null)); // Assert Assert.NotNull(actual); Assert.IsType <NullReferenceException>(actual); }
public void CanProcessNoWithNullArgs() { // Arrange var rs = new ResizerSection(ConfigXml); var c = new Config(rs); ICache target = (ICache)c.Plugins.Get <TinyCachePlugin>(); // Act var actual = Assert.Throws <ArgumentNullException>(() => target.CanProcess(null, null)); // Assert Assert.NotNull(actual); Assert.IsType <ArgumentNullException>(actual); }
public void UninstallWithoutInstallingTest() { // Arrange bool expected = true; var rs = new ResizerSection(ConfigXml); var c = new Config(rs); var settings = this.Settings; var target = new AzureReader2Plugin(settings); // Act bool actual = target.Uninstall(c); // Assert Assert.Equal <bool>(expected, actual); }
public void ReadAndWritePhysicalCacheFile() { // Arrange string expected = "folder/name.txt"; var rs = new ResizerSection(ConfigXml); var c = new Config(rs); TinyCachePlugin target = c.Plugins.Get <TinyCachePlugin>(); // Act target.VirtualCacheFile = "~/" + expected; var actual = target.PhysicalCacheFile; // Assert Assert.True(actual.EndsWith(expected)); }
public void OpenValidId() { // Arrange var rs = new ResizerSection(ConfigXml); var c = new Config(rs); IVirtualImageProvider reader = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>(); string virtualPath = Path.Combine(PathPrefix, Filename); var target = reader.GetFile(virtualPath, null); // Act var actual = target.Open(); // Assert Assert.NotNull(actual); Assert.IsAssignableFrom <Stream>(actual); }
public void CanOperateWithEmptyVirtualCacheFile() { // Arrange bool expected = false; var rs = new ResizerSection(ConfigXml); var c = new Config(rs); TinyCachePlugin target = c.Plugins.Get <TinyCachePlugin>(); target.VirtualCacheFile = string.Empty; // Act var actual = target.CanOperate; // Assert Assert.Equal <bool>(expected, actual); }
public void OpenInvalidId() { // Arrange var rs = new ResizerSection(Settings); var c = new Config(rs); IVirtualImageProvider reader = (IVirtualImageProvider)c.Plugins.VirtualProviderPlugins.First; string virtualPath = Path.Combine(PathPrefix, "resizer-downloads/examples/fountain-xxxx.jpg"); var target = reader.GetFile(virtualPath, null); // Act var actual = Assert.Throws <FileNotFoundException>(() => target.Open()); // Assert Assert.NotNull(actual); Assert.IsType <FileNotFoundException>(actual); }
public void GetFileInvalidNotFastMode() { // Arrange var rs = new ResizerSection(ConfigXml); var c = new Config(rs); IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>(); ((AzureReader2Plugin)target).LazyExistenceCheck = false; ((AzureReader2Plugin)target).MetadataCache = model; string virtualPath = Path.Combine(PathPrefix, "fountain-xxxx.jpg"); // Act var actual = target.GetFile(virtualPath, null); // Assert Assert.Null(actual); }
public void GetFileInvalidNotFastMode() { // Arrange var rs = new ResizerSection(Settings); var c = new Config(rs); IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.VirtualProviderPlugins.First; ((S3Reader2)target).LazyExistenceCheck = false; ((S3Reader2)target).MetadataCache = model; string virtualPath = Path.Combine(PathPrefix, "resizer-downloads/examples/fountain-xxxx.jpg"); // Act var actual = target.GetFile(virtualPath, null); // Assert Assert.Null(actual); }
public void GetFileValidNotFastModeStorageException() { // Arrange var rs = new ResizerSection("<resizer><plugins><add name=\"AzureReader2\" prefix=\"/azure/\" connectionString=\"DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==\" endpoint=\"http://127.0.0.1:10000/devstoreaccount1/\" /></plugins></resizer>"); var c = new Config(rs); IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>(); ((AzureReader2Plugin)target).LazyExistenceCheck = false; ((AzureReader2Plugin)target).MetadataCache = model; string virtualPath = Path.Combine(PathPrefix, Filename); // Act var actual = Assert.Throws <StorageException>(() => target.GetFile(virtualPath, null)); // Assert Assert.NotNull(actual); Assert.IsType <StorageException>(actual); }
public void GetFileValidFastMode() { // Arrange var rs = new ResizerSection(ConfigXml); var c = new Config(rs); IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>(); ((AzureReader2Plugin)target).LazyExistenceCheck = true; ((AzureReader2Plugin)target).MetadataCache = model; string virtualPath = Path.Combine(PathPrefix, Filename); // Act var actual = target.GetFile(virtualPath, null); // Assert Assert.NotNull(actual); Assert.IsAssignableFrom <Blob>(actual); }
public void FileExistNotFastModeFileNotExisting() { // Arrange bool expected = false; var rs = new ResizerSection(Settings); var c = new Config(rs); IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.VirtualProviderPlugins.First; ((S3Reader2)target).LazyExistenceCheck = false; ((S3Reader2)target).MetadataCache = model; string virtualPath = Path.Combine(PathPrefix, "resizer-downloads/examples/fountain-xxxx.jpg"); // Act bool actual = target.FileExists(virtualPath, null); // Assert Assert.Equal <bool>(expected, actual); }
public void FileExistsFastModeFileExisting() { // Arrange bool expected = true; var rs = new ResizerSection(ConfigXml); var c = new Config(rs); IVirtualImageProvider target = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>(); ((AzureReader2Plugin)target).LazyExistenceCheck = true; ((AzureReader2Plugin)target).MetadataCache = model; string virtualPath = Path.Combine(PathPrefix, Filename); // Act bool actual = target.FileExists(virtualPath, null); // Assert Assert.Equal <bool>(expected, actual); }
public void OpenInvalidContainer() { // Arrange var rs = new ResizerSection(ConfigXml); var c = new Config(rs); IVirtualImageProvider reader = (IVirtualImageProvider)c.Plugins.Get <AzureReader2Plugin>(); ((AzureReader2Plugin)reader).LazyExistenceCheck = true; string virtualPath = Path.Combine(PathPrefix.Substring(0, PathPrefix.Length - 2) + "/", "fountain-xxxx.jpg"); var target = reader.GetFile(virtualPath, null); // Act var actual = Assert.Throws <FileNotFoundException>(() => target.Open()); // Assert Assert.NotNull(actual); Assert.IsType <FileNotFoundException>(actual); }
public void ProcessWithTooMuchCachedDataTest() { // Arrange int actual = 0; var rs = new ResizerSection(ConfigXml); var c = new Config(rs); var target = c.Plugins.Get <TinyCachePlugin>(); int expected = 52; ResizeSettings settings = new ResizeSettings(); settings.Cache = ServerCacheMode.Default; ResponseArgs args = new ResponseArgs(); args.RewrittenQuerystring = settings; args.RequestKey = "test"; File.Delete(target.PhysicalCacheFile); target.VirtualCacheFile = "folder/TooMuch.txt"; if (Directory.Exists(Path.GetDirectoryName(target.PhysicalCacheFile))) { Directory.Delete(Path.GetDirectoryName(target.PhysicalCacheFile), true); } byte[] data = new byte[1024 * 1024]; // Act for (int i = 0; i < expected; i++) { args.ResizeImageToStream = (Stream ms) => { ms.Write(data, 0, data.Length); actual++; }; args.RequestKey = string.Format(CultureInfo.InvariantCulture, "test{0}", i); target.Process(HttpContext.Current, args); } // Assert Assert.Equal <int>(expected, actual); }
public void TestBitmapSize(int originalWidth, int originalHeight, int expectedWidth, int expectedHeight, string query) { ResizerSection config = new ResizerSection(); Config c = new Config(config); using (Bitmap b = c.CurrentImageBuilder.Build(GetBitmap(originalWidth,originalHeight), new ResizeSettings(query))) { Assert.AreEqual<Size>(new Size(expectedWidth,expectedHeight),b.Size); } }