public void ShouldAddRouteHandler() { RouteManager routeManager; routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); routeManager.AddRouteHandler(new BooksRouteHandler()); }
public void ShouldFailsToAddRouteHandlerWhenParameterIsNull() { RouteManager routeManager; routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); Assert.ThrowsException <ArgumentNullException>(() => routeManager.AddRouteHandler(null)); }
public void ShouldNotGetResponseIfParameterIsWrongType() { RouteManager routeManager; routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); routeManager.AddRouteHandler(new BooksRouteHandler()); Assert.ThrowsException <InvalidParameterException>(() => routeManager.GetResponse(RESTMethods.GET, "/root/API/Books/t")); }
public void ShouldNotGetRouteIfMethodsAreDifferent() { RouteManager routeManager; routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); routeManager.AddRouteHandler(new BooksRouteHandler()); Assert.ThrowsException <RouteNotFoundException>(() => routeManager.GetRoute(RESTMethods.PUT, "/root/API/Authors")); }
public void ShouldNotGetRouteIfSegmentIsNotFound() { RouteManager routeManager; routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); routeManager.AddRouteHandler(new BooksRouteHandler()); Assert.ThrowsException <RouteNotFoundException>(() => routeManager.GetRoute(RESTMethods.GET, "/root/API/Authors/5/Test")); }
public void ShouldNotGetResponseIfURLIsEmpty() { RouteManager routeManager; routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); routeManager.AddRouteHandler(new BooksRouteHandler()); Assert.ThrowsException <ArgumentNullException>(() => routeManager.GetResponse(RESTMethods.GET, null)); Assert.ThrowsException <ArgumentNullException>(() => routeManager.GetResponse(RESTMethods.GET, "")); }
public void ShouldGetResponseWithoutParameter() { RouteManager routeManager; Response response; routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); routeManager.AddRouteHandler(new StatusRouteHandler()); response = routeManager.GetResponse(RESTMethods.GET, "/root/API/Status"); Assert.IsNotNull(response); Assert.IsTrue(response.Body.Contains("true")); }
public void ShouldGetResponseWithNullContent() { RouteManager routeManager; Response response; routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); routeManager.AddRouteHandler(new BooksRouteHandler()); response = routeManager.GetResponse(RESTMethods.GET, "/root/API/GetNull"); Assert.IsNotNull(response); Assert.AreEqual("", response.Body); }
public void ShouldGetCustomResponse() { RouteManager routeManager; Response response; routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); routeManager.AddRouteHandler(new BooksRouteHandler()); response = routeManager.GetResponse(RESTMethods.GET, "/root/API/GetCustomResponse"); Assert.IsNotNull(response); Assert.AreEqual(ResponseCodes.Custom, response.ResponseCode); Assert.AreEqual("Custom", response.Body); }
static async Task Main(string[] args) { RESTClient client; string result; Book book; RESTServer server; IRouteManager routeManager; routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); routeManager.AddRouteHandler(new BooksRouteHandlers()); server = new RESTServer(new ConsoleLogger(new DefaultLogFormatter()), routeManager, "http://localhost:8734/"); server.Start(); Thread.Sleep(1000); client = new RESTClient(new HttpConnector(), new ResponseDeserializer()); /*Console.WriteLine("Trying to query URL"); * result = await client.GetAsync("http://localhost:8734/root/books/500"); * Console.WriteLine("Result:"); * Console.WriteLine(result);*/ Console.WriteLine("Trying to query URL"); book = await client.GetAsync <Book>("http://localhost:8734/root/books/500"); Console.WriteLine("Result:"); Console.WriteLine(book); Console.WriteLine("Trying to query URL"); book = await client.GetAsync <Book>("http://localhost:8734/root/books?year=2020&author=stephenking"); Console.WriteLine("Result:"); Console.WriteLine(book); Console.WriteLine("Trying to query URL"); try { book = await client.GetAsync <Book>("http://localhost:8734/root/book/500"); } catch (Exception ex) { Console.WriteLine("Result:"); Console.WriteLine(ex); } Console.ReadLine(); server.Stop(); Console.ReadLine(); }
public void ShouldGetRoute() { RouteManager routeManager; Route route; routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); routeManager.AddRouteHandler(new BooksRouteHandler()); route = routeManager.GetRoute(RESTMethods.GET, "/root/API/Authors/5"); Assert.IsNotNull(route); Assert.IsNotNull(route.Binding); Assert.IsNotNull(route.Binding.RouteHandler); Assert.IsNotNull(route.Binding.MethodInfo); Assert.AreEqual("5", route.Get("Id")); }
public void ShouldGetRouteWithEncodedParameters() { RouteManager routeManager; Route route; routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); routeManager.AddRouteHandler(new BooksRouteHandler()); route = routeManager.GetRoute(RESTMethods.GET, "/root/API/books?year=1980&author=to%20to"); Assert.IsNotNull(route); Assert.IsNotNull(route.Binding); Assert.IsNotNull(route.Binding.RouteHandler); Assert.IsNotNull(route.Binding.MethodInfo); Assert.AreEqual("1980", route.Get("Year")); Assert.AreEqual("to to", route.Get("Author")); }
static void Main(string[] args) { ILogger logger; VersionControlModule versionControlModule; //ServiceHostModule serviceHostModule; //IBotsService service; RESTServer server; IRouteManager routeManager; IDatabase database; IConnectionFactory connectionFactory; ICommandBuilder commandBuilder; IDatabaseCreator databaseCreator; IBotModule botModule; IOrderModule orderModule; IOrderManagerModule orderManagerModule; IProduceOrderModule produceOrderModule; IHarvestOrderModule harvestOrderModule; IBuildOrderModule buildOrderModule; IBotSchedulerModule botSchedulerModule; PIOServiceClient client; quitEvent = new AutoResetEvent(false); Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress); //logger = new ConsoleLogger(new DefaultLogFormatter()); logger = new UnicastLogger(IPAddress.Loopback, Properties.Settings.Default.UnicastPort); //logger = new FileLogger(new DefaultLogFormatter(), "PIO.Bots.ServerHost.Log"); databaseCreator = new SqlDatabaseCreator(Properties.Settings.Default.Server, Properties.Settings.Default.DatabaseName); connectionFactory = new SqlConnectionFactory(Properties.Settings.Default.Server, Properties.Settings.Default.DatabaseName); commandBuilder = new SqlCommandBuilder(); database = new Database(connectionFactory, commandBuilder); versionControlModule = new VersionControlModule(logger, databaseCreator, new BotsVersionControl(database)); if (!versionControlModule.InitializeDatabase(Properties.Settings.Default.DropDatabase)) { Console.ReadLine(); return; } client = new PIOServiceClient(new BasicHttpBinding(), new EndpointAddress($@"http://127.0.0.1:8733/PIO/Service/")); client.Open(); botModule = new BotModule(logger, database); orderModule = new OrderModule(logger, database); produceOrderModule = new ProduceOrderModule(logger, database); harvestOrderModule = new HarvestOrderModule(logger, database); buildOrderModule = new BuildOrderModule(logger, database); orderManagerModule = new OrderManagerModule(logger, client, orderModule, produceOrderModule, harvestOrderModule, buildOrderModule, 10); botSchedulerModule = new BotSchedulerModule(logger, client, botModule, orderManagerModule, 5); botSchedulerModule.Start(); routeManager = new RouteManager(new RouteParser(), new ResponseSerializer()); routeManager.AddRouteHandler(new BotRouteHandler(botModule)); routeManager.AddRouteHandler(new ProduceOrderRouteHandler(produceOrderModule)); routeManager.AddRouteHandler(new HarvestOrderRouteHandler(harvestOrderModule)); routeManager.AddRouteHandler(new BuildOrderRouteHandler(buildOrderModule)); server = new RESTServer(logger, routeManager, "http://127.0.0.1:8734/"); server.Start(); WaitHandle.WaitAny(new WaitHandle[] { quitEvent }, -1); server.Stop(); //serviceHostModule.Stop(); botSchedulerModule.Stop(); client.Close(); logger.Dispose(); Console.CancelKeyPress -= new ConsoleCancelEventHandler(Console_CancelKeyPress); }