示例#1
0
        public AssetFinderCache(AssetSettings settings, IFubuApplicationFiles files)
        {
            _settings = settings;
            _files = files;
            _searches.OnMissing = findAsset;

            _graph = new Lazy<AssetGraph>(findAll);
        }
示例#2
0
        public void add_exclusions()
        {
            var settings = new AssetSettings();
            settings.Exclude("something.js");
            settings.Exclude("node-content");

            settings.CreateAssetSearch().Exclude.ShouldEqual("node_modules/*;something.js;node-content");
        }
示例#3
0
        public AssetFinderCache(AssetSettings settings, IFubuApplicationFiles files)
        {
            _settings           = settings;
            _files              = files;
            _searches.OnMissing = findAsset;

            _graph = new Lazy <AssetGraph>(findAll);
        }
示例#4
0
        public void default_allowable_mimetypes_includes_fonts()
        {
            var settings = new AssetSettings();
            var search = settings.CreateAssetSearch();

            search.Include.ShouldContain(".svg");
            search.Include.ShouldContain(".eot");
            search.Include.ShouldContain(".ttf");
            search.Include.ShouldContain(".woff");
        }
示例#5
0
        public void no_public_folder_if_in_anywhere_mode()
        {
            var settings = new AssetSettings
            {
                Mode = SearchMode.Anywhere
            };

            settings.CreateFileWatcherManifest().PublicAssetFolder.ShouldBeEmpty();
        }
示例#6
0
        public void set_the_public_folder_if_in_that_mode()
        {
            var settings = new AssetSettings
            {
                Mode = SearchMode.PublicFolderOnly,
                PublicFolder = "public"
            };

            var manifest = settings.CreateFileWatcherManifest();

            manifest.PublicAssetFolder.ShouldEqual(
                FubuMvcPackageFacility.GetApplicationPath().AppendPath("public").Replace('\\', '/'));
        }
示例#7
0
        public void adds_content_extensions()
        {
            var settings = new AssetSettings();
            settings.ContentMatches.Add(".foo");

            var manifest = settings.CreateFileWatcherManifest();

            manifest.ContentMatches.ShouldContain(".foo");
            manifest.ContentMatches.ShouldContain(".htm");
            manifest.ContentMatches.ShouldContain(".html");
        }
示例#8
0
        public void adds_the_user_supplied_extensions()
        {
            var settings = new AssetSettings();
            var manifest = settings.CreateFileWatcherManifest();

            manifest.AssetExtensions.ShouldContain(".svg");
            manifest.AssetExtensions.ShouldContain(".ttf");
            manifest.AssetExtensions.ShouldContain(".eot");
        }
示例#9
0
        private AuthorizationRight forFile(string filename)
        {
            var file = new FubuFile(filename, null);
            var owinSettings = new AssetSettings();
            owinSettings.StaticFileRules.Add(new AssetSettings());

            return owinSettings.DetermineStaticFileRights(file);
        }
示例#10
0
        public void adds_all_the_default_asset_extensions()
        {
            var settings = new AssetSettings();
            var manifest = settings.CreateFileWatcherManifest();

            manifest.AssetExtensions.ShouldContain(".js");
            manifest.AssetExtensions.ShouldContain(".css");
            manifest.AssetExtensions.ShouldContain(".jpeg");
            manifest.AssetExtensions.ShouldContain(".jpg");
            manifest.AssetExtensions.ShouldContain(".bmp");
        }
示例#11
0
        public void determine_the_public_folder_with_a_non_null_but_nonexistent_version()
        {
            new FileSystem().CreateDirectory(
                PublicFolder.ToFullPath());

            var settings = new AssetSettings
            {
                Version = Guid.NewGuid().ToString()
            };

            settings.DeterminePublicFolder(FubuApplicationFiles.ForDefault())
                .ShouldBe(PublicFolder.ToFullPath());
        }
示例#12
0
        private static IEnumerable<IFubuFile> findAssetFiles(BehaviorGraph behaviorGraph, AssetSettings settings)
        {
            var search = settings.CreateAssetSearch();

            if (settings.Mode == SearchMode.PublicFolderOnly)
            {
                var publicFolder = settings.DeterminePublicFolder();
                var appFolder = FubuMvcPackageFacility.GetApplicationPath();

                return new FileSystem().FindFiles(publicFolder, search)
                    .Select(x => {
                        return new FubuFile(x, ContentFolder.Application)
                        {
                            RelativePath = x.PathRelativeTo(appFolder)
                        };
                    });
            }

            return behaviorGraph.Files.FindFiles(search);
        }
示例#13
0
        public void determine_the_public_folder_with_a_non_null_but_nonexistent_version()
        {
            new FileSystem().CreateDirectory(
                FubuMvcPackageFacility.GetApplicationPath().AppendPath("public").ToFullPath());

            var settings = new AssetSettings
            {
                Version = Guid.NewGuid().ToString()
            };

            settings.DeterminePublicFolder()
                .ShouldEqual(FubuMvcPackageFacility.GetApplicationPath().AppendPath("public").ToFullPath());
        }
示例#14
0
        public void default_content_files()
        {
            var settings = new AssetSettings();

            settings.ContentMatches.ShouldContain(".htm");
            settings.ContentMatches.ShouldContain(".html");
            settings.ContentMatches.ShouldContain(".txt");
        }
示例#15
0
        public void determine_the_public_folder_when_the_version_does_exist()
        {
            new FileSystem().CreateDirectory(
                FubuMvcPackageFacility.GetApplicationPath().AppendPath("public").ToFullPath());
            new FileSystem().CreateDirectory(
                FubuMvcPackageFacility.GetApplicationPath().AppendPath("public", "1.0.1").ToFullPath());

            var settings = new AssetSettings
            {
                Version = "1.0.1"
            };

            settings.DeterminePublicFolder()
                .ShouldEqual(FubuMvcPackageFacility.GetApplicationPath().AppendPath("public", "1.0.1").ToFullPath());
        }
示例#16
0
 public StaticFileMiddleware(Func<IDictionary<string, object>, Task> inner, IFubuApplicationFiles files, AssetSettings settings)
     : base(inner)
 {
     _files = files;
     _settings = settings;
 }
示例#17
0
        public void set_the_public_folder_if_in_that_mode()
        {
            var settings = new AssetSettings
            {
                Mode = SearchMode.PublicFolderOnly,
                PublicFolder = "public"
            };

            var manifest = settings.CreateFileWatcherManifest(FubuApplicationFiles.ForDefault());

            manifest.PublicAssetFolder.ShouldBe(
                AppDomain.CurrentDomain.BaseDirectory.ParentDirectory().ParentDirectory().AppendPath("public").Replace('\\', '/'));
        }
示例#18
0
        public void determine_the_public_folder_with_no_version()
        {
            new FileSystem().CreateDirectory(
                PublicFolder.ToFullPath());

            var settings = new AssetSettings
            {
                Version = null
            };

            settings.DeterminePublicFolder(FubuApplicationFiles.ForDefault())
                .ShouldBe(PublicFolder);
        }
示例#19
0
        public void headers_in_production_mode()
        {
            FubuMode.Reset();

            var settings = new AssetSettings();
            settings.Headers.GetAllKeys()
                .ShouldHaveTheSameElementsAs(HttpRequestHeaders.CacheControl, HttpRequestHeaders.Expires);

            settings.Headers[HttpRequestHeaders.CacheControl]().ShouldEqual("private, max-age=86400");
            settings.Headers[HttpRequestHeaders.Expires]().ShouldNotBeNull();
        }
示例#20
0
        public void determine_the_public_folder_with_no_version()
        {
            new FileSystem().CreateDirectory(
                FubuMvcPackageFacility.GetApplicationPath().AppendPath("public").ToFullPath());

            var settings = new AssetSettings
            {
                Version = null
            };

            settings.DeterminePublicFolder()
                .ShouldEqual(FubuMvcPackageFacility.GetApplicationPath().AppendPath("public"));
        }
 public WriteFileContinuation(IHttpResponse response, IFubuFile file, AssetSettings settings) : base(response, DoNext.Stop)
 {
     _file = file;
     _settings = settings;
 }
示例#22
0
 public void exclusions_includes_node_modules()
 {
     var settings = new AssetSettings();
     settings.Exclusions.ShouldStartWith("node_modules/*");
 }
示例#23
0
        public void determine_the_public_folder_when_the_version_does_exist()
        {
            new FileSystem().CreateDirectory(
                PublicFolder.ToFullPath());
            var expectedPath = AppDomain.CurrentDomain.BaseDirectory
                .ParentDirectory().ParentDirectory().AppendPath("public", "1.0.1").ToFullPath();

            new FileSystem().CreateDirectory(
                expectedPath);

            var settings = new AssetSettings
            {
                Version = "1.0.1"
            };

            settings.DeterminePublicFolder(FubuApplicationFiles.ForDefault())
                .ShouldBe(expectedPath);
        }