public void TestServiceCollectorWindows() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { // Create a service - This won't throw an exception, but it won't work if you are not an Admin. var serviceName = "AsaDemoService"; var exeName = "AsaDemoService.exe"; var cmd = string.Format("create {0} binPath=\"{1}\"", serviceName, exeName); ExternalCommandRunner.RunExternalCommand("sc.exe", cmd); var sc = new ServiceCollector(new CollectCommandOptions()); sc.TryExecute(); Assert.IsTrue(sc.Results.Any(x => x is ServiceObject RO && RO.Name.Equals(serviceName))); ConcurrentStack <CollectObject> results = new ConcurrentStack <CollectObject>(); sc = new ServiceCollector(changeHandler: x => results.Push(x)); sc.TryExecute(); Assert.IsTrue(results.Any(x => x is ServiceObject RO && RO.Name.Equals(serviceName))); // Clean up cmd = string.Format("delete {0}", serviceName); ExternalCommandRunner.RunExternalCommand("sc.exe", cmd); } }
public void TestServiceCollectorWindows() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { var FirstRunId = "TestServiceCollector-1"; var SecondRunId = "TestServiceCollector-2"; var fwc = new ServiceCollector(FirstRunId); fwc.Execute(); // Create a service - This won't throw an exception, but it won't work if you are not an Admin. var serviceName = "AsaDemoService"; var exeName = "AsaDemoService.exe"; var cmd = string.Format("create {0} binPath=\"{1}\"", serviceName, exeName); ExternalCommandRunner.RunExternalCommand("sc.exe", cmd); fwc = new ServiceCollector(SecondRunId); fwc.Execute(); // Clean up cmd = string.Format("delete {0}", serviceName); ExternalCommandRunner.RunExternalCommand("sc.exe", cmd); BaseCompare bc = new BaseCompare(); if (!bc.TryCompare(FirstRunId, SecondRunId)) { Assert.Fail(); } var results = bc.Results; Assert.IsTrue(results.ContainsKey("SERVICE_CREATED")); Assert.IsTrue(results["SERVICE_CREATED"].Where(x => x.Identity.Contains("AsaDemoService")).Count() > 0); } }
public void Collect() { var sut = new ServiceCollector(); var services = sut.Collect().ToArray(); Assert.AreEqual(16, services.Length); var service = services.Where(s => s.ServiceType.Name.IndexOf("MyService") >= 0 && s.EntryPointMethodname == "Echo").FirstOrDefault(); Assert.AreEqual(servicehost.nonpublic.HttpMethods.Get, service.HttpMethod); Assert.AreEqual("Arrange", service.SetupMethodname); Assert.AreEqual("Cleanup", service.TeardownMethodname); Assert.AreEqual("/echo", service.Route); Assert.AreEqual(1, service.Parameters.Length); Assert.AreEqual("ping", service.Parameters[0].Name); Assert.AreSame(typeof(string), service.Parameters[0].Type); Assert.AreEqual(typeof(string), service.ResultType); service = services.Where(s => s.ServiceType.Name.IndexOf("MyService") >= 0 && s.EntryPointMethodname == "JsonDeser").FirstOrDefault(); Assert.AreEqual(servicehost.nonpublic.HttpMethods.Post, service.HttpMethod); Assert.AreEqual("Arrange", service.SetupMethodname); Assert.AreEqual("Cleanup", service.TeardownMethodname); Assert.AreEqual("/reflection/{id}", service.Route); Assert.AreEqual(2, service.Parameters.Length); Assert.AreEqual("id", service.Parameters[0].Name); Assert.AreSame(typeof(string), service.Parameters[0].Type); Assert.IsFalse(service.Parameters[0].IsPayload); Assert.AreEqual("payload", service.Parameters[1].Name); Assert.IsTrue(service.Parameters[1].Type.Name.IndexOf("JsonPayload") >= 0); Assert.IsTrue(service.Parameters[1].IsPayload); Assert.IsTrue(service.ResultType.Name.IndexOf("JsonPayload") >= 0); service = services.Where(s => s.ServiceType.Name.IndexOf("YourService") >= 0 && s.EntryPointMethodname == "Add").FirstOrDefault(); Assert.AreEqual(servicehost.nonpublic.HttpMethods.Post, service.HttpMethod); Assert.AreEqual(null, service.SetupMethodname); Assert.AreEqual(null, service.TeardownMethodname); Assert.AreEqual("/add", service.Route); Assert.IsTrue(service.ResultType.Name.IndexOf("AddResult") >= 0); service = services.Where(s => s.ServiceType.Name.IndexOf("MyService") >= 0 && s.EntryPointMethodname == "Deafmute").FirstOrDefault(); Assert.AreEqual(servicehost.nonpublic.HttpMethods.Get, service.HttpMethod); Assert.AreEqual("Arrange", service.SetupMethodname); Assert.AreEqual("Cleanup", service.TeardownMethodname); Assert.AreEqual("/deafmute", service.Route); Assert.AreEqual(0, service.Parameters.Length); Assert.AreSame(service.ResultType, typeof(void)); }
public static IServiceCollection AddServiceDescriptors(this IServiceCollection services) { foreach (var service in ServiceCollector.GetServices()) { services.Add(service); } // Singleton DI for session services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>(); // Singleton DI for security services.AddSingleton <ISecurityService, SecurityService>(); return(services); }
public void Collect_explicit() { var sut = new ServiceCollector(); var services = sut.Collect(new[] { typeof(SomeTestService), typeof(test_ServiceCollector) }).ToArray(); Assert.AreEqual(17, services.Length); var service = services.Where(s => s.ServiceType.Name.IndexOf("SomeTestService") >= 0 && s.EntryPointMethodname == "f").FirstOrDefault(); Assert.IsNotNull(service); service = services.Where(s => s.ServiceType.Name.IndexOf("test_ServiceCollector") >= 0).FirstOrDefault(); Assert.IsNull(service); }