private static ISchemaSink GetFileSchemaSink(Options options) { var sink = new FileSystemSchemaSink() .WithBaseLocation(options.FileBaseLocation); return(sink); }
public static async Task <HttpResponseMessage> Run( [HttpTrigger(AuthorizationLevel.Function, "post", Route = "servicebus/publish")] HttpRequestMessage req, [ServiceBus("%ServiceBusTopic%", Connection = "AzureServiceBusConnectionString", EntityType = EntityType.Topic)] IAsyncCollector <string> collector, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); var settings = new JsonSerializerSettings() { Formatting = Formatting.Indented, ContractResolver = new DefaultContractResolver() { NamingStrategy = new CamelCaseNamingStrategy() }, NullValueHandling = NullValueHandling.Ignore, MissingMemberHandling = MissingMemberHandling.Ignore, }; var location = Utility.GetBasePath(); var path = "default.json"; var sink = new FileSystemSchemaSink().WithBaseLocation(location); var consumer = new SchemaConsumer().WithSink(sink); var validator = new SchemaValidator().WithSchemaConsumer(consumer); var sample = new SampleClass(); var payload = await JsonConvert.SerializeObject(sample, settings) .ValidateAsStringAsync(validator, path).ConfigureAwait(false); await collector.AddAsync(payload).ConfigureAwait(false); return(req.CreateResponse(HttpStatusCode.Created)); }
public async Task Given_Location_And_Path_And_Schema_When_SetSchemaAsync_Invoked_Then_It_Should_Return_Result(string location, string path, string schema) { var instance = new FileSystemSchemaSink(location); var result = await instance.SetSchemaAsync(schema, path).ConfigureAwait(false); result.Should().BeTrue(); }
public void Given_Null_Path_When_GetSchemaAsync_Invoked_Then_It_Should_Throw_Exception(string location) { var instance = new FileSystemSchemaSink(location); Func <Task> func = async() => await instance.GetSchemaAsync(null).ConfigureAwait(false); func.Should().Throw <ArgumentNullException>(); }
public void Given_Default_When_Instantiated_Then_It_Should_Return_Value() { var instance = new FileSystemSchemaSink(); instance.BaseLocation.Should().BeEmpty(); instance.Directory.Should().NotBeNull(); instance.File.Should().NotBeNull(); instance.Encoding.Should().Be(Encoding.UTF8); }
public async Task Given_Location_When_GetSchemaAsync_Invoked_Then_It_Should_Return_Result() { var location = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); var path = "default.json"; var instance = new FileSystemSchemaSink(location); var result = await instance.GetSchemaAsync(path).ConfigureAwait(false); result.Should().NotBeNull(); }
public void Given_Encoding_And_Location_When_Instantiated_Then_It_Should_Return_Value(string location) { var encoding = Encoding.ASCII; var instance = new FileSystemSchemaSink(location) { Encoding = encoding }; instance.BaseLocation.Should().Be(location); instance.Directory.Should().NotBeNull(); instance.File.Should().NotBeNull(); instance.Encoding.Should().Be(encoding); }
public void Given_DirectoryWrapper_When_Instantiated_Then_It_Should_Return_Value() { var wrapper = new FakeDirectoryWrapper(); var instance = new FileSystemSchemaSink() { Directory = wrapper }; instance.BaseLocation.Should().BeEmpty(); instance.Directory.Should().Be(wrapper); instance.File.Should().NotBeNull(); instance.Encoding.Should().Be(Encoding.UTF8); }
public void Given_Invalid_Path_When_GetSchemaAsync_Invoked_Then_It_Should_Throw_Exception(string location, string path) { var file = new Mock <IFileWrapper>(); file.Setup(p => p.Exists(It.IsAny <string>())).Returns(false); var instance = new FileSystemSchemaSink(location) { File = file.Object }; Func <Task> func = async() => await instance.GetSchemaAsync(path).ConfigureAwait(false); func.Should().Throw <FileNotFoundException>(); }
public static async Task Run( [ServiceBusTrigger("%ServiceBusTopic%", "%ServiceBusTopicSubscription%", AccessRights.Manage, Connection = "AzureServiceBusConnectionString")] string message, ILogger log) { log.LogInformation($"C# ServiceBus topic trigger function processed message: {message}"); var location = Utility.GetBasePath(); var path = "default.json"; var sink = new FileSystemSchemaSink().WithBaseLocation(location); var consumer = new SchemaConsumer().WithSink(sink); var validator = new SchemaValidator().WithSchemaConsumer(consumer); var validated = await message.ValidateAsync(validator, path).ConfigureAwait(false); log.LogInformation($"Message validated against schema."); }