Skip to content

Commit f622d8d

Browse files
authored
Merge pull request #266 from ckadluba/azure-managed-identities
Added an integration test to proove issue #201 is fixed.
2 parents 2a465e4 + 6d19fe4 commit f622d8d

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using System.Collections.Generic;
2+
using System.Data;
3+
using Serilog.Sinks.MSSqlServer.Sinks.MSSqlServer.Options;
4+
using Serilog.Sinks.MSSqlServer.Tests.TestUtils;
5+
using Xunit;
6+
using Xunit.Abstractions;
7+
8+
namespace Serilog.Sinks.MSSqlServer.Tests
9+
{
10+
public class AdditionalPropertiesTests : DatabaseTestsBase
11+
{
12+
public AdditionalPropertiesTests(ITestOutputHelper output) : base(output)
13+
{
14+
}
15+
16+
[Fact]
17+
public void CreatesTableWithTwoAdditionalProperties()
18+
{
19+
// Arrange
20+
const string additionalColumnName1 = "AdditionalColumn1";
21+
const string additionalColumnName2 = "AdditionalColumn2";
22+
var columnOptions = new ColumnOptions
23+
{
24+
AdditionalColumns = new List<SqlColumn>
25+
{
26+
new SqlColumn(additionalColumnName1, SqlDbType.NVarChar, true, dataLength: 100),
27+
new SqlColumn(additionalColumnName2, SqlDbType.Int, true)
28+
}
29+
};
30+
31+
// Act
32+
using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString,
33+
sinkOptions: new SinkOptions
34+
{
35+
TableName = DatabaseFixture.LogTableName,
36+
AutoCreateSqlTable = true
37+
},
38+
columnOptions: columnOptions,
39+
formatProvider: null))
40+
{ }
41+
42+
// Assert
43+
VerifyDatabaseColumnsWereCreated(columnOptions.AdditionalColumns);
44+
}
45+
}
46+
}

test/Serilog.Sinks.MSSqlServer.Tests/TestUtils/DapperQueryTemplates.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ public class InfoSchema
2525
public string ColumnName { get; set; }
2626
public string SchemaName { get; set; }
2727
public string DataType { get; set; }
28+
public string DataLength { get; set; }
29+
public string AllowNull { get; set; }
2830
}
2931

3032
public class sp_pkey

test/Serilog.Sinks.MSSqlServer.Tests/TestUtils/DatabaseTestsBase.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Data.SqlClient;
4+
using System.Globalization;
45
using System.Linq;
56
using Dapper;
67
using FluentAssertions;
@@ -43,6 +44,41 @@ protected static void VerifyDatabaseColumnsWereCreated(IEnumerable<string> colum
4344
}
4445
}
4546

47+
protected static void VerifyDatabaseColumnsWereCreated(IEnumerable<SqlColumn> columnDefinitions)
48+
{
49+
if (columnDefinitions == null)
50+
{
51+
return;
52+
}
53+
54+
using (var conn = new SqlConnection(DatabaseFixture.LogEventsConnectionString))
55+
{
56+
var logEvents = conn.Query<InfoSchema>($@"SELECT COLUMN_NAME AS ColumnName, UPPER(DATA_TYPE) as DataType, CHARACTER_MAXIMUM_LENGTH as DataLength, IS_NULLABLE as AllowNull
57+
FROM {DatabaseFixture.Database}.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{DatabaseFixture.LogTableName}'");
58+
var infoSchema = logEvents as InfoSchema[] ?? logEvents.ToArray();
59+
60+
foreach (var definition in columnDefinitions)
61+
{
62+
var column = infoSchema.SingleOrDefault(c => c.ColumnName == definition.ColumnName);
63+
Assert.NotNull(column);
64+
var definitionDataType = definition.DataType.ToString().ToUpperInvariant();
65+
Assert.Equal(definitionDataType, column.DataType);
66+
if (definitionDataType == "NVARCHAR" || definitionDataType == "VARCHAR")
67+
{
68+
Assert.Equal(definition.DataLength.ToString(CultureInfo.InvariantCulture), column.DataLength);
69+
}
70+
if (definition.AllowNull)
71+
{
72+
Assert.Equal("YES", column.AllowNull);
73+
}
74+
else
75+
{
76+
Assert.Equal("NO", column.AllowNull);
77+
}
78+
}
79+
}
80+
}
81+
4682
protected static void VerifyIdColumnWasCreatedAndHasIdentity(string idColumnName = "Id")
4783
{
4884
using (var conn = new SqlConnection(DatabaseFixture.LogEventsConnectionString))

0 commit comments

Comments
 (0)