private static ISchemaSink GetFileSchemaSink(Options options)
        {
            var sink = new FileSystemSchemaSink()
                       .WithBaseLocation(options.FileBaseLocation);

            return(sink);
        }
Example #2
0
        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>();
        }
Example #10
0
        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.");
        }