public void Should_return_the_source_of_the_asset()
        {
            var asset = new WebAsset("foo");
            resolver = new AbsoluteWebAssetResolver(asset);

            Assert.Equal(asset.Source, resolver.Resolve(new ResolverContext()).ElementAt(0));
        }
        public void Should_be_able_to_set_item()
        {
            _collection.Add(new WebAsset("~/scripts/script.js"));
            _collection[0] = new WebAsset("~/scripts/script1.js");

            Assert.Equal("~/scripts/script1.js", ((WebAsset)_collection[0]).Source);
        }
        public void Setting_duplicate_item_should_throw_exception()
        {
            _collection.Add(new WebAsset("~/scripts/script.js"));
            _collection.Add(new WebAsset("~/scripts/script2.js"));

            Assert.Throws <ArgumentException>(() => _collection[1] = new WebAsset("~/scripts/script.js"));
        }
        public void Setting_duplicate_item_should_throw_exception()
        {
            _collection.Add(new WebAsset("~/scripts/script.js"));
            _collection.Add(new WebAsset("~/scripts/script2.js"));

            Assert.Throws<ArgumentException>(() => _collection[1] = new WebAsset("~/scripts/script.js"));
        }
Пример #5
0
 public WebAssetTests()
 {
     checker         = new Mock <IWebAssetChecker>();
     serializer      = new Mock <IWebAssetGroupSerializer>();
     resolverFactory = new Mock <IWebAssetResolverFactory>();
     asset           = new WebAsset("~/Script/content1.js");
 }
Пример #6
0
        public async Task <WebAsset> ProcessAsync(WebAsset webAsset, IOwinRequest request)
        {
            var endpointUrl = this.endpointUrlFunc?.Invoke(request) ?? "";

            // take care about reverse proxy hosting scenarios
            var virtualFolder = request.PathBase.Value;
            var stripPath     = request.Headers["X-Forwarded-Strip"] ?? "";
            var prefix        = request.Headers["X-Forwarded-Prefix"] ?? "";

            if (virtualFolder.StartsWith(stripPath, StringComparison.OrdinalIgnoreCase))
            {
                virtualFolder = virtualFolder.Remove(0, stripPath.Length);
            }

            if (!virtualFolder.StartsWith("/"))
            {
                virtualFolder += "/";
            }

            var baseHref = prefix + virtualFolder;

            if (!baseHref.EndsWith("/"))
            {
                baseHref += "/";
            }

            return(webAsset.WithNewContent(await webAsset.Content.ReplaceAsync(
                                               new[] {
        public void Should_create_cdn_resolver_if_cdn_is_enabled_and_the_file_is_native()
        {
            checker.Setup(c => c.IsNative(It.IsAny<WebAsset>())).Returns(true);

            WebAsset asset = new WebAsset("foo.js");
            asset.UseTelerikContentDeliveryNetwork = true;
            Assert.IsType<CdnWebAssetResolver>(factory.Create(asset));
        }
        public void Should_return_the_source_of_the_asset()
        {
            var asset = new WebAsset("foo");

            resolver = new AbsoluteWebAssetResolver(asset);

            Assert.Equal(asset.Source, resolver.Resolve(new ResolverContext()).ElementAt(0));
        }
        public void Should_create_cdn_resolver_if_cdn_is_enabled_and_the_file_is_native()
        {
            checker.Setup(c => c.IsNative(It.IsAny <WebAsset>())).Returns(true);

            WebAsset asset = new WebAsset("foo.js");

            asset.UseTelerikContentDeliveryNetwork = true;
            Assert.IsType <CdnWebAssetResolver>(factory.Create(asset));
        }
Пример #10
0
        public bool IsNative(WebAsset asset)
        {
            var fileName = Path.GetFileName(asset.Source);

            foreach (var predicate in Predicates)
            {
                if (predicate(fileName))
                {
                    return true;
                }
            }

            return false;
        }
Пример #11
0
        public bool IsNative(WebAsset asset)
        {
            var fileName = Path.GetFileName(asset.Source);

            foreach (var predicate in Predicates)
            {
                if (predicate(fileName))
                {
                    return(true);
                }
            }

            return(false);
        }
Пример #12
0
        public void Should_check_for_absolute_assets()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.Items.Add(asset);

            checker.Setup(c => c.IsAbsolute(asset));

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            resolver.Resolve(new ResolverContext());

            checker.VerifyAll();
        }
Пример #13
0
        public void Should_not_check_for_native_assets_when_cdn_is_disabled()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.Items.Add(asset);

            checker.Setup(c => c.IsNative(asset));

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            resolver.Resolve(new ResolverContext());

            checker.Verify(c => c.IsNative(asset), Times.Never());
        }
        public void Should_check_for_absolute_assets()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.Items.Add(asset);

            checker.Setup(c => c.IsAbsolute(asset));

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            resolver.Resolve(new ResolverContext());

            checker.VerifyAll();
        }
Пример #15
0
        public WebAssetRenderer(WebAsset asset) : base(asset)
        {
            browser        = new ChromiumWebBrowser(asset.data);
            browser.Width  = 500;
            browser.Height = 5000;
            Window.MainWindowNotePanel.Children.Add(browser);

            browser.LoadingStateChanged += async(s, e) =>
            {
                if (!e.IsLoading) // browser.CanExecuteJavascriptInMainFrame == TRUE !
                {
                    await FitBrowserHeightToPageContent();
                }
            };
        }
        public void Should_check_for_native_assets_when_cdn_is_enabled()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.UseTelerikContentDeliveryNetwork = true;
            group.Items.Add(asset);

            checker.Setup(c => c.IsNative(asset));

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            resolver.Resolve(new ResolverContext());

            checker.VerifyAll();
        }
Пример #17
0
        public void Should_use_group_name_if_asset_is_shared()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", true);
            group.Items.Add(asset);

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            var result = resolver.Resolve(new ResolverContext
            {
                HttpHandlerPath = "baz.axd"
            });

            Assert.Equal("baz.axd?" + WebAssetHttpHandler.IdParameterName + "=foo", result.First());
        }
Пример #18
0
        public void Should_resolve_absolute_assets()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.Items.Add(asset);

            checker.Setup(c => c.IsAbsolute(asset)).Returns(true);
            resolverFactory.Setup(f => f.Create(asset)).Returns(new Mock <IWebAssetResolver>().Object);

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            resolver.Resolve(new ResolverContext());

            resolverFactory.VerifyAll();
        }
Пример #19
0
        public void Should_check_for_native_assets_when_cdn_is_enabled()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.UseTelerikContentDeliveryNetwork = true;
            group.Items.Add(asset);

            checker.Setup(c => c.IsNative(asset));

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            resolver.Resolve(new ResolverContext());

            checker.VerifyAll();
        }
        private IWebAssetResolver CreateAssetResolver(WebAsset asset)
        {
            if (checker.IsAbsolute(asset))
            {
                return(new AbsoluteWebAssetResolver(asset));
            }

            if (asset.UseTelerikContentDeliveryNetwork)
            {
                if (checker.IsNative(asset))
                {
                    return(new CdnWebAssetResolver(asset));
                }
            }

            return(new LocalWebAssetResolver(asset, locator));
        }
        private IWebAssetResolver CreateAssetResolver(WebAsset asset)
        {
            if (checker.IsAbsolute(asset))
            {
                return new AbsoluteWebAssetResolver(asset);
            }

            if (asset.UseTelerikContentDeliveryNetwork)
            {
                if (checker.IsNative(asset))
                {
                    return new CdnWebAssetResolver(asset);
                }
            }

            return new LocalWebAssetResolver(asset, locator);
        }
Пример #22
0
        /// <summary>
        /// Collects info about data and injects it into track's assets list.
        /// </summary>
        public void RegisterAssets(Track track)
        {
            try
            {
                var filePaths = NTDFiles.Items;
                foreach (string file in filePaths)
                {
                    // WEB ASSET
                    if (Regex.IsMatch(file, WebAssetPattern))
                    {
                        Match  m   = Regex.Match(file, WebAssetPattern);
                        string url = m.Groups[1].Value;

                        WebAsset webAsset = new WebAsset(url);
                        track.Assets.Add(webAsset);
                        continue;
                    }

                    // MODIFY
                    if (_modifyMode)
                    {
                        Match m = Regex.Match(file, ModifyTrackPattern);
                        if (m.Success)
                        {
                            int indexOfAsset = int.Parse(m.Groups[1].Value) - 1;
                            track.Assets.Add(_track.Assets[indexOfAsset]);
                            continue;
                        }
                    }

                    // OTHER FILES
                    FileInfo fi    = new FileInfo(file);
                    Type     type  = AssetConverter.GetAssetTypeByExtension(fi.Extension);
                    var      bytes = File.ReadAllBytes(file);

                    var basset = new BinaryAsset(type, bytes);
                    var asset  = AssetConverter.ResolveBinaryAsset(basset);
                    track.Assets.Add(asset);
                }
            } catch (Exception e)
            {
                throw new ForUserException(
                          "A Problem occured during registering assets. Details: " + e.Message);
            }
        }
        public void Should_append_asset_handler_path()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.Items.Add(asset);

            serializer.Setup(s => s.Serialize(group)).Returns("bar");

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            var result = resolver.Resolve(new ResolverContext
                {
                    HttpHandlerPath = "baz.axd"
                });

            Assert.Equal("baz.axd?" + WebAssetHttpHandler.IdParameterName + "=bar", result.First());
        }
Пример #24
0
        public void Should_append_asset_handler_path()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.Items.Add(asset);

            serializer.Setup(s => s.Serialize(group)).Returns("bar");

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            var result = resolver.Resolve(new ResolverContext
            {
                HttpHandlerPath = "baz.axd"
            });

            Assert.Equal("baz.axd?" + WebAssetHttpHandler.IdParameterName + "=bar", result.First());
        }
        public void Should_use_group_name_if_asset_is_shared()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", true);
            group.Items.Add(asset);

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            var result = resolver.Resolve(new ResolverContext
                {
                    HttpHandlerPath = "baz.axd"
                });

            Assert.Equal("baz.axd?" + WebAssetHttpHandler.IdParameterName + "=foo", result.First());
        }
Пример #26
0
 public LocalWebAssetResolver(WebAsset asset, IWebAssetLocator locator)
 {
     this.asset   = asset;
     this.locator = locator;
 }
Пример #27
0
 private IDictionary <string, object> FileToDictionary(WebAsset asset, int order)
 {
     return(new Dictionary <string, object> {
         { NameKey, asset.FileName }, { OrderKey, order }
     });
 }
Пример #28
0
 private string GetDirectoryName(WebAsset asset)
 {
     return(asset.Source.Substring(2, asset.Source.LastIndexOf("/") - 2));
 }
        public void Should_be_able_to_set_item()
        {
            _collection.Add(new WebAsset("~/scripts/script.js"));
            _collection[0] = new WebAsset("~/scripts/script1.js");

            Assert.Equal("~/scripts/script1.js", ((WebAsset) _collection[0]).Source);
        }
 public CdnWebAssetResolver(WebAsset asset)
 {
     this.asset = asset;
 }
Пример #31
0
        public async Task <WebAsset> ProcessAsync(WebAsset webAsset, IOwinRequest request)
        {
            //   return webAsset;
            var urlHelper = request.UrlHelper();

            var newContent = await webAsset.Content.ReplaceAsync(new[] { ("{BASE_HREF}", urlHelper.ClientBaseHref.WithTailingSlash()) });
 public AbsoluteWebAssetResolver(WebAsset asset)
 {
     this.asset = asset;
 }
 public AbsoluteWebAssetResolver(WebAsset asset)
 {
     this.asset = asset;
 }
Пример #34
0
 public CdnWebAssetResolver(WebAsset asset)
 {
     this.asset = asset;
 }
 public LocalWebAssetResolver(WebAsset asset, IWebAssetLocator locator)
 {
     this.asset = asset;
     this.locator = locator;
 }
Пример #36
0
 public bool IsAbsolute(WebAsset asset)
 {
     return asset.Source.Contains("//");
 }
Пример #37
0
 private IEnumerable <string> Resolve(ResolverContext resolverContext, WebAsset asset)
 {
     return(resolverFactory.Create(asset)
            .Resolve(resolverContext));
 }
 private IEnumerable<string> Resolve(ResolverContext resolverContext, WebAsset asset)
 {
     return resolverFactory.Create(asset)
                           .Resolve(resolverContext);
 }
        public void Should_resolve_native_assets()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.UseTelerikContentDeliveryNetwork = true;
            group.Items.Add(asset);

            checker.Setup(c => c.IsNative(asset)).Returns(true);
            resolverFactory.Setup(f => f.Create(asset)).Returns(new Mock<IWebAssetResolver>().Object);

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            resolver.Resolve(new ResolverContext());

            resolverFactory.VerifyAll();
        }
Пример #40
0
 public bool IsAbsolute(WebAsset asset)
 {
     return(asset.Source.Contains("//"));
 }
        public void Should_not_check_for_native_assets_when_cdn_is_disabled()
        {
            var asset = new WebAsset("foo");

            group = new WebAssetGroup("foo", false);
            group.Items.Add(asset);

            checker.Setup(c => c.IsNative(asset));

            resolver = new CombinedWebAssetGroupResolver(group, resolverFactory.Object, checker.Object, serializer.Object);

            resolver.Resolve(new ResolverContext());

            checker.Verify(c => c.IsNative(asset), Times.Never());
        }
        private void Process(Mock<Stream> outputStream, bool compress, int cacheDuration)
        {
            const string Id = "a-fake-id";

            Mock<HttpRequestBase> httpRequest = new Mock<HttpRequestBase>();
            httpRequest.SetupGet(request => request.QueryString).Returns(new NameValueCollection { { WebAssetHttpHandler.IdParameterName, Id } });

            outputStream.SetupGet(stream => stream.CanRead).Returns(true);
            outputStream.SetupGet(stream => stream.CanWrite).Returns(true);
            outputStream.SetupGet(stream => stream.CanSeek).Returns(true);

            outputStream.Setup(stream => stream.Write(It.IsAny<byte[]>(), It.IsAny<int>(), It.IsAny<int>())).Verifiable();

            Mock<HttpResponseBase> httpResponse = new Mock<HttpResponseBase>();
            httpResponse.SetupGet(response => response.OutputStream).Returns(outputStream.Object);

            Mock<HttpContextBase> httpContext = new Mock<HttpContextBase>();
            httpContext.SetupGet(context => context.IsDebuggingEnabled).Returns(false);
            httpContext.SetupGet(context => context.Request).Returns(httpRequest.Object);
            httpContext.SetupGet(context => context.Response).Returns(httpResponse.Object);

            WebAsset asset = new WebAsset("application/x-javascript", "2.0", compress, cacheDuration, "function ready(){ test.init(); }");

            _registry.Setup(registry => registry.Retrieve(It.IsAny<string>())).Returns(asset);

            httpResponse.SetupSet(response => response.ContentType).Verifiable();
            _compressor.Setup(compressor => compressor.Compress(httpContext.Object)).Verifiable();
            _cacher.Setup(cacher => cacher.Cache(httpContext.Object, It.IsAny<TimeSpan>())).Verifiable();

            _handler.ProcessRequest(httpContext.Object);
        }