/// <summary> /// Returns the ConfigurationDefinition for the Model Manager. /// </summary> /// <returns>The ConfigurationDefinition for the Model Manager.</returns> public static IConfigurationDefinition GetConfigurationDefinition() { ConfigurationDefinition retVal = new ConfigurationDefinition(); retVal.Form = "[\"name\",\"email\",{\"key\":\"comment\",\"type\":\"textarea\",\"placeholder\":\"Make a comment\"},{\"type\":\"submit\",\"style\":\"btn-info\",\"title\":\"OK\"}]"; retVal.Schema = "{\"type\":\"object\",\"title\":\"Comment\",\"properties\":{\"name\":{\"title\":\"Name\",\"type\":\"string\"},\"email\":{\"title\":\"Email\",\"type\":\"string\",\"pattern\":\"^\\\\S+@\\\\S+$\",\"description\":\"Email will be used for evil.\"},\"comment\":{\"title\":\"Comment\",\"type\":\"string\",\"maxLength\":20,\"validationMessage\":\"Don\'t be greedy!\"}},\"required\":[\"name\",\"email\",\"comment\"]}"; retVal.Model = typeof(SecurityManagerConfiguration); SecurityManagerConfiguration config = new SecurityManagerConfiguration(); config.SessionLength = SecurityConstants.DefaultSessionLength; config.SlidingSessions = SecurityConstants.DefaultSlidingSessions; config.SessionPurgeInterval = SecurityConstants.DefaultSessionPurgeInterval; config.Users.Add(new User( SecurityConstants.DefaultUserName, SecurityConstants.DefaultUserDisplayName, SecurityConstants.DefaultUserEmail, SecurityConstants.DefaultUserPasswordHash, Role.Administrator)); retVal.DefaultConfiguration = config; return(retVal); }
public void IsValidInvalidDefault() { ConfigurationDefinition config = new ConfigurationDefinition("form", "{ \"schema\": \"\" }", typeof(int), "test"); IResult <bool> result = config.IsValid(); Assert.False(result.ReturnValue); Assert.True(result.GetLastError().Contains("Default")); }
public void IsValidInvalidSchema() { ConfigurationDefinition config = new ConfigurationDefinition("{ \"form\": \"\" }", "schema", typeof(int), 1); IResult <bool> result = config.IsValid(); Assert.False(result.ReturnValue); Assert.True(result.GetLastError().Contains("Schema")); }
public void IsValidInvalidModel() { ConfigurationDefinition config = new ConfigurationDefinition("form", "{ \"schema\": \"\" }", null, null); IResult <bool> result = config.IsValid(); Assert.False(result.ReturnValue); Assert.True(result.GetLastError().Contains("Model")); }
public void Constructor() { ConfigurationDefinition config = new ConfigurationDefinition(); Assert.IsType <ConfigurationDefinition>(config); config = new ConfigurationDefinition("form", "schema", typeof(int), 1); Assert.IsType <ConfigurationDefinition>(config); }
public void Properties() { ConfigurationDefinition config = new ConfigurationDefinition("form", "schema", typeof(int), 1); Assert.IsType <ConfigurationDefinition>(config); Assert.Equal("form", config.Form); Assert.Equal("schema", config.Schema); Assert.Equal(typeof(int), config.Model); Assert.Equal(1, config.DefaultConfiguration); }
public string Write(ref ConfigurationDefinition configurationDefinition) { var settings = new JsonSerializerOptions { DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, IgnoreReadOnlyFields = true }; var json = JsonSerializer.Serialize(configurationDefinition, settings); return(json); }
public string Write(ref ConfigurationDefinition configurationDefinition) { var serializer = new Serializer(new SerializerSettings { IgnoreNulls = true, DefaultStyle = SharpYaml.YamlStyle.Block, EmitAlias = false, }); var yaml = serializer.Serialize(configurationDefinition); return(yaml); }
public static RequestDefinitionItemSet?ToDefinitionSet(ref ConfigurationDefinition configurationDefinition) { if (!ConfigurationDefinitionExtensions.HasData(ref configurationDefinition)) { return(null); } var items = configurationDefinition.Map !.Select(ToRequestDefinition); return(new RequestDefinitionItemSet( configurationDefinition.Info, items.ToArray() )); }
/// <summary> /// The GetConfigurationDefinition method is static and returns the ConfigurationDefinition for the Endpoint. /// /// This method is necessary so that the configuration defintion can be registered with the ConfigurationManager prior /// to any instances being created. This method MUST be implemented, however it is not possible to specify static /// methods in an interface, so implementing IConfigurable will not enforce this. /// </summary> /// <returns>The ConfigurationDefinition for the Endpoint.</returns> public static ConfigurationDefinition GetConfigurationDefinition() { ConfigurationDefinition retVal = new ConfigurationDefinition(); // to create the form and schema strings, visit http://schemaform.io/examples/bootstrap-example.html use the example to // create the desired form and schema, and ensure that the resulting model matches the model for the endpoint. When you // are happy with the json from the above url, visit http://www.freeformatter.com/json-formatter.html#ad-output and // paste in the generated json and format it using the "JavaScript escaped" option. Paste the result into the methods below. retVal.Form = "[\"templateURL\",{\"type\":\"submit\",\"style\":\"btn-info\",\"title\":\"Save\"}]"; retVal.Schema = "{\"type\":\"object\",\"title\":\"XMLEndpoint\",\"properties\":{\"templateURL\":{\"title\":\"Template URL\",\"type\":\"string\"}},\"required\":[\"templateURL\"]}"; // this will always be typeof(YourConfiguration/ModelObject) retVal.Model = typeof(ExampleConnectorConfiguration); return(retVal); }
/// <summary> /// Returns the ConfigurationDefinition for the Event Manager. /// </summary> /// <returns>The ConfigurationDefinition for the Event Manager.</returns> public static ConfigurationDefinition GetConfigurationDefinition() { ConfigurationDefinition retVal = new ConfigurationDefinition(); retVal.Form = "[\"name\",\"email\",{\"key\":\"comment\",\"type\":\"textarea\",\"placeholder\":\"Make a comment\"},{\"type\":\"submit\",\"style\":\"btn-info\",\"title\":\"OK\"}]"; retVal.Schema = "{\"type\":\"object\",\"title\":\"Comment\",\"properties\":{\"name\":{\"title\":\"Name\",\"type\":\"string\"},\"email\":{\"title\":\"Email\",\"type\":\"string\",\"pattern\":\"^\\\\S+@\\\\S+$\",\"description\":\"Email will be used for evil.\"},\"comment\":{\"title\":\"Comment\",\"type\":\"string\",\"maxLength\":20,\"validationMessage\":\"Don\'t be greedy!\"}},\"required\":[\"name\",\"email\",\"comment\"]}"; retVal.Model = typeof(EventManagerConfiguration); EventManagerConfiguration config = new EventManagerConfiguration(); config.Events.Add("Hello World!"); retVal.DefaultConfiguration = config; return(retVal); }
public void Serialize() { var config = new ConfigurationDefinition(); config.Info = "Test data"; config.Map = new List <RequestConfigurationDefinition> { new RequestConfigurationDefinition { Url = "/probe", Status = 200, Delay = 100, Description = "Probe endpoint" }, new RequestConfigurationDefinition { Url = "/swagger", Status = 200, Delay = 200, Description = "Swagger endpoint" }, new RequestConfigurationDefinition { Url = "/order", Status = 201, Delay = 300, Description = "Order endpoint", Payload = "{\"paymentId\":\"@guid\"}", Headers = new Dictionary <string, string> { { "Location", "/probe?a=b" }, { "Authorization", "Bearer aaa" } } } }; var serializer = new SharpYaml.Serialization.Serializer(new SharpYaml.Serialization.SerializerSettings { EmitAlias = false, EmitShortTypeName = false, DefaultStyle = SharpYaml.YamlStyle.Block, }); var result = serializer.Serialize(config); result.Should().NotBeNull(); }
/// <summary> /// Registers the supplied Type with the Configuration Manager. /// </summary> /// <remarks>When called during application startup, throwExceptionOnFailure should be set to true.</remarks> /// <param name="type">The Type to register.</param> /// <param name="throwExceptionOnFailure">If true, throws an exception on failure.</param> /// <returns>A Result containing the result of the operation.</returns> /// <exception cref="ConfigurationRegistrationException">Thrown when the specified Type is fails to be registered.</exception> public IResult RegisterType(Type type, bool throwExceptionOnFailure = false) { logger.EnterMethod(xLogger.Params(type, throwExceptionOnFailure)); Result retVal = new Result(); Result <bool> checkResult = IsConfigurable(type); // ensure the provided Type is configurable. if (!checkResult.ReturnValue) { retVal.AddError("The Type '" + type.Name + "' could not be registered: " + checkResult.GetLastError()); } else { // the type is configurable; try to get the configuration definition try { ConfigurationDefinition typedef = (ConfigurationDefinition)type.GetMethod("GetConfigurationDefinition").Invoke(null, null); if (typedef == default(ConfigurationDefinition)) { retVal.AddError("The ConfigurationDefinition retrieved from the supplied type is invalid."); } else { retVal = RegisterType(type, typedef); } } catch (Exception ex) { retVal.AddError("Exception thrown while registering the type: " + ex); } } if (throwExceptionOnFailure && retVal.ResultCode == ResultCode.Failure) { throw new ConfigurationRegistrationException("Failed to register the type '" + type.Name + "' for configuration."); } logger.ExitMethod(retVal); return(retVal); }
/// <summary> /// Registers the supplied Type with the Configuration Manager using the supplied ConfigurationDefinition. /// </summary> /// <param name="type">The Type to register.</param> /// <param name="definition">The ConfigurationDefinition with which to register the Type.</param> /// <returns>A Result containing the result of the operation.</returns> private Result RegisterType(Type type, ConfigurationDefinition definition) { logger.EnterMethod(xLogger.Params(type, definition)); logger.Debug("Registering type '" + type.Name + "'..."); Result retVal = new Result(); // check to ensure that the type hasn't already been registered if (!RegisteredTypes.ContainsKey(type)) { RegisteredTypes.Add(type, definition); logger.Debug("Registered type '" + type.Name + "' for configuration."); } else { retVal.AddWarning("The Type '" + type.Name + "' has already been registered. Ignoring."); } retVal.LogResult(logger.Debug); logger.ExitMethod(retVal); return(retVal); }
/// <summary> /// Returns the ConfigurationDefinition for the Type. /// </summary> /// <returns>The ConfigurationDefinition for the Type.</returns> public static IConfigurationDefinition GetConfigurationDefinition() { ConfigurationDefinition retVal = new ConfigurationDefinition(); retVal.Form = "[\"name\",\"email\",{\"key\":\"comment\",\"type\":\"textarea\",\"placeholder\":\"Make a comment\"},{\"type\":\"submit\",\"style\":\"btn-info\",\"title\":\"OK\"}]"; retVal.Schema = "{\"type\":\"object\",\"title\":\"Comment\",\"properties\":{\"name\":{\"title\":\"Name\",\"type\":\"string\"},\"email\":{\"title\":\"Email\",\"type\":\"string\",\"pattern\":\"^\\\\S+@\\\\S+$\",\"description\":\"Email will be used for evil.\"},\"comment\":{\"title\":\"Comment\",\"type\":\"string\",\"maxLength\":20,\"validationMessage\":\"Don\'t be greedy!\"}},\"required\":[\"name\",\"email\",\"comment\"]}"; retVal.Model = typeof(PluginManagerConfiguration); // create the default configuration PluginManagerConfiguration config = new PluginManagerConfiguration(); config.Instances = new List <PluginManagerConfigurationPluginInstance>(); PluginManagerConfigurationPluginInstance sim = new PluginManagerConfigurationPluginInstance(); sim.InstanceName = "Simulation"; sim.AssemblyName = "OpenIIoT.Plugin.Connector.Simulation"; config.Instances.Add(sim); retVal.DefaultConfiguration = config; return(retVal); }
public void IsValid() { ConfigurationDefinition config = new ConfigurationDefinition("{ \"form\": \"\" }", "{ \"schema\": \"\" }", typeof(int), 1); Assert.True(config.IsValid().ReturnValue); }