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); }
public void ThrowsExceptionWhenMethodIsNotEligible() { var scanner = new RouteScanner(); var method = typeof(MethodsToScan).GetMethod("InvalidRoute"); Should.Throw <InvalidRouteMethodExceptions>(() => scanner.ScanMethod(method)); }
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; }
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; }
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); }
public void ReturnsFalseWhenNamespaceIsNotExcluded() { var scanner = new RouteScanner(); scanner.Exclude("Some.Random.Namespace"); scanner.CheckIsExcluded("Some.Other.Namespace").ShouldBeFalse(); }
public void ReturnsTrueWhenScopeIsNullOrEmpty() { var scanner = new RouteScanner(); scanner.CheckIsInScope(typeof(ClassInScopeA)).ShouldBeTrue(); scanner.CheckIsInScope(typeof(ClassInScopeB)).ShouldBeTrue(); }
public void ReturnsTrueWhenGenericTypeIsIncluded() { var scanner = new RouteScanner(); scanner.Include <Route>(); scanner.CheckIsIncluded(typeof(Route)).ShouldBeTrue(); }
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); }
public void ReturnsTrueWhenIncludesIsEmpty() { var scanner = new RouteScanner(); scanner.CheckIsIncluded(AppDomain.CurrentDomain.GetAssemblies().First()).ShouldBeTrue(); scanner.CheckIsIncluded(typeof(Route)).ShouldBeTrue(); }
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); }
public void ReturnsFalseWhenTypeScopeDoesNotMatch() { var scanner = new RouteScanner(); scanner.SetScope("ScopeA"); scanner.CheckIsInScope(typeof(ClassInScopeB)).ShouldBeFalse(); }
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}"); }
public void ReturnsTrueWhenTypeIsInScope() { var scanner = new RouteScanner(); scanner.SetScope("ScopeA"); scanner.CheckIsInScope(typeof(ClassInScopeA)).ShouldBeTrue(); }
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}"); }
public void ReturnsFalseWhenTypeIsNotInIncludes() { var scanner = new RouteScanner(); scanner.Include <Route>(); scanner.CheckIsIncluded(typeof(Router)).ShouldBeFalse(); }
public void ReturnsTrueWhenNamespaceIsExcluded() { var scanner = new RouteScanner(); scanner.Exclude("Some.Random.Namespace"); scanner.CheckIsExcluded("Some.Random.Namespace").ShouldBeTrue(); }
public void ReturnsTrueWhenTypeIsExcluded() { var scanner = new RouteScanner(); scanner.Exclude(typeof(Route)); scanner.CheckIsExcluded(typeof(Route)).ShouldBeTrue(); }
public void ReturnsTrueWhenAssemblyIsIncluded() { var assembly = AppDomain.CurrentDomain.GetAssemblies().First(); var scanner = new RouteScanner(); scanner.Include(assembly); scanner.CheckIsIncluded(assembly).ShouldBeTrue(); }
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(); }
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); }
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); }
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(); }
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); }
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)); }
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)); }
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(); }
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); }
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); }