Esempio n. 1
0
        public void ScannerShouldInstantiateScannerControllerWithInjectedDependencies()
        {
            const string TestRoute = "/scannercontroller/get2";

            var test = new TestDependency();

            IoC.RegisterInstance <ITestDependency>(nameof(ITestDependency), test);

            var logger = new TestLogger();

            IoC.RegisterInstance <IChromelyLogger>(nameof(IChromelyLogger), logger);

            var scanner       = new RouteScanner(Assembly.GetExecutingAssembly());
            var routeCommands = scanner.Scan();

            foreach (var route in routeCommands.Item1)
            {
                ServiceRouteProvider.AddRoute(route.Key, route.Value);
            }

            foreach (var command in routeCommands.Item2)
            {
                ServiceRouteProvider.AddCommand(command.Key, command.Value);
            }

            var request = new ChromelyRequest(new RoutePath(Method.GET, TestRoute), null, null);

            var routePath   = new RoutePath(Method.GET, TestRoute);
            var get2        = ServiceRouteProvider.GetRoute(routePath);
            var getResponse = get2.Invoke(request);

            Assert.Equal(TestDependency.TestDependencyResponse, getResponse.Data.ToString());
            Assert.Equal(ScannerControllerWithDependencyInjection.Get2Response, logger.Message);
        }
Esempio n. 2
0
            public void ThrowsExceptionWhenMethodIsNotEligible()
            {
                var scanner = new RouteScanner();
                var method  = typeof(MethodsToScan).GetMethod("InvalidRoute");

                Should.Throw <InvalidRouteMethodExceptions>(() => scanner.ScanMethod(method));
            }
Esempio n. 3
0
            public void ReturnsRoutesAndLogsWithInclusions()
            {
                //ReflectionTypeLoadException exception = null;
                //var attempts = 0;

                //do
                //{
                //    attempts++;
                //    exception = null;

                //    try
                //    {
                var logger  = new InMemoryLogger();
                var scanner = new RouteScanner {
                    Logger = logger
                };

                scanner.Include(Assembly.GetExecutingAssembly());
                logger.Logs.ShouldBeEmpty();

                var routes = scanner.Scan();

                routes.ShouldNotBeNull();
                routes.Count.ShouldBe(2);
                logger.Logs.ShouldNotBeEmpty();
                //    }
                //    catch (ReflectionTypeLoadException ex)
                //    {
                //        exception = ex;
                //        Thread.Sleep(231);
                //    }
                //} while (exception != null || attempts > 5);

                //if (exception != null) throw exception;
            }
Esempio n. 4
0
            public void ReturnsRoutesAndLogs()
            {
                //ReflectionTypeLoadException exception = null;
                //var attempts = 0;

                //do
                //{
                //    attempts++;
                //    exception = null;

                //    try
                //    {
                var logger  = new InMemoryLogger();
                var scanner = new RouteScanner {
                    Logger = logger
                };

                logger.Logs.ShouldBeEmpty();

                var routes = scanner.Scan();

                routes.ShouldNotBeNull();
                routes.ShouldNotBeEmpty();
                routes.Count.ShouldBeGreaterThanOrEqualTo(2);
                logger.Logs.ShouldNotBeEmpty();
                //    }
                //    catch (ReflectionTypeLoadException ex)
                //    {
                //        exception = ex;
                //        Thread.Sleep(417);
                //    }
                //} while (exception != null || attempts > 5);

                //if (exception != null) throw exception;
            }
Esempio n. 5
0
            public void SkipsDuplicateNamespaces()
            {
                const string ns1 = "Grapevine.Tests.Server";
                const string ns2 = "Grapevine.Tests.Client";

                var scanner = new RouteScanner();

                scanner.Logger = new XUnitLogger(_helper);
                scanner.ExcludedNamespaces().Count.ShouldBe(1);

                scanner.Exclude(ns1);

                scanner.ExcludedNamespaces().Count.ShouldBe(2);
                scanner.ExcludedNamespaces()[1].ShouldBe(ns1);

                scanner.Exclude(ns2);

                scanner.ExcludedNamespaces().Count.ShouldBe(3);
                scanner.ExcludedNamespaces()[1].ShouldBe(ns1);
                scanner.ExcludedNamespaces()[2].ShouldBe(ns2);

                scanner.Exclude(ns1);

                scanner.ExcludedNamespaces().Count.ShouldBe(3);
                scanner.ExcludedNamespaces()[1].ShouldBe(ns1);
                scanner.ExcludedNamespaces()[2].ShouldBe(ns2);
            }
Esempio n. 6
0
                public void ReturnsFalseWhenNamespaceIsNotExcluded()
                {
                    var scanner = new RouteScanner();

                    scanner.Exclude("Some.Random.Namespace");
                    scanner.CheckIsExcluded("Some.Other.Namespace").ShouldBeFalse();
                }
Esempio n. 7
0
                public void ReturnsTrueWhenScopeIsNullOrEmpty()
                {
                    var scanner = new RouteScanner();

                    scanner.CheckIsInScope(typeof(ClassInScopeA)).ShouldBeTrue();
                    scanner.CheckIsInScope(typeof(ClassInScopeB)).ShouldBeTrue();
                }
Esempio n. 8
0
                public void ReturnsTrueWhenGenericTypeIsIncluded()
                {
                    var scanner = new RouteScanner();

                    scanner.Include <Route>();
                    scanner.CheckIsIncluded(typeof(Route)).ShouldBeTrue();
                }
Esempio n. 9
0
            public void SkipsDuplicateNamespaces()
            {
                const string ns1 = "Grapevine.Tests.Server";
                const string ns2 = "Grapevine.Tests.Client";

                var scanner = new RouteScanner();

                scanner.IncludedNamespaces().Count.ShouldBe(0);

                scanner.Include(ns1);

                scanner.IncludedNamespaces().Count.ShouldBe(1);
                scanner.IncludedNamespaces()[0].ShouldBe(ns1);

                scanner.Include(ns2);

                scanner.IncludedNamespaces().Count.ShouldBe(2);
                scanner.IncludedNamespaces()[0].ShouldBe(ns1);
                scanner.IncludedNamespaces()[1].ShouldBe(ns2);

                scanner.Include(ns1);

                scanner.IncludedNamespaces().Count.ShouldBe(2);
                scanner.IncludedNamespaces()[0].ShouldBe(ns1);
                scanner.IncludedNamespaces()[1].ShouldBe(ns2);
            }
Esempio n. 10
0
                public void ReturnsTrueWhenIncludesIsEmpty()
                {
                    var scanner = new RouteScanner();

                    scanner.CheckIsIncluded(AppDomain.CurrentDomain.GetAssemblies().First()).ShouldBeTrue();
                    scanner.CheckIsIncluded(typeof(Route)).ShouldBeTrue();
                }
Esempio n. 11
0
            public void SkipsDuplicateAssemblies()
            {
                var assemblies = AppDomain.CurrentDomain.GetAssemblies();
                var assembly1  = assemblies[0];
                var assembly2  = assemblies[1];

                var scanner = new RouteScanner();

                scanner.IncludedAssemblies().Count.ShouldBe(0);

                scanner.Include(assembly1);

                scanner.IncludedAssemblies().Count.ShouldBe(1);
                scanner.IncludedAssemblies()[0].ShouldBe(assembly1);

                scanner.Include(assembly2);

                scanner.IncludedAssemblies().Count.ShouldBe(2);
                scanner.IncludedAssemblies()[0].ShouldBe(assembly1);
                scanner.IncludedAssemblies()[1].ShouldBe(assembly2);

                scanner.Include(assembly1);

                scanner.IncludedAssemblies().Count.ShouldBe(2);
                scanner.IncludedAssemblies()[0].ShouldBe(assembly1);
                scanner.IncludedAssemblies()[1].ShouldBe(assembly2);
            }
Esempio n. 12
0
                public void ReturnsFalseWhenTypeScopeDoesNotMatch()
                {
                    var scanner = new RouteScanner();

                    scanner.SetScope("ScopeA");
                    scanner.CheckIsInScope(typeof(ClassInScopeB)).ShouldBeFalse();
                }
Esempio n. 13
0
            public void ReturnsRoutesAndLogsWithBaseUrlArgument()
            {
                var assembly = GetTestAssembly();
                var baseurl  = "/api";
                var logger   = new InMemoryLogger();
                var scanner  = new RouteScanner {
                    Logger = logger
                };

                logger.Logs.ShouldBeEmpty();

                var routes = scanner.ScanAssembly(assembly, baseurl);

                routes.ShouldNotBeNull();
                routes.Count.ShouldBe(8);

                routes[0].HttpMethod.ShouldBe(HttpMethod.GET);
                routes[0].PathInfo.ShouldBe($"{baseurl}/todo/list");

                routes[4].HttpMethod.ShouldBe(HttpMethod.GET);
                routes[4].PathInfo.ShouldBe($"{baseurl}/user/list");

                logger.Logs.Count.ShouldBe(11);
                logger.Logs[0].Message.ShouldBe($"Generating routes for assembly {assembly.GetName().Name}");
            }
Esempio n. 14
0
                public void ReturnsTrueWhenTypeIsInScope()
                {
                    var scanner = new RouteScanner();

                    scanner.SetScope("ScopeA");
                    scanner.CheckIsInScope(typeof(ClassInScopeA)).ShouldBeTrue();
                }
Esempio n. 15
0
            public void ReturnsRoutesAndLogsWithArgumentAndBasepathInAttribute()
            {
                var type     = typeof(TypeWithBasePath);
                var logger   = new InMemoryLogger();
                var basepath = "/override";
                var scanner  = new RouteScanner {
                    Logger = logger
                };

                logger.Logs.ShouldBeEmpty();

                var routes = scanner.ScanType(type, basepath);

                routes.ShouldNotBeNull();
                routes.Count.ShouldBe(1);

                var route = routes[0];

                route.HttpMethod.ShouldBe(HttpMethod.GET);
                route.PathInfo.ShouldBe($"{basepath}/with/stuff");

                logger.Logs.Count.ShouldBe(2);
                logger.Logs[0].Message.ShouldBe($"Generating routes from type {type.Name}");
                logger.Logs[1].Message.ShouldBe($"Generated route {route.HttpMethod} {route.PathInfo} > {route.Name}");
            }
Esempio n. 16
0
                public void ReturnsFalseWhenTypeIsNotInIncludes()
                {
                    var scanner = new RouteScanner();

                    scanner.Include <Route>();
                    scanner.CheckIsIncluded(typeof(Router)).ShouldBeFalse();
                }
Esempio n. 17
0
                public void ReturnsTrueWhenNamespaceIsExcluded()
                {
                    var scanner = new RouteScanner();

                    scanner.Exclude("Some.Random.Namespace");
                    scanner.CheckIsExcluded("Some.Random.Namespace").ShouldBeTrue();
                }
Esempio n. 18
0
                public void ReturnsTrueWhenTypeIsExcluded()
                {
                    var scanner = new RouteScanner();

                    scanner.Exclude(typeof(Route));
                    scanner.CheckIsExcluded(typeof(Route)).ShouldBeTrue();
                }
Esempio n. 19
0
                public void ReturnsTrueWhenAssemblyIsIncluded()
                {
                    var assembly = AppDomain.CurrentDomain.GetAssemblies().First();
                    var scanner  = new RouteScanner();

                    scanner.Include(assembly);
                    scanner.CheckIsIncluded(assembly).ShouldBeTrue();
                }
Esempio n. 20
0
                public void ReturnsFalseWhenExcludesIsEmpty()
                {
                    var scanner = new RouteScanner();

                    scanner.CheckIsExcluded(AppDomain.CurrentDomain.GetAssemblies().First()).ShouldBeFalse();
                    scanner.CheckIsExcluded("Some.Other.Namespace").ShouldBeFalse();
                    scanner.CheckIsExcluded(typeof(Route)).ShouldBeFalse();
                }
Esempio n. 21
0
        public void AllAdminAuthorizationStatusHaveCorrectRoutes()
        {
            var routes = RouteScanner.Scan(attr =>
                                           !attr.Path.Contains("/admin/") && (attr.RequiredAuthorization == AuthorizationStatus.Operator ||
                                                                              attr.RequiredAuthorization == AuthorizationStatus.Operator ||
                                                                              attr.RequiredAuthorization == AuthorizationStatus.DatabaseAdmin));

            Assert.Empty(routes);
        }
Esempio n. 22
0
        public void AllAdminRoutesHaveCorrectAuthorizationStatus()
        {
            var routes = RouteScanner.Scan(attr =>
                                           attr.Path.Contains("/admin/") && (attr.RequiredAuthorization != AuthorizationStatus.ClusterAdmin &&
                                                                             attr.RequiredAuthorization != AuthorizationStatus.Operator &&
                                                                             attr.RequiredAuthorization != AuthorizationStatus.DatabaseAdmin));

            Assert.Empty(routes);
        }
Esempio n. 23
0
                public void ReturnsFalseWhenAssemblyIsNotIncluded()
                {
                    var assemblies = AppDomain.CurrentDomain.GetAssemblies();
                    var assembly1  = assemblies[0];
                    var assembly2  = assemblies[2];
                    var scanner    = new RouteScanner();

                    scanner.Include(assembly1);
                    scanner.CheckIsIncluded(assembly2).ShouldBeFalse();
                }
Esempio n. 24
0
            public void ReturnsNoRoutesWhenMethodHasNoAttribute()
            {
                var scanner = new RouteScanner();
                var method  = typeof(MethodsToScan).GetMethod("HasNoAttributes");

                var routes = scanner.ScanMethod(method);

                routes.ShouldNotBeNull();
                routes.ShouldBeEmpty();
            }
        public void FullScan()
        {
            var sampleDataStream = TestUtils.LoadResourceStream("TestData.MapBuilder_PartialMapRead.txt");
            var dataRoot         = new DefReader().LoadDataFromStream(sampleDataStream, CancellationToken.None);
            var mapResult        = new TradeMapBuilder().Build(dataRoot, CancellationToken.None);

            var routeScanner = new RouteScanner();

            routeScanner.SetLogging(TestUtils.GetTraceLogger());
            var scanResult = routeScanner.Scan(mapResult, new RouteScannerOptions(), CancellationToken.None);
        }
Esempio n. 26
0
            public void IncludesTypes()
            {
                var scanner = new RouteScanner();

                scanner.IncludedTypes().Count.ShouldBe(0);

                scanner.Include(typeof(Route));

                scanner.IncludedTypes().Count.ShouldBe(1);
                scanner.IncludedTypes()[0].ShouldBe(typeof(Route));
            }
Esempio n. 27
0
            public void ExcludesGenericTypes()
            {
                var scanner = new RouteScanner();

                scanner.ExcludedTypes().Count.ShouldBe(0);

                scanner.Exclude <Route>();

                scanner.ExcludedTypes().Count.ShouldBe(1);
                scanner.ExcludedTypes()[0].ShouldBe(typeof(Route));
            }
Esempio n. 28
0
            public void SetScope()
            {
                const string scope   = "MyScope";
                var          scanner = new RouteScanner();

                scanner.GetScope().Equals(string.Empty).ShouldBeTrue();

                scanner.SetScope(scope);

                scanner.GetScope().Equals(scope).ShouldBeTrue();
            }
Esempio n. 29
0
            public void IncludesAssemblies()
            {
                var assembly = AppDomain.CurrentDomain.GetAssemblies().First();
                var scanner  = new RouteScanner();

                scanner.IncludedAssemblies().Count.ShouldBe(0);

                scanner.Include(assembly);

                scanner.IncludedAssemblies().Count.ShouldBe(1);
                scanner.IncludedAssemblies()[0].ShouldBe(assembly);
            }
Esempio n. 30
0
            public void IncludesNamespaces()
            {
                const string ns      = "Grapevine.Tests.Server";
                var          scanner = new RouteScanner();

                scanner.IncludedNamespaces().Count.ShouldBe(0);

                scanner.Include(ns);

                scanner.IncludedNamespaces().Count.ShouldBe(1);
                scanner.IncludedNamespaces()[0].ShouldBe(ns);
            }