Пример #1
0
        public void ConfigureColumnOptionsSetsPrimaryKeyWhenSettingPrimaryKeyColumnNameToAdditionalColumn()
        {
            // Arrange
            const string customColumnName = "TestCustomColumn";
            var          customColumn     = new SqlColumn {
                ColumnName = customColumnName
            };
            var columnOptions = new Serilog.Sinks.MSSqlServer.ColumnOptions
            {
                PrimaryKey        = null,
                AdditionalColumns = new List <SqlColumn> {
                    customColumn
                }
            };

            SetupConfigurationSectionMocks();
            _configurationSectionMock.Setup(s => s["primaryKeyColumnName"]).Returns(customColumnName);
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(columnOptions, _configurationSectionMock.Object);

            // Assert
            Assert.Equal(customColumn, result.PrimaryKey);
        }
Пример #2
0
        public void ConfigureColumnOptionsThrowsWhenSettingPrimaryKeyColumnNameAndClusteredColumnstoreIndex()
        {
            // Arrange
            SetupConfigurationSectionMocks();
            _configurationSectionMock.Setup(s => s["primaryKeyColumnName"]).Returns("TestPrimaryKeyColumnName");
            _configurationSectionMock.Setup(s => s["clusteredColumnstoreIndex"]).Returns("true");
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act + assert
            Assert.Throws <ArgumentException>(() => sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object));
        }
Пример #3
0
        public void ConfigureColumnOptionsAddsClusteredColumnstoreIndexOption()
        {
            // Arrange
            SetupConfigurationSectionMocks();
            _configurationSectionMock.Setup(s => s["clusteredColumnstoreIndex"]).Returns("true");
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.True(result.ClusteredColumnstoreIndex);
        }
Пример #4
0
        public void ConfigureColumnOptionsSetsPrimaryKeyWhenSettingPrimaryKeyColumnNameToStandardColumnName()
        {
            // Arrange
            SetupConfigurationSectionMocks();
            _configurationSectionMock.Setup(s => s["primaryKeyColumnName"]).Returns("Message");
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.Equal(result.Message, result.PrimaryKey);
        }
Пример #5
0
        public void ConfigureColumnOptionsAddsColumnIdAlwaysWithAllowNullsFalse()
        {
            // Arrange
            SetupConfigurationSectionMocks();
            SetupColumnSectionMock("id", allowNull: true);
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.False(result.Id.AllowNull);
        }
Пример #6
0
        public void ConfigureColumnOptionsAddsDisableTriggersOption()
        {
            // Arrange
            SetupConfigurationSectionMocks();
            _configurationSectionMock.Setup(s => s["disableTriggers"]).Returns("true");
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.True(result.DisableTriggers);
        }
Пример #7
0
        public void ConfigureColumnOptionsThrowsWhenSettingPrimaryKeyColumnNameToUndefinedColumnNameAndPrimaryKeyRemainsNull()
        {
            // Arrange
            var columnOptions = new Serilog.Sinks.MSSqlServer.ColumnOptions {
                PrimaryKey = null
            };

            SetupConfigurationSectionMocks();
            _configurationSectionMock.Setup(s => s["primaryKeyColumnName"]).Returns("TestUndefinedPrimaryKeyColumnName");
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act + assert
            Assert.Throws <ArgumentException>(() => sut.ConfigureColumnOptions(columnOptions, _configurationSectionMock.Object));
        }
Пример #8
0
        public void ConfigureColumnOptionsAddsColumnLevelStoreAsEnumOption()
        {
            // Arrange
            SetupConfigurationSectionMocks();
            var columnSectionMock = SetupColumnSectionMock("level");

            columnSectionMock.Setup(s => s["storeAsEnum"]).Returns("true");
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.True(result.Level.StoreAsEnum);
        }
        public void ConfigureColumnOptionsAddsColumnLogEventExcludeAdditionalPropertiesOption()
        {
            // Arrange
            SetupConfigurationSectionMocks();
            var columnSectionMock = SetupColumnSectionMock("logEvent");

            columnSectionMock.Setup(s => s["excludeAdditionalProperties"]).Returns("true");
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.True(result.LogEvent.ExcludeAdditionalProperties);
        }
Пример #10
0
        public void ConfigureColumnOptionsAddsColumnPropertiesUsePropertyKeyAsElementNameOption()
        {
            // Arrange
            SetupConfigurationSectionMocks();
            var columnSectionMock = SetupColumnSectionMock("properties");

            columnSectionMock.Setup(s => s["usePropertyKeyAsElementName"]).Returns("true");
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.True(result.Properties.UsePropertyKeyAsElementName);
        }
        public void ConfigureColumnOptionsAddsColumnPropertiesOmitElementIfEmptyOption()
        {
            // Arrange
            SetupConfigurationSectionMocks();
            var columnSectionMock = SetupColumnSectionMock("properties");

            columnSectionMock.Setup(s => s["omitElementIfEmpty"]).Returns("true");
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.True(result.Properties.OmitElementIfEmpty);
        }
Пример #12
0
        public void ConfigureColumnOptionsAddsColumnLogEventExcludeStandardColumnsOption()
        {
            // Arrange
            SetupConfigurationSectionMocks();
            var columnSectionMock = SetupColumnSectionMock("logEvent");

            columnSectionMock.Setup(s => s["excludeStandardColumns"]).Returns("true");
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.True(result.LogEvent.ExcludeStandardColumns);
        }
Пример #13
0
        public void ConfigureColumnOptionsAddsColumnTimeStampConvertToUtcOption()
        {
            // Arrange
            SetupConfigurationSectionMocks();
            var columnSectionMock = SetupColumnSectionMock("timeStamp");

            columnSectionMock.Setup(s => s["convertToUtc"]).Returns("true");
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.True(result.TimeStamp.ConvertToUtc);
        }
Пример #14
0
        public void ConfigureColumnOptionsCalledWithConfigSectionNullReturnsUnchangedColumnOptions()
        {
            // Arrange
            var columnOptions = new Serilog.Sinks.MSSqlServer.ColumnOptions();

            columnOptions.Store.Clear();
            columnOptions.Store.Add(StandardColumn.LogEvent);
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(columnOptions, null);

            // Assert
            Assert.True(result.Store.Count == 1);
            Assert.True(result.Store.Contains(StandardColumn.LogEvent));
        }
Пример #15
0
        public void ConfigureColumnOptionsAddsColumnPropertiesExcludeAdditionalPropertiesOption()
        {
            // Arrange
            SetupConfigurationSectionMocks();
            var columnSectionMock = SetupColumnSectionMock("properties");

            columnSectionMock.Setup(s => s["excludeAdditionalProperties"]).Returns("true");
            var columnOptions = new Serilog.Sinks.MSSqlServer.ColumnOptions();
            var sut           = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.True(result.Properties.ExcludeAdditionalProperties);
        }
        public void ConfigureColumnOptionsCalledWithEmptyConfigSectionReturnsUnchangedColumnOptions()
        {
            // Arrange
            var columnOptions = new ColumnOptions();

            columnOptions.Store.Clear();
            columnOptions.Store.Add(StandardColumn.LogEvent);
            var configurationSectionMock = new Mock <IConfigurationSection>();
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(columnOptions, configurationSectionMock.Object);

            // Assert
            Assert.True(result.Store.Count == 1);
            Assert.True(result.Store.Contains(StandardColumn.LogEvent));
        }
Пример #17
0
        public void ConfigureColumnOptionsAddsColumnIdBigIntOption()
        {
            // Arrange
            SetupConfigurationSectionMocks();
            var columnSectionMock = SetupColumnSectionMock("id");

            columnSectionMock.Setup(s => s["bigInt"]).Returns("true");
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object);

            // Assert
#pragma warning disable 618 // deprecated: BigInt property
            Assert.True(result.Id.BigInt);
#pragma warning restore 618 // deprecated: BigInt property
        }
Пример #18
0
        public void ConfigureColumnOptionsAddsColumnPropertiesStructureElementNameOption()
        {
            // Arrange
            const string structureElementName = "TestStructureElementName";

            SetupConfigurationSectionMocks();
            var columnSectionMock = SetupColumnSectionMock("properties");

            columnSectionMock.Setup(s => s["structureElementName"]).Returns(structureElementName);
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.Equal(structureElementName, result.Properties.StructureElementName);
        }
        public void ConfigureColumnOptionsAddsColumnPropertiesRootElementNameOption()
        {
            // Arrange
            const string rootElementName = "TestRootElementName";

            SetupConfigurationSectionMocks();
            var columnSectionMock = SetupColumnSectionMock("properties");

            columnSectionMock.Setup(s => s["rootElementName"]).Returns(rootElementName);
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.Equal(rootElementName, result.Properties.RootElementName);
        }
        public void ConfigureColumnOptionsAddsColumnExceptionWithSpecifiedOptions()
        {
            // Arrange
            const string columnName        = "TestColumnName";
            var          dataType          = SqlDbType.Bit;
            var          allowNull         = true;
            var          nonClusteredIndex = true;

            SetupConfigurationSectionMocks();
            SetupColumnSectionMock("exception", columnName, dataType, allowNull, nonClusteredIndex);
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            AssertColumnSqlOptions(columnName, dataType, allowNull, nonClusteredIndex, result.Exception);
        }
Пример #21
0
        public void ConfigureColumnOptionsAddsColumnMessageTemplateWithSpecifiedOptions()
        {
            // Arrange
            const string columnName        = "TestColumnName";
            var          dataType          = SqlDbType.Bit;
            var          allowNull         = true;
            var          nonClusteredIndex = true;

            SetupConfigurationSectionMocks();
            SetupColumnSectionMock("messageTemplate", columnName, dataType, allowNull, nonClusteredIndex);
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            AssertColumnSqlOptions(columnName, dataType, allowNull, nonClusteredIndex, result.MessageTemplate);
        }
Пример #22
0
        public void ConfigureColumnOptionsRemovesStandardColumns()
        {
            // Arrange
            SetupConfigurationSectionMocks();

            var messageColumnSectionMock   = new Mock <IConfigurationSection>();
            var timeStampColumnSectionMock = new Mock <IConfigurationSection>();
            var columnSectionsList         = new List <IConfigurationSection> {
                messageColumnSectionMock.Object, timeStampColumnSectionMock.Object
            };

            messageColumnSectionMock.Setup(s => s.Value).Returns(StandardColumn.Message.ToString());
            timeStampColumnSectionMock.Setup(s => s.Value).Returns(StandardColumn.TimeStamp.ToString);
            _removeStandardColumnsSectionMock.Setup(s => s.GetChildren()).Returns(columnSectionsList);
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.False(result.Store.Contains(StandardColumn.Message));
            Assert.False(result.Store.Contains(StandardColumn.TimeStamp));
        }
Пример #23
0
        public void ConfigureColumnOptionsAddsStandardColumns()
        {
            // Arrange
            SetupConfigurationSectionMocks();

            var logEventColumnSectionMock        = new Mock <IConfigurationSection>();
            var messageTemplateColumnSectionMock = new Mock <IConfigurationSection>();
            var columnSectionsList = new List <IConfigurationSection> {
                logEventColumnSectionMock.Object, messageTemplateColumnSectionMock.Object
            };

            logEventColumnSectionMock.Setup(s => s.Value).Returns(StandardColumn.LogEvent.ToString());
            messageTemplateColumnSectionMock.Setup(s => s.Value).Returns(StandardColumn.MessageTemplate.ToString);
            _addStandardColumnsSectionMock.Setup(s => s.GetChildren()).Returns(columnSectionsList);
            var sut = new MicrosoftExtensionsColumnOptionsProvider();

            // Act
            var result = sut.ConfigureColumnOptions(new Serilog.Sinks.MSSqlServer.ColumnOptions(), _configurationSectionMock.Object);

            // Assert
            Assert.True(result.Store.Contains(StandardColumn.LogEvent));
            Assert.True(result.Store.Contains(StandardColumn.MessageTemplate));
        }