public void GetItems_UseResultObject() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings { UseResultObject = true }); var dsSettings = Options.Create(new DataStoreSettings()); var controller = new DynamicController(ds, apiSettings, dsSettings); controller.ControllerContext = new ControllerContext(); controller.ControllerContext.HttpContext = new DefaultHttpContext(); controller.ControllerContext.HttpContext.Request.QueryString = new QueryString(""); var result = controller.GetItems("families", 4, 10) as OkObjectResult; dynamic resultObject = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(result.Value)); Assert.Equal(10, resultObject.results.Count); Assert.Equal(4, resultObject.skip.Value); Assert.Equal(10, resultObject.take.Value); Assert.Equal(20, resultObject.count.Value); UTHelpers.Down(filePath); }
public void GetItems_UseResultObject_offsetlimit() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings { UseResultObject = true }); var controller = new DynamicController(ds, apiSettings); controller.ControllerContext = new ControllerContext(); controller.ControllerContext.HttpContext = new DefaultHttpContext(); controller.ControllerContext.HttpContext.Request.QueryString = new QueryString("?offset=5&limit=12"); var result = controller.GetItems("families") as OkObjectResult; var resultObject = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(result.Value)); Assert.Equal(12, resultObject.results.Count); Assert.Equal(5, resultObject.offset.Value); Assert.Equal(12, resultObject.limit.Value); Assert.Equal(20, resultObject.count.Value); UTHelpers.Down(filePath); }
public async Task PutItem_Upsert() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings { UpsertOnPut = true }); var controller = new DynamicController(ds, apiSettings); var result = await controller.ReplaceItem("my_test", "2", JToken.Parse("{ 'id': 2, 'name': 'Raymond', 'age': 32 }")); Assert.IsType <NoContentResult>(result); var itemResult = controller.GetItem("my_test", "2"); Assert.IsType <OkObjectResult>(itemResult); var okObjectResult = itemResult as OkObjectResult; dynamic item = okObjectResult.Value as ExpandoObject; Assert.Equal("Raymond", item.name); UTHelpers.Down(filePath); }
public void GenerateContextShouldReturnServerLevelActionIfValidServerAction() { var controller = new DynamicController(); try { Manager.Reset(); Manager.Current = new Settings(); var server = "theServer"; var defaultAction = "defaultAction"; AppendReportLevel( ActionHandlerTargets.Server, new Report { ActionName = defaultAction, IsDefault = true }); var context = controller.GenerateContext(server, defaultAction, string.Empty, string.Empty); Assert.That(context.Server, Is.EqualTo(server)); Assert.That(context.Report, Is.EqualTo(defaultAction)); Assert.That(context.Level, Is.EqualTo(ActionHandlerTargets.Server)); } finally { Manager.Reset(); } }
public void GenerateContextShouldReturnBuildLevelActionIfProjectIsNotAnAction() { var controller = new DynamicController(); try { Manager.Reset(); Manager.Current = new Settings(); var defaultAction = "defaultAction"; var server = "theServer"; var project = "theProject"; var build = "aBuild"; AppendReportLevel( ActionHandlerTargets.Build, new Report { ActionName = defaultAction, IsDefault = true }); var context = controller.GenerateContext(server, project, build, string.Empty); Assert.That(context.Server, Is.EqualTo(server)); Assert.That(context.Project, Is.EqualTo(project)); Assert.That(context.Build, Is.EqualTo(build)); Assert.That(context.Report, Is.EqualTo(defaultAction)); Assert.That(context.Level, Is.EqualTo(ActionHandlerTargets.Build)); } finally { Manager.Reset(); } }
public void GetItems_EmptyCollection() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings { UseResultObject = true }); var dsSettings = Options.Create(new DataStoreSettings()); var controller = new DynamicController(ds, apiSettings, dsSettings); controller.ControllerContext = new ControllerContext(); controller.ControllerContext.HttpContext = new DefaultHttpContext(); var result = controller.GetItems("empty_collection") as OkObjectResult; var resultObject = JsonConvert.DeserializeObject <dynamic>(JsonConvert.SerializeObject(result.Value)); Assert.Equal(0, resultObject.results.Count); Assert.Equal(0, resultObject.skip.Value); Assert.Equal(512, resultObject.take.Value); Assert.Equal(0, resultObject.count.Value); UTHelpers.Down(filePath); }
public async Task LocationSuggest() { var query = "e15 1"; var mockApi = new Mock <ISearchAndCompareApi>(); var geocoderApi = new Mock <IGeocoder>(); geocoderApi.Setup(x => x.SuggestLocationsAsync(query)) .ReturnsAsync(new List <string>() { query }); var controller = new DynamicController(mockApi.Object, geocoderApi.Object, TelemetryClientHelper.GetMocked()); var res = await controller.LocationSuggest(query); var jsonResult = res as JsonResult; Assert.IsNotNull(jsonResult); Assert.IsNotNull(jsonResult.Value); var jsonResultValue = jsonResult.Value as List <string>; Assert.IsNotNull(jsonResultValue); CollectionAssert.IsNotEmpty(jsonResultValue); Assert.AreEqual(query, jsonResultValue[0]); Assert.AreEqual(1, jsonResultValue.Count); }
public void GenerateContextShouldReturnDefaultRootActionIfNothingSet() { var controller = new DynamicController(); try { Manager.Reset(); Manager.Current = new Settings(); var defaultAction = "defaultAction"; AppendReportLevel( ActionHandlerTargets.Root, new Report { ActionName = defaultAction, IsDefault = true }); var context = controller.GenerateContext(string.Empty, string.Empty, string.Empty, string.Empty); Assert.That(context.Report, Is.EqualTo(defaultAction)); Assert.That(context.Level, Is.EqualTo(ActionHandlerTargets.Root)); } finally { Manager.Reset(); } }
public void GetNested_ParentsSingle() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings()); var controller = new DynamicController(ds, apiSettings); var result = controller.GetNested("families", 1, "parents/1") as OkObjectResult; Assert.Equal("Kim", ((dynamic)result.Value).name); UTHelpers.Down(filePath); }
public void GetNested_Single_BadRequest() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings()); var controller = new DynamicController(ds, apiSettings); var result = controller.GetNested("configuration", 0, "ip"); Assert.IsType <BadRequestResult>(result); UTHelpers.Down(filePath); }
public void GetNested_ParentsList() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings()); var controller = new DynamicController(ds, apiSettings); var result = controller.GetNested("families", 1, "parents") as OkObjectResult; Assert.Equal(2, ((IEnumerable <dynamic>)result.Value).Count()); UTHelpers.Down(filePath); }
public void GetCollections() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings()); var controller = new DynamicController(ds, apiSettings); var collections = controller.GetKeys(); Assert.Equal(3, collections.Count()); UTHelpers.Down(filePath); }
public void RetrieveHandlerReturnsNullIfNotFound() { try { var expected = InitialiseMockHandler("testAction"); ActionHandlerFactory.Default.ActionHandlers.Add(expected); var controller = new DynamicController(); var actual = controller.RetrieveHandler("garbage"); Assert.That(actual, Is.Null); } finally { ActionHandlerFactory.Reset(); } }
public void GenerateContextReturnsEverythingIfEverythingIsSet() { var controller = new DynamicController(); var server = "serverName"; var project = "projectName"; var build = "buildName"; var report = "reportName"; var context = controller.GenerateContext(server, project, build, report); Assert.That(context.Server, Is.EqualTo(server)); Assert.That(context.Project, Is.EqualTo(project)); Assert.That(context.Build, Is.EqualTo(build)); Assert.That(context.Report, Is.EqualTo(report)); Assert.That(context.Level, Is.EqualTo(ActionHandlerTargets.Build)); }
public async Task AddItem_Single_Conflict() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings()); var controller = new DynamicController(ds, apiSettings); var item = new { value = "hello" }; var result = await controller.AddNewItem("configuration", JToken.FromObject(item)); Assert.IsType <ConflictResult>(result); UTHelpers.Down(filePath); }
public async Task PutItem_NoUpsert() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings { UpsertOnPut = false }); var controller = new DynamicController(ds, apiSettings); var result = await controller.ReplaceItem("my_test", "2", JToken.Parse("{ 'id': 2, 'name': 'Raymond', 'age': 32 }")); Assert.IsType <NotFoundResult>(result); UTHelpers.Down(filePath); }
public void GetItem_Single_BadRequest() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings { UpsertOnPut = true }); var controller = new DynamicController(ds, apiSettings); var itemResult = controller.GetItem("configuration", "0"); Assert.IsType <BadRequestResult>(itemResult); UTHelpers.Down(filePath); }
public void RetrieveHandlerIgnoresCase() { var actionName = "testAction"; try { var expected = InitialiseMockHandler(actionName); ActionHandlerFactory.Default.ActionHandlers.Add(expected); var controller = new DynamicController(); var actual = controller.RetrieveHandler(actionName.ToUpperInvariant()); Assert.That(actual, Is.SameAs(expected)); } finally { ActionHandlerFactory.Reset(); } }
public void GenerateContextFailsIfNoDefaultRootLevelAction() { var controller = new DynamicController(); try { Manager.Reset(); Manager.Current = new Settings(); var context = controller.GenerateContext(string.Empty, string.Empty, string.Empty, string.Empty); Assert.That(context.Report, Is.EqualTo("!!unknownAction!!")); Assert.That(context.Level, Is.EqualTo(ActionHandlerTargets.Root)); } finally { Manager.Reset(); } }
public void RetrieveHandlerIgnoresCase() { var actionName = "testAction"; try { var expected = InitialiseMockHandler(actionName); ActionHandlerFactory.Default.ActionHandlers.Add(expected); var controller = new DynamicController(); var actual = controller.RetrieveHandler(actionName.ToUpperInvariant()); Assert.That(actual, Is.SameAs(expected)); } finally { ActionHandlerFactory.Reset(); } }
public void IndexLogsEvents() { // Initialise the configuration var config = new LoggingConfiguration(); var target = new MemoryTarget { Layout = "${Logger}|${Level}|${Message}" }; config.AddTarget("unitTesting", target); var rule = new LoggingRule("*", LogLevel.Debug, target); config.LoggingRules.Add(rule); // Generate the logger var factory = new LogFactory { Configuration = config }; var logger = factory.GetLogger(typeof(DynamicController).FullName); try { DynamicController.OverrideLogger(logger); var controller = new DynamicController(); // Resolve an action that doesn't exist - we are only interested that logging is actually workig controller.Index("blankServerName", "blankProjectName", "blankBuildName", "nowherenonsenseaction"); var expectedMessages = new[] { MakeMessage("Dynamically resolving request", LogLevel.Debug), MakeMessage("Generating request context", LogLevel.Debug), MakeMessage("Action is a build level report", LogLevel.Debug), MakeMessage("Retrieving action handler for nowherenonsenseaction", LogLevel.Debug), MakeMessage("Unable to find action handler for nowherenonsenseaction", LogLevel.Info), MakeMessage("Generating error message", LogLevel.Debug) }; Assert.That(target.Logs.ToArray(), Is.EqualTo(expectedMessages)); } finally { DynamicController.ResetLogger(); } }
public void GetItems_FriendsWithQueryString() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings()); var controller = new DynamicController(ds, apiSettings); controller.ControllerContext = new ControllerContext(); controller.ControllerContext.HttpContext = new DefaultHttpContext(); controller.ControllerContext.HttpContext.Request.QueryString = new QueryString("?children.friends.name=Castillo"); var result = controller.GetItems("families") as OkObjectResult; Assert.Equal(2, ((IEnumerable <dynamic>)result.Value).Count()); UTHelpers.Down(filePath); }
public void GetItems_FavouriteMoveiWithQueryString() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings()); var controller = new DynamicController(ds, apiSettings); controller.ControllerContext = new ControllerContext(); controller.ControllerContext.HttpContext = new DefaultHttpContext(); controller.ControllerContext.HttpContext.Request.QueryString = new QueryString("?parents.favouriteMovie=Predator"); // NOTE: Can't but skip and take to querystring with tests var result = controller.GetItems("families", 0, 100) as OkObjectResult; Assert.Equal(11, ((IEnumerable <dynamic>)result.Value).Count()); UTHelpers.Down(filePath); }
public void IndexLogsEvents() { // Initialise the configuration var config = new LoggingConfiguration(); var target = new MemoryTarget { Layout = "${Logger}|${Level}|${Message}" }; config.AddTarget("unitTesting", target); var rule = new LoggingRule("*", LogLevel.Debug, target); config.LoggingRules.Add(rule); // Generate the logger var factory = new LogFactory { Configuration = config }; var logger = factory.GetLogger(typeof(DynamicController).FullName); try { DynamicController.OverrideLogger(logger); var controller = new DynamicController(); // Resolve an action that doesn't exist - we are only interested that logging is actually workig controller.Index("blankServerName", "blankProjectName", "blankBuildName", "nowherenonsenseaction"); var expectedMessages = new[] { MakeMessage("Dynamically resolving request", LogLevel.Debug), MakeMessage("Generating request context", LogLevel.Debug), MakeMessage("Action is a build level report", LogLevel.Debug), MakeMessage("Retrieving action handler for nowherenonsenseaction", LogLevel.Debug), MakeMessage("Unable to find action handler for nowherenonsenseaction", LogLevel.Info), MakeMessage("Generating error message", LogLevel.Debug) }; Assert.That(target.Logs.ToArray(), Is.EqualTo(expectedMessages)); } finally { DynamicController.ResetLogger(); } }
protected void Application_Error(object sender, EventArgs e) { var error = Server.GetLastError(); var code = (error is HttpException) ? (error as HttpException).GetHttpCode() : 500; if (code == 404) { var routeValues = HttpContext.Current.Request.RequestContext.RouteData.Values; string controllerName = null; string actionName = null; string id = null; if (routeValues != null) { if (routeValues.ContainsKey("action")) { actionName = routeValues["action"].ToString(); } if (routeValues.ContainsKey("controller")) { controllerName = routeValues["controller"].ToString(); } if (routeValues.ContainsKey("id")) { id = routeValues["id"].ToString(); } } var routeData = new RouteData(); routeData.Values.Add("controller", "Dynamic"); routeData.Values.Add("action", actionName); routeData.Values.Add("entity", controllerName); routeData.Values.Add("entityId", id); IController errorController = new DynamicController(); errorController.Execute(new RequestContext(new HttpContextWrapper(System.Web.HttpContext.Current), routeData)); Response.End(); } }
public void GetItems_Single() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings { UpsertOnPut = true }); var controller = new DynamicController(ds, apiSettings); var itemResult = controller.GetItems("configuration"); Assert.IsType <OkObjectResult>(itemResult); var okObjectResult = itemResult as OkObjectResult; dynamic item = okObjectResult.Value as ExpandoObject; Assert.Equal("abba", item.password); UTHelpers.Down(filePath); }
public async Task PutItem_Upsert_Id_String() { var filePath = UTHelpers.Up(); var ds = new DataStore(filePath); var apiSettings = Options.Create(new ApiSettings { UpsertOnPut = true }); var controller = new DynamicController(ds, apiSettings); var result = await controller.ReplaceItem("my_test_string", "acdc", JToken.Parse("{ 'id': 2, 'text': 'Hello' }")) as NoContentResult; Assert.Equal(204, result.StatusCode); var itemResult = controller.GetItem("my_test_string", "acdc") as OkObjectResult; dynamic item = itemResult.Value as ExpandoObject; Assert.Equal("acdc", item.id); Assert.Equal("Hello", item.text); UTHelpers.Down(filePath); }
public virtual void ConnectComponents(IDomain domain, IDynamic currentDynamic, IReadOnlyCollection <IComponent> components) { double WidthValue; if (Width != null && !ParserDomain.TryParseDouble(Width, out WidthValue)) { throw new ParsingException(193, Source, "Invalid width."); } double HeightValue; if (Height != null && !ParserDomain.TryParseDouble(Height, out HeightValue)) { throw new ParsingException(194, Source, "Invalid height."); } double SingleMargin; if (Margin != null && !ParserDomain.TryParseDouble(Margin, out SingleMargin)) { string[] ThicknessMargin = Margin.Split(','); int i; for (i = 0; i < 4 && i < ThicknessMargin.Length; i++) { if (!ParserDomain.TryParseDouble(ThicknessMargin[i], out SingleMargin)) { break; } } if (i < 4) { throw new ParsingException(195, Source, "Invalid margin."); } } if (HorizontalAlignment != null && HorizontalAlignment != Windows.UI.Xaml.HorizontalAlignment.Left.ToString() && HorizontalAlignment != Windows.UI.Xaml.HorizontalAlignment.Center.ToString() && HorizontalAlignment != Windows.UI.Xaml.HorizontalAlignment.Right.ToString() && HorizontalAlignment != Windows.UI.Xaml.HorizontalAlignment.Stretch.ToString()) { throw new ParsingException(196, Source, "Invalid horizontal alignment."); } if (VerticalAlignment != null && VerticalAlignment != Windows.UI.Xaml.VerticalAlignment.Top.ToString() && VerticalAlignment != Windows.UI.Xaml.VerticalAlignment.Center.ToString() && VerticalAlignment != Windows.UI.Xaml.VerticalAlignment.Bottom.ToString() && VerticalAlignment != Windows.UI.Xaml.VerticalAlignment.Stretch.ToString()) { throw new ParsingException(197, Source, "Invalid vertical alignment."); } if (DynamicEnable != null && DynamicController == null) { foreach (IDynamicProperty Item in currentDynamic.Properties) { if (DynamicEnable == Item.Source.Name) { DynamicController = Item; break; } } if (DynamicController == null) { throw new ParsingException(198, Source, $"Dynamic property '{DynamicEnable}' not found in '{currentDynamic.Name}'."); } else if (DynamicController.Result != DynamicOperationResults.Boolean) { throw new ParsingException(199, Source, $"Dynamic property '{DynamicEnable}' is not boolean."); } DynamicController.SetIsUsed(); } }
public void GenerateContextReturnsEverythingIfEverythingIsSet() { var controller = new DynamicController(); var server = "serverName"; var project = "projectName"; var build = "buildName"; var report = "reportName"; var context = controller.GenerateContext(server, project, build, report); Assert.That(context.Server, Is.EqualTo(server)); Assert.That(context.Project, Is.EqualTo(project)); Assert.That(context.Build, Is.EqualTo(build)); Assert.That(context.Report, Is.EqualTo(report)); Assert.That(context.Level, Is.EqualTo(ActionHandlerTargets.Build)); }
public void GenerateContextShouldReturnDefaultRootActionIfNothingSet() { var controller = new DynamicController(); try { Manager.Reset(); Manager.Current = new Settings(); var defaultAction = "defaultAction"; AppendReportLevel( ActionHandlerTargets.Root, new Report { ActionName = defaultAction, IsDefault = true }); var context = controller.GenerateContext(string.Empty, string.Empty, string.Empty, string.Empty); Assert.That(context.Report, Is.EqualTo(defaultAction)); Assert.That(context.Level, Is.EqualTo(ActionHandlerTargets.Root)); } finally { Manager.Reset(); } }
public void GenerateContextFailsIfNoDefaultRootLevelAction() { var controller = new DynamicController(); try { Manager.Reset(); Manager.Current = new Settings(); var context = controller.GenerateContext(string.Empty, string.Empty, string.Empty, string.Empty); Assert.That(context.Report, Is.EqualTo("!!unknownAction!!")); Assert.That(context.Level, Is.EqualTo(ActionHandlerTargets.Root)); } finally { Manager.Reset(); } }
public void GenerateContextShouldReturnServerLevelActionIfValidServerAction() { var controller = new DynamicController(); try { Manager.Reset(); Manager.Current = new Settings(); var server = "theServer"; var defaultAction = "defaultAction"; AppendReportLevel( ActionHandlerTargets.Server, new Report { ActionName = defaultAction, IsDefault = true }); var context = controller.GenerateContext(server, defaultAction, string.Empty, string.Empty); Assert.That(context.Server, Is.EqualTo(server)); Assert.That(context.Report, Is.EqualTo(defaultAction)); Assert.That(context.Level, Is.EqualTo(ActionHandlerTargets.Server)); } finally { Manager.Reset(); } }
public void GenerateContextShouldReturnBuildLevelActionIfProjectIsNotAnAction() { var controller = new DynamicController(); try { Manager.Reset(); Manager.Current = new Settings(); var defaultAction = "defaultAction"; var server = "theServer"; var project = "theProject"; var build = "aBuild"; AppendReportLevel( ActionHandlerTargets.Build, new Report { ActionName = defaultAction, IsDefault = true }); var context = controller.GenerateContext(server, project, build, string.Empty); Assert.That(context.Server, Is.EqualTo(server)); Assert.That(context.Project, Is.EqualTo(project)); Assert.That(context.Build, Is.EqualTo(build)); Assert.That(context.Report, Is.EqualTo(defaultAction)); Assert.That(context.Level, Is.EqualTo(ActionHandlerTargets.Build)); } finally { Manager.Reset(); } }
public void RetrieveHandlerReturnsNullIfNotFound() { try { var expected = InitialiseMockHandler("testAction"); ActionHandlerFactory.Default.ActionHandlers.Add(expected); var controller = new DynamicController(); var actual = controller.RetrieveHandler("garbage"); Assert.That(actual, Is.Null); } finally { ActionHandlerFactory.Reset(); } }