Пример #1
0
        public void Test_OnPostAuthorizeRequestFile()
        {
            MagickModule        module  = CreateFileModule();
            TestHttpContextBase context = new TestHttpContextBase();

            module.OnBeginRequest(context);
            module.OnPostAuthorizeRequest(context);

            Assert.IsNull(context.RemapedHandler);

            TestFileUrlResolver.Result = new TestFileUrlResolverResult();

            module.OnPostAuthorizeRequest(context);
            Assert.IsNull(context.RemapedHandler);

            TestFileUrlResolver.Result.FileName = "c:\foo.bar";

            module.OnPostAuthorizeRequest(context);
            Assert.IsNull(context.RemapedHandler);

            string tempFile = Path.GetTempFileName();

            try
            {
                TestFileUrlResolver.Result.FileName = tempFile;

                module.OnPostAuthorizeRequest(context);
                Assert.IsNull(context.RemapedHandler);

                TestFileUrlResolver.Result.Format = MagickFormat.Stegano;

                module.OnPostAuthorizeRequest(context);
                Assert.IsNull(context.RemapedHandler);

                TestFileUrlResolver.Result.Format = MagickFormat.Tiff;

                module.OnPostAuthorizeRequest(context);
                Assert.IsNull(context.RemapedHandler);

                TestFileUrlResolver.Result.Format = MagickFormat.Svg;

                module.OnPostAuthorizeRequest(context);
                Assert.IsNotNull(context.RemapedHandler);
                Assert.AreEqual(context.RemapedHandler.GetType(), typeof(GzipHandler));
            }
            finally
            {
                Cleanup.DeleteFile(tempFile);
            }
        }
Пример #2
0
        private MagickWebSettings LoadSettings(string config)
        {
            config = CreateConfig(config);

            _tempFile = Path.GetTempFileName();
            try
            {
                File.WriteAllText(_tempFile, config);

                MagickWebSettings settings = MagickWebSettings.CreateInstance(this);
                Assert.IsNotNull(settings);

                return(settings);
            }
            finally
            {
                Cleanup.DeleteFile(_tempFile);
            }
        }
Пример #3
0
        public void Test_OnPostMapRequestHandlerFile()
        {
            MagickModule module = CreateFileModule();

            module.Init(new TestHttpApplication());

            TestHttpContextBase context = new TestHttpContextBase();

            module.OnBeginRequest(context);
            module.OnPostMapRequestHandler(context);

            Assert.IsNull(context.Handler);

            string tempFile = Path.GetTempFileName();

            try
            {
                TestFileUrlResolver.Result = new TestFileUrlResolverResult()
                {
                    FileName = tempFile,
                    Format   = MagickFormat.Jpg,
                };

                module.OnPostMapRequestHandler(context);
                Assert.IsNotNull(context.Handler);
                Assert.AreEqual(context.Handler.GetType(), typeof(ImageOptimizerHandler));

                TestFileUrlResolver.ScriptResult = new TestScriptData()
                {
                    OutputFormat = MagickFormat.Tiff,
                    Script       = XElement.Parse("<test/>").CreateNavigator(),
                };

                module.OnPostMapRequestHandler(context);
                Assert.IsNotNull(context.Handler);
                Assert.AreEqual(context.Handler.GetType(), typeof(MagickScriptHandler));
            }
            finally
            {
                Cleanup.DeleteFile(tempFile);
            }
        }
Пример #4
0
        public void Test_Write304()
        {
            string config = @"<magick.net.web canCreateDirectories=""false"" cacheDirectory=""c:\cache""/>";

            MagickWebSettings settings = TestSectionLoader.Load(config);

            TestMagickHandler handler = new TestMagickHandler(settings, ImageData);

            HttpRequest request = new HttpRequest("foo", "https://bar", string.Empty);

            using (MemoryStream memStream = new MemoryStream())
            {
                using (StreamWriter writer = new StreamWriter(memStream))
                {
                    HttpResponse response = new HttpResponse(writer);
                    HttpContext  context  = new HttpContext(request, response);

                    FileInfo file          = new FileInfo(handler.FileName);
                    string   modifiedSince = file.LastWriteTimeUtc.AddMinutes(1).ToString("r", CultureInfo.InvariantCulture);
                    request.SetHeaders("If-Modified-Since", modifiedSince);
                    handler.ProcessRequest(context);

                    Assert.AreEqual(200, response.StatusCode);
                    Assert.AreEqual(file.LastWriteTimeUtc.ToString(), response.Cache.GetLastModified().ToString());

                    request.SetHeaders("If-Modified-Since", "foobar");
                    handler.ProcessRequest(context);

                    Assert.AreEqual(200, response.StatusCode);

                    modifiedSince = file.LastWriteTimeUtc.AddMinutes(1).ToString("r", CultureInfo.InvariantCulture) + "; foo";
                    request.SetHeaders("If-Modified-Since", modifiedSince);
                    handler.ProcessRequest(context);

                    Assert.AreEqual(200, response.StatusCode);

                    modifiedSince = file.LastWriteTimeUtc.ToString("r", CultureInfo.InvariantCulture);
                    request.SetHeaders("If-Modified-Since", modifiedSince);
                    handler.ProcessRequest(context);

                    Assert.AreEqual(304, response.StatusCode);

                    string tempFile = Path.GetTempFileName();
                    try
                    {
                        File.Copy(handler.FileName, tempFile, true);
                        File.SetLastWriteTimeUtc(tempFile, DateTime.Now.AddYears(2));

                        handler.FileName = tempFile;

                        request.SetHeaders("If-Modified-Since", modifiedSince);
                        handler.ProcessRequest(context);

                        Assert.AreEqual(304, response.StatusCode);
                        Assert.AreEqual(DateTime.Now.Year, response.Cache.GetLastModified().Year);
                    }
                    finally
                    {
                        Cleanup.DeleteFile(tempFile);
                    }
                }
            }
        }