Skip to content

fix(decorators-test): refactor setup to consider new variable assigna… #130

fix(decorators-test): refactor setup to consider new variable assigna…

fix(decorators-test): refactor setup to consider new variable assigna… #130

GitHub Actions / DotNET - Tests succeeded Sep 11, 2024 in 0s

338 passed, 0 failed and 2 skipped

Tests passed successfully

Report Passed Failed Skipped Time
tests/Serilog.Ui.ElasticSearchProvider.Tests/TestResults/test-results.trx 26✔️ 2✖️ 26s
tests/Serilog.Ui.MongoDbProvider.Tests/TestResults/test-results.trx 26✔️ 19s
tests/Serilog.Ui.MsSqlServerProvider.Tests/TestResults/test-results.trx 52✔️ 23s
tests/Serilog.Ui.MySqlProvider.Tests/TestResults/test-results.trx 58✔️ 28s
tests/Serilog.Ui.PostgreSqlProvider.Tests/TestResults/test-results.trx 62✔️ 22s
tests/Serilog.Ui.RavenDbProvider.Tests/TestResults/test-results.trx 22✔️ 17s
tests/Serilog.Ui.Web.Tests/TestResults/test-results.trx 92✔️ 6s

✔️ tests/Serilog.Ui.ElasticSearchProvider.Tests/TestResults/test-results.trx

28 tests were completed in 26s with 26 passed, 0 failed and 2 skipped.

Test suite Passed Failed Skipped Time
ElasticSearch.Tests.DataProvider.DataProviderBaseTest 2✔️ 210ms
ElasticSearch.Tests.DataProvider.DataProviderPaginationTest 5✔️ 2✖️ 256ms
ElasticSearch.Tests.DataProvider.DataProviderSearchTest 8✔️ 313ms
ElasticSearch.Tests.Extensions.ElasticSearchDbOptionsTest 4✔️ 21ms
ElasticSearch.Tests.Extensions.SerilogUiOptionBuilderExtensionsTest 3✔️ 60ms
ElasticSearch.Tests.Serializers.VanillaSerializerTest 4✔️ 66ms

✔️ ElasticSearch.Tests.DataProvider.DataProviderBaseTest

✔️ It_logs_and_throws_when_db_read_breaks_down
✔️ It_throws_when_any_dependency_is_null

✔️ ElasticSearch.Tests.DataProvider.DataProviderPaginationTest

✔️ It fetches with limit
✔️ It fetches with limit and skip
✔️ It fetches with skip
✖️ It fetches with sort by level
✖️ It fetches with sort by message
✔️ It fetches with sort by timestamp
✔️ It_throws_when_skip_is_zero

✔️ ElasticSearch.Tests.DataProvider.DataProviderSearchTest

✔️ It finds all data with default search
✔️ It finds data with all filters
✔️ It finds only data emitted after date
✔️ It finds only data emitted before date
✔️ It finds only data emitted in dates range
✔️ It finds only data with specific level
✔️ It finds only data with specific message content
✔️ It finds same data on same repeated search

✔️ ElasticSearch.Tests.Extensions.ElasticSearchDbOptionsTest

✔️ It_returns_custom_provider_name
✔️ It_returns_default_provider_name
✔️ It_throws_on_validation_failed
✔️ It_validates_options

✔️ ElasticSearch.Tests.Extensions.SerilogUiOptionBuilderExtensionsTest

✔️ It registers multiple providers
✔️ It_registers_provider_and_dependencies
✔️ It_throws_on_invalid_registration

✔️ ElasticSearch.Tests.Serializers.VanillaSerializerTest

✔️ It_deserializes_property
✔️ It_deserializes_property_async
✔️ It_serializes_property
✔️ It_serializes_property_async

✔️ tests/Serilog.Ui.MongoDbProvider.Tests/TestResults/test-results.trx

26 tests were completed in 19s with 26 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
MongoDb.Tests.DataProvider.DataProviderBaseTest 2✔️ 907ms
MongoDb.Tests.DataProvider.DataProviderPaginationTest 7✔️ 423ms
MongoDb.Tests.DataProvider.DataProviderSearchTest 8✔️ 223ms
MongoDb.Tests.Extensions.MongoDbOptionsTest 4✔️ 186ms
MongoDb.Tests.Extensions.SerilogUiOptionBuilderExtensionsTest 5✔️ 1s

✔️ MongoDb.Tests.DataProvider.DataProviderBaseTest

✔️ It logs and throws when db read breaks down
✔️ It throws when any dependency is null

✔️ MongoDb.Tests.DataProvider.DataProviderPaginationTest

✔️ It fetches with limit
✔️ It fetches with limit and skip
✔️ It fetches with skip
✔️ It fetches with sort by level
✔️ It fetches with sort by message
✔️ It fetches with sort by timestamp
✔️ It throws when skip is zero

✔️ MongoDb.Tests.DataProvider.DataProviderSearchTest

✔️ It finds all data with default search
✔️ It finds data with all filters
✔️ It finds only data emitted after date
✔️ It finds only data emitted before date
✔️ It finds only data emitted in dates range
✔️ It finds only data with specific level
✔️ It finds only data with specific message content
✔️ It finds same data on same repeated search

✔️ MongoDb.Tests.Extensions.MongoDbOptionsTest

✔️ It returns custom provider name
✔️ It returns default provider name
✔️ It throws on validation failed
✔️ It validates options

✔️ MongoDb.Tests.Extensions.SerilogUiOptionBuilderExtensionsTest

✔️ It registers IMongoClient only when not registered
✔️ It registers multiple providers
✔️ It registers provider and dependencies with connection string and collection
✔️ It registers provider and dependencies with connection string collection and dbname
✔️ It throws on invalid registration

✔️ tests/Serilog.Ui.MsSqlServerProvider.Tests/TestResults/test-results.trx

52 tests were completed in 23s with 52 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
MsSql.Tests.DapperHandlers.DapperDateTimeHandlerTest 14✔️ 159ms
MsSql.Tests.DataProvider.DataProviderBaseTest 2✔️ 145ms
MsSql.Tests.DataProvider.DataProviderPaginationAdditionalColsTest 7✔️ 726ms
MsSql.Tests.DataProvider.DataProviderPaginationTest 7✔️ 685ms
MsSql.Tests.DataProvider.DataProviderSearchAdditionalColsTest 9✔️ 393ms
MsSql.Tests.DataProvider.DataProviderSearchTest 8✔️ 491ms
MsSql.Tests.Extensions.SerilogUiOptionBuilderExtensionsTest 5✔️ 638ms

✔️ MsSql.Tests.DapperHandlers.DapperDateTimeHandlerTest

✔️ It fail parse with current culture when original format culture was different
✔️ It parse exact formats with none style and invariant culture(customFormat: "M/d/yyyy h:mm:ss tt zzz")
✔️ It parse exact formats with none style and invariant culture(customFormat: "M/d/yyyy h:mm:ss tt")
✔️ It parse exact formats with none style and invariant culture(customFormat: "M/dd/yyyy h:mm:ss tt zzz")
✔️ It parse exact formats with none style and invariant culture(customFormat: "M/dd/yyyy h:mm:ss tt")
✔️ It parse exact formats with none style and invariant culture(customFormat: "M/dd/yyyy hh:mm:ss tt")
✔️ It parse exact formats with none style and invariant culture(customFormat: "M/dd/yyyy hh:mm:ss")
✔️ It parse exact formats with none style and invariant culture(customFormat: "MM/d/yyyy hh:mm:ss tt")
✔️ It parse exact formats with none style and invariant culture(customFormat: "MM/dd/yyyy hh:mm:ss tt")
✔️ It parse exact formats with none style and invariant culture(customFormat: "MM/dd/yyyy HH:mm:ss")
✔️ It parse simple datetime with local style and current culture
✔️ It parse strange format using custom delegate
✔️ It sets value without changes
✔️ It throws when using custom delegate not returns datetime with utc kind

✔️ MsSql.Tests.DataProvider.DataProviderBaseTest

✔️ It logs and throws when db read breaks down
✔️ It throws when any dependency is null

✔️ MsSql.Tests.DataProvider.DataProviderPaginationAdditionalColsTest

✔️ It fetches with limit
✔️ It fetches with limit and skip
✔️ It fetches with skip
✔️ It fetches with sort by level
✔️ It fetches with sort by message
✔️ It fetches with sort by timestamp
✔️ It throws when skip is zero

✔️ MsSql.Tests.DataProvider.DataProviderPaginationTest

✔️ It fetches with limit
✔️ It fetches with limit and skip
✔️ It fetches with skip
✔️ It fetches with sort by level
✔️ It fetches with sort by message
✔️ It fetches with sort by timestamp
✔️ It throws when skip is zero

✔️ MsSql.Tests.DataProvider.DataProviderSearchAdditionalColsTest

✔️ It finds all data with default search
✔️ It finds data with all filters
✔️ It finds data with expected additional columns
✔️ It finds only data emitted after date
✔️ It finds only data emitted before date
✔️ It finds only data emitted in dates range
✔️ It finds only data with specific level
✔️ It finds only data with specific message content
✔️ It finds same data on same repeated search

✔️ MsSql.Tests.DataProvider.DataProviderSearchTest

✔️ It finds all data with default search
✔️ It finds data with all filters
✔️ It finds only data emitted after date
✔️ It finds only data emitted before date
✔️ It finds only data emitted in dates range
✔️ It finds only data with specific level
✔️ It finds only data with specific message content
✔️ It finds same data on same repeated search

✔️ MsSql.Tests.Extensions.SerilogUiOptionBuilderExtensionsTest

✔️ It registers additional columns options during service registration
✔️ It registers multiple providers
✔️ It registers provider and dependencies
✔️ It registers provider and dependencies with custom log model
✔️ It throws on invalid registration

✔️ tests/Serilog.Ui.MySqlProvider.Tests/TestResults/test-results.trx

58 tests were completed in 28s with 58 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
MySql.Tests.DataProvider.MariaDb.DataProviderBaseTest 2✔️ 266ms
MySql.Tests.DataProvider.MariaDb.DataProviderPaginationAdditionalColsTest 7✔️ 420ms
MySql.Tests.DataProvider.MariaDb.DataProviderPaginationTest 7✔️ 528ms
MySql.Tests.DataProvider.MariaDb.DataProviderSearchAdditionalColsTest 9✔️ 944ms
MySql.Tests.DataProvider.MariaDb.DataProviderSearchTest 8✔️ 632ms
MySql.Tests.DataProvider.MySql.DataProviderBaseTest 2✔️ 3ms
MySql.Tests.DataProvider.MySql.DataProviderPaginationTest 7✔️ 84ms
MySql.Tests.DataProvider.MySql.DataProviderSearchTest 8✔️ 102ms
MySql.Tests.Extensions.SerilogUiOptionBuilderExtensionsMariaDbTest 5✔️ 197ms
MySql.Tests.Extensions.SerilogUiOptionBuilderExtensionsMySqlTest 3✔️ 7ms

✔️ MySql.Tests.DataProvider.MariaDb.DataProviderBaseTest

✔️ It logs and throws when db read breaks down
✔️ It throws when any dependency is null

✔️ MySql.Tests.DataProvider.MariaDb.DataProviderPaginationAdditionalColsTest

✔️ It fetches with limit
✔️ It fetches with limit and skip
✔️ It fetches with skip
✔️ It fetches with sort by level
✔️ It fetches with sort by message
✔️ It fetches with sort by timestamp
✔️ It throws when skip is zero

✔️ MySql.Tests.DataProvider.MariaDb.DataProviderPaginationTest

✔️ It fetches with limit
✔️ It fetches with limit and skip
✔️ It fetches with skip
✔️ It fetches with sort by level
✔️ It fetches with sort by message
✔️ It fetches with sort by timestamp
✔️ It throws when skip is zero

✔️ MySql.Tests.DataProvider.MariaDb.DataProviderSearchAdditionalColsTest

✔️ It finds all data with default search
✔️ It finds data with all filters
✔️ It finds data with expected additional columns
✔️ It finds only data emitted after date
✔️ It finds only data emitted before date
✔️ It finds only data emitted in dates range
✔️ It finds only data with specific level
✔️ It finds only data with specific message content
✔️ It finds same data on same repeated search

✔️ MySql.Tests.DataProvider.MariaDb.DataProviderSearchTest

✔️ It finds all data with default search
✔️ It finds data with all filters
✔️ It finds only data emitted after date
✔️ It finds only data emitted before date
✔️ It finds only data emitted in dates range
✔️ It finds only data with specific level
✔️ It finds only data with specific message content
✔️ It finds same data on same repeated search

✔️ MySql.Tests.DataProvider.MySql.DataProviderBaseTest

✔️ It logs and throws when db read breaks down
✔️ It throws when any dependency is null

✔️ MySql.Tests.DataProvider.MySql.DataProviderPaginationTest

✔️ It fetches with limit
✔️ It fetches with limit and skip
✔️ It fetches with skip
✔️ It fetches with sort by level
✔️ It fetches with sort by message
✔️ It fetches with sort by timestamp
✔️ It throws when skip is zero

✔️ MySql.Tests.DataProvider.MySql.DataProviderSearchTest

✔️ It finds all data with default search
✔️ It finds data with all filters
✔️ It finds only data emitted after date
✔️ It finds only data emitted before date
✔️ It finds only data emitted in dates range
✔️ It finds only data with specific level
✔️ It finds only data with specific message content
✔️ It finds same data on same repeated search

✔️ MySql.Tests.Extensions.SerilogUiOptionBuilderExtensionsMariaDbTest

✔️ It registers additional columns options during service registration
✔️ It registers multiple providers
✔️ It registers provider and dependencies
✔️ It registers provider and dependencies with custom log model
✔️ It throws on invalid registration

✔️ MySql.Tests.Extensions.SerilogUiOptionBuilderExtensionsMySqlTest

✔️ It registers multiple providers
✔️ It registers provider and dependencies
✔️ It throws on invalid registration

✔️ tests/Serilog.Ui.PostgreSqlProvider.Tests/TestResults/test-results.trx

62 tests were completed in 22s with 62 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Postgres.Tests.DataProvider.DataProviderBaseTest 2✔️ 187ms
Postgres.Tests.DataProvider.DataProviderPaginationTest 7✔️ 473ms
Postgres.Tests.DataProvider.DataProviderPaginationWithColsTests 7✔️ 658ms
Postgres.Tests.DataProvider.DataProviderSearchTest 8✔️ 656ms
Postgres.Tests.DataProvider.DataProviderSearchWithColsTest 9✔️ 401ms
Postgres.Tests.DataProvider.QueryBuilderTests 9✔️ 71ms
Postgres.Tests.Extensions.SerilogUiOptionBuilderExtensionsTest 6✔️ 239ms
Postgres.Tests.Model.LogLevelConverterTest 14✔️ 63ms

✔️ Postgres.Tests.DataProvider.DataProviderBaseTest

✔️ It logs and throws when db read breaks down
✔️ It throws when any dependency is null

✔️ Postgres.Tests.DataProvider.DataProviderPaginationTest

✔️ It fetches with limit
✔️ It fetches with limit and skip
✔️ It fetches with skip
✔️ It fetches with sort by level
✔️ It fetches with sort by message
✔️ It fetches with sort by timestamp
✔️ It throws when skip is zero

✔️ Postgres.Tests.DataProvider.DataProviderPaginationWithColsTests

✔️ It fetches with limit
✔️ It fetches with limit and skip
✔️ It fetches with skip
✔️ It fetches with sort by level
✔️ It fetches with sort by message
✔️ It fetches with sort by timestamp
✔️ It throws when skip is zero

✔️ Postgres.Tests.DataProvider.DataProviderSearchTest

✔️ It finds all data with default search
✔️ It finds data with all filters
✔️ It finds only data emitted after date
✔️ It finds only data emitted before date
✔️ It finds only data emitted in dates range
✔️ It finds only data with specific level
✔️ It finds only data with specific message content
✔️ It finds same data on same repeated search

✔️ Postgres.Tests.DataProvider.DataProviderSearchWithColsTest

✔️ It finds all data with default search
✔️ It finds data with all filters
✔️ It finds data with expected additional columns
✔️ It finds only data emitted after date
✔️ It finds only data emitted before date
✔️ It finds only data emitted in dates range
✔️ It finds only data with specific level
✔️ It finds only data with specific message content
✔️ It finds same data on same repeated search

✔️ Postgres.Tests.DataProvider.QueryBuilderTests

✔️ BuildFetchLogsQuery ForAlternativeSink ReturnsCorrectQuery(schema: "dbo", tableName: "logs", level: "Information", searchCriteria: "Test", startDate: 2024-09-11T16:04:01.9192836+00:00, endDate: 2024-09-11T16:04:01.9192837+00:00, expectedQuery: "SELECT \"Message\", \"MessageTemplate\", \"Level\""···)
✔️ BuildFetchLogsQuery ForAlternativeSink ReturnsCorrectQuery(schema: "dbo", tableName: "logs", level: "Information", searchCriteria: "Test", startDate: null, endDate: null, expectedQuery: "SELECT \"Message\", \"MessageTemplate\", \"Level\""···)
✔️ BuildFetchLogsQuery ForAlternativeSink ReturnsCorrectQuery(schema: "dbo", tableName: "logs", level: "Information", searchCriteria: null, startDate: null, endDate: null, expectedQuery: "SELECT \"Message\", \"MessageTemplate\", \"Level\""···)
✔️ BuildFetchLogsQuery ForAlternativeSink ReturnsCorrectQuery(schema: "dbo", tableName: "logs", level: null, searchCriteria: "Test", startDate: null, endDate: null, expectedQuery: "SELECT \"Message\", \"MessageTemplate\", \"Level\""···)
✔️ BuildFetchLogsQuery ForAlternativeSink ReturnsCorrectQuery(schema: "dbo", tableName: "logs", level: null, searchCriteria: null, startDate: 2024-09-11T16:04:01.9192736+00:00, endDate: null, expectedQuery: "SELECT \"Message\", \"MessageTemplate\", \"Level\""···)
✔️ BuildFetchLogsQuery ForAlternativeSink ReturnsCorrectQuery(schema: "dbo", tableName: "logs", level: null, searchCriteria: null, startDate: 2024-09-11T16:04:01.9192802+00:00, endDate: 2024-09-11T16:04:01.9192830+00:00, expectedQuery: "SELECT \"Message\", \"MessageTemplate\", \"Level\""···)
✔️ BuildFetchLogsQuery ForAlternativeSink ReturnsCorrectQuery(schema: "dbo", tableName: "logs", level: null, searchCriteria: null, startDate: null, endDate: 2024-09-11T16:04:01.9192800+00:00, expectedQuery: "SELECT \"Message\", \"MessageTemplate\", \"Level\""···)
✔️ BuildFetchLogsQuery ForAlternativeSink ReturnsCorrectQuery(schema: "dbo", tableName: "logs", level: null, searchCriteria: null, startDate: null, endDate: null, expectedQuery: "SELECT \"Message\", \"MessageTemplate\", \"Level\""···)
✔️ BuildFetchLogsQuery not includes Exception if custom log model

✔️ Postgres.Tests.Extensions.SerilogUiOptionBuilderExtensionsTest

✔️ It registers multiple providers
✔️ It registers provider and dependencies with custom log model
✔️ It registers provider and dependencies(sink: null, type: typeof(Serilog.Ui.PostgreSqlProvider.Models.PostgreSqlAlternativeSinkColumnNames))
✔️ It registers provider and dependencies(sink: SerilogSinksPostgreSQL, type: typeof(Serilog.Ui.PostgreSqlProvider.Models.PostgreSqlSinkColumnNames))
✔️ It registers provider and dependencies(sink: SerilogSinksPostgreSQLAlternative, type: typeof(Serilog.Ui.PostgreSqlProvider.Models.PostgreSqlAlternativeSinkColumnNames))
✔️ It throws on invalid registration

✔️ Postgres.Tests.Model.LogLevelConverterTest

✔️ It maps the correct log level name(input: "0", expected: "Verbose")
✔️ It maps the correct log level name(input: "1", expected: "Debug")
✔️ It maps the correct log level name(input: "2", expected: "Information")
✔️ It maps the correct log level name(input: "3", expected: "Warning")
✔️ It maps the correct log level name(input: "4", expected: "Error")
✔️ It maps the correct log level name(input: "5", expected: "Fatal")
✔️ It maps the correct log level name(input: "random", expected: "")
✔️ It maps the correct log level value(input: "Debug", expected: 1)
✔️ It maps the correct log level value(input: "Error", expected: 4)
✔️ It maps the correct log level value(input: "Fatal", expected: 5)
✔️ It maps the correct log level value(input: "Information", expected: 2)
✔️ It maps the correct log level value(input: "random", expected: 100)
✔️ It maps the correct log level value(input: "Verbose", expected: 0)
✔️ It maps the correct log level value(input: "Warning", expected: 3)

✔️ tests/Serilog.Ui.RavenDbProvider.Tests/TestResults/test-results.trx

22 tests were completed in 17s with 22 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
RavenDb.Tests.DataProvider.DataProviderBaseTest 2✔️ 418ms
RavenDb.Tests.DataProvider.DataProviderPaginationTest 7✔️ 1s
RavenDb.Tests.DataProvider.DataProviderSearchTest 8✔️ 357ms
RavenDb.Tests.Extensions.SerilogUiOptionBuilderExtensionsTest 5✔️ 435ms

✔️ RavenDb.Tests.DataProvider.DataProviderBaseTest

✔️ It logs and throws when db read breaks down
✔️ It throws when any dependency is null

✔️ RavenDb.Tests.DataProvider.DataProviderPaginationTest

✔️ It fetches with limit
✔️ It fetches with limit and skip
✔️ It fetches with skip
✔️ It fetches with sort by level
✔️ It fetches with sort by message
✔️ It fetches with sort by timestamp
✔️ It throws when skip is zero

✔️ RavenDb.Tests.DataProvider.DataProviderSearchTest

✔️ It finds all data with default search
✔️ It finds data with all filters
✔️ It finds only data emitted after date
✔️ It finds only data emitted before date
✔️ It finds only data emitted in dates range
✔️ It finds only data with specific level
✔️ It finds only data with specific message content
✔️ It finds same data on same repeated search

✔️ RavenDb.Tests.Extensions.SerilogUiOptionBuilderExtensionsTest

✔️ It registers multiple providers
✔️ It registers provider and dependencies with documentStore
✔️ It returns custom provider name
✔️ It returns default provider name
✔️ It throws on invalid registration

✔️ tests/Serilog.Ui.Web.Tests/TestResults/test-results.trx

92 tests were completed in 6s with 92 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Serilog.Ui.Web.Tests.Authorization.AuthorizationAsyncTest 1✔️ 70ms
Serilog.Ui.Web.Tests.Authorization.AuthorizationDefaultTest 1✔️ 808ms
Serilog.Ui.Web.Tests.Authorization.AuthorizationSyncTest 1✔️ 2s
Serilog.Ui.Web.Tests.Authorization.Filters.BasicAuthenticationFilterTest 3✔️ 635ms
Serilog.Ui.Web.Tests.Authorization.Filters.BasicAuthServiceByConfigurationTest 2✔️ 6ms
Serilog.Ui.Web.Tests.Authorization.Filters.PolicyAuthenticationFilterTest 2✔️ 6ms
Serilog.Ui.Web.Tests.Endpoints.SerilogUiAppRoutesTest 4✔️ 844ms
Serilog.Ui.Web.Tests.Endpoints.SerilogUiDecoratorsTest 6✔️ 34ms
Serilog.Ui.Web.Tests.Endpoints.SerilogUiEndpointsTest 4✔️ 334ms
Serilog.Ui.Web.Tests.Extensions.ApplicationBuilderExtensionsTest 3✔️ 1s
Serilog.Ui.Web.Tests.Extensions.HttpRequestExtensionsTest 5✔️ 633ms
Serilog.Ui.Web.Tests.Extensions.SerilogUiOptionBuilderExtensionsTest 8✔️ 45ms
Serilog.Ui.Web.Tests.Extensions.ServiceCollectionExtensionsTest 2✔️ 16ms
Serilog.Ui.Web.Tests.Models.RelationalDbOptionsTest 2✔️ 1ms
Serilog.Ui.Web.Tests.Models.UiOptionsTest 10✔️ 43ms
Serilog.Ui.Web.Tests.OptionsBuilder.ProvidersOptionsTest 2✔️ 8ms
Serilog.Ui.Web.Tests.OptionsBuilder.SerilogUiOptionsBuilderTest 4✔️ 360ms
Serilog.Ui.Web.Tests.SerilogUiMiddlewareTest 32✔️ 695ms

✔️ Serilog.Ui.Web.Tests.Authorization.AuthorizationAsyncTest

✔️ Local Requests Are Not Allowed By Async Filters

✔️ Serilog.Ui.Web.Tests.Authorization.AuthorizationDefaultTest

✔️ Local Requests Are Allowed By Default

✔️ Serilog.Ui.Web.Tests.Authorization.AuthorizationSyncTest

✔️ Local Requests Are Not Allowed By Sync Filters

✔️ Serilog.Ui.Web.Tests.Authorization.Filters.BasicAuthenticationFilterTest

✔️ Authorize returns true on not basic authorization
✔️ Authorize with implementation returns implementation result(isAuth: False)
✔️ Authorize with implementation returns implementation result(isAuth: True)

✔️ Serilog.Ui.Web.Tests.Authorization.Filters.BasicAuthServiceByConfigurationTest

✔️ CanAccessAsync returns false with invalid credentials
✔️ CanAccessAsync returns true with valid credentials

✔️ Serilog.Ui.Web.Tests.Authorization.Filters.PolicyAuthenticationFilterTest

✔️ It returns false with configured policy
✔️ It returns true with configured policy

✔️ Serilog.Ui.Web.Tests.Endpoints.SerilogUiAppRoutesTest

✔️ It gets app home
✔️ It redirects app home
✔️ It returns page error when stream cannot load app home
✔️ It throws on app home if ui options were not set

✔️ Serilog.Ui.Web.Tests.Endpoints.SerilogUiDecoratorsTest

✔️ It blocks the call on failed authentication
✔️ It forwards the call to GetHome when unauthorized page access is enabled
✔️ It forwards the call to GetKeys on success authentication
✔️ It forwards the call to GetLogs on success authentication
✔️ It forwards the call to RedirectHome always
✔️ It return GetHome on failed authentication with custom ui option

✔️ Serilog.Ui.Web.Tests.Endpoints.SerilogUiEndpointsTest

✔️ It gets logs
✔️ It gets logs keys
✔️ It gets logs with search parameters
✔️ It serializes an error on exception

✔️ Serilog.Ui.Web.Tests.Extensions.ApplicationBuilderExtensionsTest

✔️ It not throws on null parameters
✔️ It register ui middleware
✔️ It throws on null deps

✔️ Serilog.Ui.Web.Tests.Extensions.HttpRequestExtensionsTest

✔️ It is local when no xforwarded and remote ip address is null
✔️ It is local when remote ip address equals local ip address
✔️ It is local when remote ip address is loopback
✔️ It is not local when remote ip address is not local nor loopback
✔️ It is not local when xforwarded

✔️ Serilog.Ui.Web.Tests.Extensions.SerilogUiOptionBuilderExtensionsTest

✔️ It registers async filter
✔️ It registers async filter with implementation factory
✔️ It registers basic filter with custom implementation
✔️ It registers basic filter with default implementation
✔️ It registers local requests filter
✔️ It registers policy filter
✔️ It registers sync filter
✔️ It registers sync filter with implementation factory

✔️ Serilog.Ui.Web.Tests.Extensions.ServiceCollectionExtensionsTest

✔️ AddSerilogUi registers providers options in services
✔️ It throws if AddSerilogUi is called twice

✔️ Serilog.Ui.Web.Tests.Models.RelationalDbOptionsTest

✔️ It returns custom provider name
✔️ It returns default provider name

✔️ Serilog.Ui.Web.Tests.Models.UiOptionsTest

✔️ It appends multiple script tags
✔️ It appends multiple stylesheet tags
✔️ It appends script tag with customs
✔️ It appends script tag with defaults
✔️ It appends stylesheet tag with customs
✔️ It appends stylesheet tag with defaults
✔️ It gets default options
✔️ It mix scripts and stylesheets
✔️ It sets options
✔️ It validates options

✔️ Serilog.Ui.Web.Tests.OptionsBuilder.ProvidersOptionsTest

✔️ It creates info from default log model
✔️ It creates info from log model

✔️ Serilog.Ui.Web.Tests.OptionsBuilder.SerilogUiOptionsBuilderTest

✔️ It adds entry in disabled sort keys
✔️ It adds entry in exception as string keys
✔️ It creates entries in additional columns
✔️ It registers options in services

✔️ Serilog.Ui.Web.Tests.SerilogUiMiddlewareTest

✔️ It hits ui endpoint when request matches method and custom options prefix(pathReq: "/test", statusCode: 400)
✔️ It hits ui endpoint when request matches method and custom options prefix(pathReq: "/test/", statusCode: 418)
✔️ It hits ui endpoint when request matches method and custom options prefix(pathReq: "/test/api/keys/", statusCode: 417)
✔️ It hits ui endpoint when request matches method and custom options prefix(pathReq: "/test/api/logs/", statusCode: 409)
✔️ It hits ui endpoint when request matches method and custom options prefix(pathReq: "/test/index.html", statusCode: 400)
✔️ It hits ui endpoint when request matches method and options prefix(pathReq: "/serilog-ui", statusCode: 400)
✔️ It hits ui endpoint when request matches method and options prefix(pathReq: "/serilog-ui/", statusCode: 418)
✔️ It hits ui endpoint when request matches method and options prefix(pathReq: "/serilog-ui/api/keys/", statusCode: 417)
✔️ It hits ui endpoint when request matches method and options prefix(pathReq: "/serilog-ui/api/logs/", statusCode: 409)
✔️ It hits ui endpoint when request matches method and options prefix(pathReq: "/serilog-ui/index.html", statusCode: 400)
✔️ It maps request to assets when request final path part starts with assets folder(pathReq: "/serilog-ui/assets/index.js?query=query", additionalPart: "?query=query")
✔️ It maps request to assets when request final path part starts with assets folder(pathReq: "/serilog-ui/assets/index.js", additionalPart: null)
✔️ It maps request to assets when request final path part starts with assets folder(pathReq: "/serilog-ui/test/assets/index.js", additionalPart: null)
✔️ It maps request to assets when request final path part starts with assets folder(pathReq: "/serilog-ui/test/nested/assets/index.js?query=quer"···, additionalPart: "?query=query")
✔️ It maps request to assets when request final path part starts with assets folder(pathReq: "/serilog-ui/test/nested/assets/index.js", additionalPart: null)
✔️ It not map request to assets when request final path part not match assets folder(pathReq: "/serilog-ui/asset/index.js?query=query")
✔️ It not map request to assets when request final path part not match assets folder(pathReq: "/serilog-ui/assets.js")
✔️ It not map request to assets when request final path part not match assets folder(pathReq: "/serilog-ui/assets")
✔️ It not map request to assets when request final path part not match assets folder(pathReq: "/serilog-ui/index.js")
✔️ It not map request to assets when request final path part not match assets folder(pathReq: "/serilog-ui/test/asset/index.js")
✔️ It not map request to assets when request final path part not match assets folder(pathReq: "/serilog-ui/test/nested/my-assets/index.js")
✔️ It proceeds onwards when request does not match options prefix(pathReq: "/fake-prefix", statusCode: 400)
✔️ It proceeds onwards when request does not match options prefix(pathReq: "/fake-prefix", statusCode: 418)
✔️ It proceeds onwards when request does not match options prefix(pathReq: "/fake-prefix/", statusCode: 400)
✔️ It proceeds onwards when request does not match options prefix(pathReq: "/fake-prefix/index.html", statusCode: 418)
✔️ It proceeds onwards when request does not match options prefix(pathReq: "fake-prefix/api/keys/", statusCode: 417)
✔️ It proceeds onwards when request does not match options prefix(pathReq: "fake-prefix/api/logs/", statusCode: 409)
✔️ It proceeds onwards when request is not a get(pathReq: "/serilog-ui", statusCode: 418)
✔️ It proceeds onwards when request is not a get(pathReq: "/serilog-ui/", statusCode: 400)
✔️ It proceeds onwards when request is not a get(pathReq: "/serilog-ui/api/keys/", statusCode: 417)
✔️ It proceeds onwards when request is not a get(pathReq: "/serilog-ui/api/logs/", statusCode: 409)
✔️ It proceeds onwards when request is not a get(pathReq: "/serilog-ui/index.html", statusCode: 418)