Skip to content

Bump Jint from 4.4.1 to 4.4.2 - #139

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/nuget/src/client/Fig.Client.Testing/multi-a759b33298
Closed

Bump Jint from 4.4.1 to 4.4.2#139
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/nuget/src/client/Fig.Client.Testing/multi-a759b33298

Bump Jint from 4.4.1 to 4.4.2

8f6a8b0
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
GitHub Actions / TestResults failed Nov 17, 2025 in 1s

805 passed, 1 failed and 0 skipped

Tests failed

Report Passed Failed Skipped Time
integration-test-results/integration-test-results.trx 425✅ 1❌ 798s
unit-test-results/unit-test-results.trx 380✅ 6s

❌ integration-test-results/integration-test-results.trx

426 tests were completed in 798s with 425 passed, 1 failed and 0 skipped.

Test suite Passed Failed Skipped Time
Fig.Integration.Test.Api.ApiStatusTests 1✅ 703ms
Fig.Integration.Test.Api.ApiVersionTests 4✅ 4s
Fig.Integration.Test.Api.ClientDescriptionsTests 2✅ 1s
Fig.Integration.Test.Api.ClientRegistrationHealthTests 2✅ 3s
Fig.Integration.Test.Api.ClientStatusTests 17✅ 1❌ 26s
Fig.Integration.Test.Api.CustomActionsTests 15✅ 12s
Fig.Integration.Test.Api.DataCleanupTests 14✅ 13s
Fig.Integration.Test.Api.DisplayScriptTests 3✅ 4s
Fig.Integration.Test.Api.EncryptionMigrationTests 5✅ 12s
Fig.Integration.Test.Api.EventsTests 56✅ 132s
Fig.Integration.Test.Api.FigConfigurationTests 5✅ 5s
Fig.Integration.Test.Api.FileImportTests 1✅ 2s
Fig.Integration.Test.Api.ImportExportTests 24✅ 63s
Fig.Integration.Test.Api.IndentAttributeTests 4✅ 2s
Fig.Integration.Test.Api.LookupTablesTests 29✅ 74s
Fig.Integration.Test.Api.NestedSettingTests 5✅ 5s
Fig.Integration.Test.Api.RateLimitingTests 3✅ 5s
Fig.Integration.Test.Api.SchedulingTests 14✅ 44s
Fig.Integration.Test.Api.SecretHandlingTests 14✅ 8s
Fig.Integration.Test.Api.SettingCollectionsWithValidValuesTests 4✅ 4s
Fig.Integration.Test.Api.SettingsHistoryTests 7✅ 10s
Fig.Integration.Test.Api.SettingsRegistrationTests 39✅ 81s
Fig.Integration.Test.Api.SettingsUpdateTests 30✅ 73s
Fig.Integration.Test.Api.TimeMachineTests 10✅ 22s
Fig.Integration.Test.Api.UserIntegrationTests 15✅ 8s
Fig.Integration.Test.Api.ValueOnlyImportExportTests 28✅ 69s
Fig.Integration.Test.Api.WebHookClientTests 5✅ 1s
Fig.Integration.Test.Api.WebHookIntegrationTests 13✅ 20s
Fig.Integration.Test.Api.WebHookTests 4✅ 916ms
Fig.Integration.Test.Client.ApiOfflineTests 1✅ 12s
Fig.Integration.Test.Client.ConfigurationSectionTests 4✅ 14s
Fig.Integration.Test.Client.NestedSettingClientTests 1✅ 13ms
Fig.Integration.Test.Client.ReloadableConfigurationTests 3✅ 24ms
Fig.Integration.Test.Client.SettingLoadTypeAndTimestampTests 5✅ 35s
Fig.Integration.Test.Client.SettingsBaseTests 5✅ 12ms
Fig.Integration.Test.Client.TypeExtensionMethodsTest 33✅ 2ms

✅ Fig.Integration.Test.Api.ApiStatusTests

✅ ShallGetApiStatus

✅ Fig.Integration.Test.Api.ApiVersionTests

✅ ShallNotUpdateApiVersionOnIdenticalRegistration
✅ ShallUpdateApiVersionOnNewRegistration
✅ ShallUpdateApiVersionOnUpdatedRegistration
✅ ShallUpdateLastUpdatedDateWhenSettingsAreUpdated

✅ Fig.Integration.Test.Api.ClientDescriptionsTests

✅ GetClientDescriptions_ShouldReturnClientNamesAndDescriptions
✅ GetClientDescriptions_ShouldReturnCorrectClientData

✅ Fig.Integration.Test.Api.ClientRegistrationHealthTests

✅ ShallMaintainOriginalHealthyStatusWhenRegistrationSucceeds
✅ ShallReportHealthStatusFromClientToApi

❌ Fig.Integration.Test.Api.ClientStatusTests

✅ ShallAcceptBothCurrentAndPreviousSecretsDuringChangePeriod
✅ ShallEnableAndDisableLiveUpdate
✅ ShallFilterClientsForUser
✅ ShallGetAllInstances
✅ ShallIdentifyWhenValuesAreOutdated
✅ ShallIdentifyWhichSettingsChangedWhenValuesAreOutdated
✅ ShallInitializeTwoProviderWithDifferentNames
✅ ShallNotAcceptOldSecretAfterChangePeriodExpiry
✅ ShallNotInitializeTwoProvidersWithTheSameName
✅ ShallNotMakeUpdateAvailableIfLiveUpdateIsOff
✅ ShallNotSetLastRunSessionDisconnectedIfSessionsStillRunning
✅ ShallNotSetRestartRequiredFlagWhenDynamicallyUpdatedSettingIsUpdated
✅ ShallRemoveExpiredSessions
✅ ShallSendRestartToClient
✅ ShallSetDefaultValues
❌ ShallSetLastRunSessionDisconnectedWhenLastSessionExpires
	  Assert.That(clientStatus1!.RunSessions.Count, Is.EqualTo(2))
	  Expected: 2
	  But was:  1
	
✅ ShallSetRestartRequiredFlagWhenNonDynamicallyUpdatedSettingIsUpdated
✅ ShallSupportConcurrentRequests

✅ Fig.Integration.Test.Api.CustomActionsTests

✅ CanCompleteCustomActionFlowAfterUpdatingActions
✅ CanRegisterAndRetrieveCustomActions
✅ CanUpdateCustomActionsAndRemoveOutdatedOnes
✅ ShallCompleteFullCustomActionFlow
✅ ShallFilterExecutionHistoryByDateRange
✅ ShallHandleClientSideConfigurationProviderWithMultipleCustomActions
✅ ShallHandleConcurrentCustomActionExecutions
✅ ShallHandleCustomActionExecutionTimeout
✅ ShallHandleCustomActionWithSpecialCharactersInName
✅ ShallHandleEmptyCustomActionsList
✅ ShallRejectExecutionForNonExistentAction
✅ ShallRejectExecutionStatusForInvalidExecutionId
✅ ShallRejectRegistrationForNonExistentClient
✅ ShallRejectRegistrationWithInvalidClientSecret
✅ ShallReturnEmptyHistoryForNonExistentAction

✅ Fig.Integration.Test.Api.DataCleanupTests

✅ ShallAcceptDataCleanupConfigurationWhenAllDisabled
✅ ShallAcceptDataCleanupConfigurationWithAllOptionsEnabled
✅ ShallAcceptDataCleanupConfigurationWithSomeOptionsDisabled
✅ ShallAcceptDefaultDataCleanupConfiguration
✅ ShallAllowDataCleanupConfigurationUpdates
✅ ShallDeleteOldApiStatus
✅ ShallDeleteOldCheckpointsWhenConfigured
✅ ShallDeleteOldEventLogs
✅ ShallDeleteOldSettingHistory
✅ ShallNotDeleteDataWhenCleanupDisabled
✅ ShallNotDeleteRecentCheckpointsWhenConfigured
✅ ShallNotDeleteRecentEventLogsWhenConfigured
✅ ShallOnlyDeleteDataOlderThanConfiguredDays
✅ ShallReturnZeroWhenNoOldDataExists

✅ Fig.Integration.Test.Api.DisplayScriptTests

✅ ShallNotReturnDisplayScriptWhenDisabled
✅ ShallRegisterDisplayScript
✅ ShallUpdateDisplayScript

✅ Fig.Integration.Test.Api.EncryptionMigrationTests

✅ ShallPerformEncryptionMigrationForCheckPoints
✅ ShallPerformEncryptionMigrationForClients
✅ ShallPerformEncryptionMigrationForEventLogs
✅ ShallPerformEncryptionMigrationForWebHookClients
✅ ShallPerformSettingHistoryMigration

✅ Fig.Integration.Test.Api.EventsTests

✅ ShallFilterEventsForUser
✅ ShallFilterTimelineEventsByUserAccess
✅ ShallGetClientTimelineInDescendingOrder
✅ ShallGetClientTimelineWithClientDeletedEvents
✅ ShallGetClientTimelineWithExternallyManagedSettings
✅ ShallGetClientTimelineWithInstanceFilter
✅ ShallGetClientTimelineWithRegistrationEvents
✅ ShallGetClientTimelineWithSettingChanges
✅ ShallGetEmptyTimelineForNonexistentClient
✅ ShallGetEventLogCount
✅ ShallIncludeAllRelevantEventTypesInTimeline
✅ ShallIncludeUsernameInTimelineEvents
✅ ShallLogChangesScheduledEvents
✅ ShallLogClientDeletedEvents
✅ ShallLogClientImportedEventLog
✅ ShallLogClientInstanceCreatedEvents
✅ ShallLogConfigurationChangedEventLog
✅ ShallLogCustomActionAddedEvents
✅ ShallLogCustomActionExecutionCompletedEvents
✅ ShallLogCustomActionExecutionCompletedEventsWithFailure
✅ ShallLogCustomActionExecutionRequestedEvents
✅ ShallLogCustomActionsRemovedEvents
✅ ShallLogCustomActionUpdatedEvents
✅ ShallLogDataExportedEventLog
✅ ShallLogDataImportedEventLog
✅ ShallLogDataImportStartedEventLog
✅ ShallLogDeferredValueOnlyImport
✅ ShallLogDefinitionChangedRegistrationEvents
✅ ShallLogExpiredSessionEventLog
✅ ShallLogForEachSettingValueUpdate
✅ ShallLogHealthStatusChangedEvent
✅ ShallLogInitialRegistrationEvents
✅ ShallLogLiveReloadRequest
✅ ShallLogLoginEvents
✅ ShallLogNewSessionEventLog
✅ ShallLogNoChangeRegistrationEvents
✅ ShallLogOnWebHookSent
✅ ShallLogPasswordChangedEvents
✅ ShallLogRescheduledChangesEvents
✅ ShallLogRestartRequest
✅ ShallLogScheduledRevertChangesEvents
✅ ShallLogSettingSettingsReadEvents
✅ ShallLogSettingValueUpdatedEvents
✅ ShallLogUserCreatedEvents
✅ ShallLogUserDeletedEvents
✅ ShallLogUserUpdatedEvents
✅ ShallLogValueOnlyExport
✅ ShallLogValueOnlyImport
✅ ShallLogWhenClientSecretIsChanged
✅ ShallLogWhenDeferredImportIsApplied
✅ ShallLogWhenExternallyManagedSettingIsUpdated
✅ ShallMaskSecretValueInDataGridWhenLoggingSettingsUpdatedEvent
✅ ShallMaskSecretValueWhenLoggingSettingsUpdatedEvent
✅ ShallNotLogDataImportedEventLogIfNoClientsWereImported
✅ ShallNotLogIfValueIsUpdatedToTheSameValue
✅ ShallOnlyReturnEventsWithinTheTimeRange

✅ Fig.Integration.Test.Api.FigConfigurationTests

✅ ShallOnlyAllowConfigurationUpdatesFromAdministrators
✅ ShallPreventFileImports
✅ ShallPreventNewRegistrations
✅ ShallPreventOfflineSettings
✅ ShallPreventUpdatedRegistrations

✅ Fig.Integration.Test.Api.FileImportTests

✅ ShallImportConfigurationFromFile

✅ Fig.Integration.Test.Api.ImportExportTests

✅ ShallEncryptSecretsForExports
✅ ShallExportAndImportCompleteHeadingStructure
✅ ShallExportClient
✅ ShallExportClients
✅ ShallExportDependsOnProperties
✅ ShallExportHeadingProperties
✅ ShallExportHeadingsWithAdvancedSettings
✅ ShallExportHeadingsWithPredefinedConstructors
✅ ShallHandleHeadingExportDataContractSerialization
✅ ShallImportAndExportSecretSetting
✅ ShallImportAndExportSecretsInDataGridSetting
✅ ShallImportDependsOnPropertiesUsingClearAndImport
✅ ShallImportHeadingPropertiesUsingAddNew
✅ ShallImportHeadingPropertiesUsingClearAndImport
✅ ShallImportHeadingPropertiesUsingReplaceExisting
✅ ShallImportUsingAddNewImportType
✅ ShallImportUsingClearAndImportImportType
✅ ShallImportUsingReplaceExistingImportType
✅ ShallNotDeleteAnySettingsOnImportFailure
✅ ShallOnlyAllowExportFromAdministrators
✅ ShallOnlyAllowExportFromAuthenticatedUsers
✅ ShallOnlyExportClientsForUser
✅ ShallThrowExceptionWhenTryingToImportClientsThatDoNotMatchUserFilter
✅ ShallValidateHeadingDataDuringImport

✅ Fig.Integration.Test.Api.IndentAttributeTests

✅ IndentAttribute_EndToEndFlow_ShouldWorkCorrectly
✅ ShallExportSettingsWithIndentAttribute
✅ ShallImportSettingsWithIndentAttribute
✅ ShallRegisterSettingsWithIndentAttribute

✅ Fig.Integration.Test.Api.LookupTablesTests

✅ ShallAddLookupTable
✅ ShallCreateUserDefinedLookupTable
✅ ShallDeleteLookupTable
✅ ShallGetMultipleItems
✅ ShallHandleEmptyKeyedLookupTable
✅ ShallHandleInvalidLookupValuesInKeyedSystem
✅ ShallHandleKeyedLookupTablesWithFlattenedKeys
✅ ShallHandleKeyedLookupWithNullKeySettingName
✅ ShallHandleMultipleLevelsOfKeyedLookups
✅ ShallHandleNoMatchingLookupForIntegers
✅ ShallHandleNoMatchingLookupForStrings
✅ ShallHandleNullCurrentValue
✅ ShallHandleNullValuesInKeyedLookupTable
✅ ShallHandleProviderRegistrationWhenNoMatchingSettings
✅ ShallKeepInvalidOptionInList
✅ ShallProcessMultiLevelKeyedLookupMetadata
✅ ShallProvideLookupTableValuesWhenGettingSettings
✅ ShallSetBoolValueFromLookupTableValue
✅ ShallSetIntValueFromLookupTableValue
✅ ShallSetLongValueFromLookupTableValue
✅ ShallSetStringValueFromLookupTableValue
✅ ShallUpdateDependentValidValuesWhenKeySettingChanges
✅ ShallUpdateKeyedLookupDependentValuesFromProvider
✅ ShallUpdateLookupTable
✅ ShallUpdateSettingValuesFromProviderDefinedLookups
✅ ShallUpdateValidValuesWhenLookupTableIsUpdatedExternally
✅ ShallUseTestKeyedLookupProviderForProviderDefinedKeyedLookups
✅ ShallUseTestLookupProviderForProviderDefinedLookups
✅ ShallWorkWithLookupTablesWithoutAliases

✅ Fig.Integration.Test.Api.NestedSettingTests

✅ ShallAllowDisplayScriptsToAccessNestedSettingsByPropertyName
✅ ShallApplyUpdatedValues
✅ ShallOrderNestedSettingsBasedOnFileOrder
✅ ShallPushDefaultValuesToServer
✅ ShallSetDefaultValues

✅ Fig.Integration.Test.Api.RateLimitingTests

✅ RateLimiting_Rejection_ReturnsHelpfulMessage
✅ RateLimiting_WhenDisabled_ShouldAllowAllRequests
✅ RateLimiting_WhenEnabled_ShouldEnforceGlobalLimit

✅ Fig.Integration.Test.Api.SchedulingTests

✅ ShallApplyScheduledChangeToSpecificInstanceOnly
✅ ShallAutomaticallyApplyScheduledChanges
✅ ShallCancelRevertWhenScheduledChangeIsDeleted
✅ ShallDeleteScheduledChanges
✅ ShallGetAllScheduledChanges
✅ ShallRescheduleChanges
✅ ShallReturnUnauthorizedWhenNonAdminTriesToDeleteChanges
✅ ShallReturnUnauthorizedWhenNonAdminTriesToRescheduleChanges
✅ ShallRevertInstanceSpecificChangesOnly
✅ ShallRevertMultipleSettings
✅ ShallScheduleChangesForLaterExecution
✅ ShallScheduleChangesForSpecificInstance
✅ ShallScheduleChangesWithRevert
✅ ShallScheduleChangesWithRevertAndDelayedApply

✅ Fig.Integration.Test.Api.SecretHandlingTests

✅ ShallCorrectlyChooseWhenToRedactSecretsEvenAfterMultipleUpdates
✅ ShallHandleDefaultValuesForSecretsInDataGrids
✅ ShallNotPersistSecretsInAzureOnNewRegistrationWhenDisabled
✅ ShallNotPersistSecretsInAzureOnSettingUpdateWhenDisabled
✅ ShallNotPersistSecretsInAzureOnUpdatedRegistrationWhenDisabled
✅ ShallNotRequestSecretsFromAzureOnClientSettingsRequestWhenDisabled
✅ ShallNotRequestSecretsFromAzureWhenLoadingAllClients
✅ ShallOnlyUpdateSecretValueIfPlaceholderHasBeenChanged
✅ ShallPersistSecretsInAzureOnNewRegistrationWhenEnabled
✅ ShallPersistSecretsInAzureOnSettingUpdateWhenEnabled
✅ ShallPersistSecretsInAzureOnUpdatedRegistrationWhenEnabled
✅ ShallRequestSecretsFromAzureOnClientSettingsRequestWhenEnabled
✅ ShallReturnDataGridSecretsInPlainTextToClients
✅ ShallReturnDataGridSecretsWithPlaceholderInWebApp

✅ Fig.Integration.Test.Api.SettingCollectionsWithValidValuesTests

✅ ShallApplyLookupTableToStringList
✅ ShallApplyValidValuesToStringList
✅ ShallCorrectlyLoadAndSaveEnumsInDataGrids
✅ TaskShallApplyValidValuesToItemInObjectList

✅ Fig.Integration.Test.Api.SettingsHistoryTests

✅ ShallReturnAllHistory
✅ ShallReturnInitialRegistration
✅ ShallReturnNotFoundForInvalidClient
✅ ShallReturnNotFoundForInvalidSetting
✅ ShallReturnUnauthorizedIfClientIsNotAllowedForUser
✅ ShallSupportHistoryForInstances
✅ ShallTakeAllHistoryFromOriginalSettingWhenInstanceCreated

✅ Fig.Integration.Test.Api.SettingsRegistrationTests

✅ RegistrationShouldUpdateAllInstances
✅ SecondRegistrationShouldNotUpdateValues
✅ ShallAcceptBothCurrentAndPreviousSecretsForRegistrationDuringSecretChangePeriod
✅ ShallAcceptBothCurrentAndPreviousSecretsForSettingRetrievalDuringSecretChangePeriod
✅ ShallHandleConcurrentInstanceRegistrationsWithoutNullSettingValues
✅ ShallHandleConcurrentRegistrationWithInstanceOverrides
✅ ShallHandleDifferentCultures("ar-SA")
✅ ShallHandleDifferentCultures("de-DE")
✅ ShallHandleDifferentCultures("en-US")
✅ ShallHandleDifferentCultures("fr-FR")
✅ ShallHandleDifferentCultures("ja-JP")
✅ ShallHandleDifferentCulturesForDefaultValues("ar-SA")
✅ ShallHandleDifferentCulturesForDefaultValues("de-DE")
✅ ShallHandleDifferentCulturesForDefaultValues("en-US")
✅ ShallHandleDifferentCulturesForDefaultValues("fr-FR")
✅ ShallHandleDifferentCulturesForDefaultValues("ja-JP")
✅ ShallHandleMultipleClientsOfSameTypeRegistering
✅ ShallNotAcceptPreviousSecretForRegistrationAfterChangePeriodExpiry
✅ ShallNotAcceptPreviousSecretForSettingRetrievalAfterChangePeriodExpiry
✅ ShallNotAcceptRegistrationWithoutValidClientSecret("")
✅ ShallNotAcceptRegistrationWithoutValidClientSecret("tooshort")
✅ ShallNotAcceptRegistrationWithoutValidClientSecret(null,False)
✅ ShallNotAcceptRegistrationWithoutValidClientSecret(null)
✅ ShallNotAllowRegistrationsWithInvalidClientNames
✅ ShallNotAllowSecretChangesForNonAdministrators
✅ ShallNotAllowSettingOverridesIfClientNameDoesNotMatchRegex
✅ ShallNotAllowSettingOverridesIfDisabled
✅ ShallOnlyRegisterClientOnce
✅ ShallOnlyReturnClientsThatMatchUserFilter
✅ ShallRegisterMultipleClients
✅ ShallRegisterNestedSettings
✅ ShallRegisterSequentialSettingsWithSameNameAndDifferentTypes
✅ ShallRegisterSingleClient
✅ ShallRegisterWithSettingOverrides
✅ ShallReturnUnauthorizedForSecondRegistrationWithDifferentSecret
✅ ShallSerializeConcurrentRegistrationsForSameClient
✅ ShallSupportJsonSettings
✅ ShallUpdateSettingsDefinitionToAddSettings
✅ ShallUpdateSettingsDefinitionToRemoveSettings

✅ Fig.Integration.Test.Api.SettingsUpdateTests

✅ ShallAllowUsersToUpdateSettingsMatchingTheirClassification
✅ ShallAutomaticallyUpdateSettingsWhenChanged
✅ ShallCreateNewSettingsInstanceWhenRequested
✅ ShallHandleEnumSettings
✅ ShallHandleMultipleInstances
✅ ShallIgnoreNonMatchingSettings
✅ ShallNotClearLastChangedTimeOnSettingsRegistration
✅ ShallOnlyBePresentedSettingsWithMatchingClassifications(Functional,Technical)
✅ ShallOnlyBePresentedSettingsWithMatchingClassifications(Functional)
✅ ShallOnlyBePresentedSettingsWithMatchingClassifications(Special,Functional)
✅ ShallOnlyBePresentedSettingsWithMatchingClassifications(Special,Technical,Functional)
✅ ShallOnlyBePresentedSettingsWithMatchingClassifications(Special,Technical)
✅ ShallOnlyBePresentedSettingsWithMatchingClassifications(Special)
✅ ShallOnlyBePresentedSettingsWithMatchingClassifications(Technical)
✅ ShallOnlyPresentClientsThatContainMatchingClassificationsOfSettings
✅ ShallOnlyReturnNonEncryptedSecretSettingsToOwningClient
✅ ShallPreventUsersFromUpdatingSettingsWithClassificationsTheyDoNotHave
✅ ShallReturnErrorWhenSettingInvalidValueForSetting
✅ ShallReturnErrorWhenSettingSettingsForNonMatchingClient
✅ ShallReturnUnauthorizedWhenTryingToUpdateSettingsForClientNotMatchingUserFilter
✅ ShallSetCorrectDefaultValuesBeforeUpdate
✅ ShallSetDefaultValueForNewPropertyDuringUpdatedRegistrationWithInstances
✅ ShallSetLastChangedTimeForValue
✅ ShallSetMultiSelectListValueInDataGrid
✅ ShallUpdateAllTypes
✅ ShallUpdateAndApplySettingsWithConfigurationSectionOverrides
✅ ShallUpdateJsonValue
✅ ShallUpdateMultipleTimes
✅ ShallUpdateSettingsForSpecificInstanceOnly
✅ ShallUpdateValue

✅ Fig.Integration.Test.Api.TimeMachineTests

✅ ShallAddNoteToCheckPoint
✅ ShallApplyCheckPoint
✅ ShallCreateCheckpointForUpdatedRegistrations
✅ ShallCreateCheckpointOnClientDeleted
✅ ShallCreateCheckpointOnClientRegistration
✅ ShallCreateCheckpointOnClientSecretChanged
✅ ShallCreateCheckpointOnSettingsUpdate
✅ ShallGetCheckPointData
✅ ShallNotAllowGetCheckpointsIfNotAdmin
✅ ShallNotCheckpointOnDuplicateClientRegistration

✅ Fig.Integration.Test.Api.UserIntegrationTests

✅ ShallAcceptPreviousServerSecretWhenValidatingUserAuthentication
✅ ShallAllowUserToEditThemselves
✅ ShallCreateUser
✅ ShallDeleteUser
✅ ShallGetAllUsers
✅ ShallGetUserById
✅ ShallNotAllowOtherUserUpdatesAsUserRole
✅ ShallNotAllowUserRoleToCreateUser
✅ ShallPreventUsersFromUpgradingTheirRoleToAdministrator
✅ ShallPreventWeakPasswordsOnCreation
✅ ShallPreventWeakPasswordsOnUpdates
✅ ShallSetUserClientFilter
✅ ShallUpdateAllUserProperties
✅ ShallUpdateUserDetailsNotPassword
✅ ShallUpdateUserPassword

✅ Fig.Integration.Test.Api.ValueOnlyImportExportTests

✅ ShallApplyDeferredImportsInCorrectOrderBasedOnImportTime
✅ ShallApplyDeferredSettingsOnRegistration
✅ ShallApplyMultipleDeferImportsForNotRegisteredClients
✅ ShallApplyMultipleDeferredImportsWithMixedInstancesAndBaseClient
✅ ShallCreateInstanceOverrideWhenApplyingDeferredImportWithInstance
✅ ShallCreateMultipleInstanceOverridesWhenApplyingMultipleDeferredImportsWithDifferentInstances
✅ ShallDeferImportForNotRegisteredClients
✅ ShallDeferImportForNotRegisteredClientWithInstance
✅ ShallDeleteAllDeferredImportsAfterApplyingThemOnRegistration
✅ ShallDeleteDeferredRegistrationAfterApply
✅ ShallEncryptSecretSettingsForExport
✅ ShallExcludeEnvironmentSpecificSettingsFromExport
✅ ShallExcludeEnvironmentSpecificSettingsFromMultipleClients
✅ ShallExportAllSettingsWhenNotExcludingEnvironmentSpecific
✅ ShallExportClient
✅ ShallExportClients
✅ ShallHandleImportWithExcludedEnvironmentSpecificSettings
✅ ShallImportValueOnlySettingsForRegisteredClient
✅ ShallMaintainSettingValuesWhenExcludingEnvironmentSpecific
✅ ShallNotImportUpdateValuesInitOnlyForRegisteredClient
✅ ShallOnlyAllowExportFromAdministrators
✅ ShallOnlyAllowExportFromAuthenticatedUsers
✅ ShallOnlyReturnDeferredImportsThatMatchClientFilter
✅ ShallOnlyValueOnlyExportClientsForUser
✅ ShallPropagateExternallyManagedSettings
✅ ShallStoreDeferredImportForUpdateValuesInitOnly
✅ ShallThrowExceptionWhenTryingToValueOnlyImportClientsThatDoNotMatchUserFilter
✅ ShallUpdateAllPropertyTypes

✅ Fig.Integration.Test.Api.WebHookClientTests

✅ ShallAddWebHookClient
✅ ShallDeleteWebhookClient
✅ ShallGetAllWebHookClients
✅ ShallPreventDeletionOfClientThatHasALinkedWebHook
✅ ShallUpdateWebHookClient

✅ Fig.Integration.Test.Api.WebHookIntegrationTests

✅ ShallNotSendHealthStatusChangedWebHookIfClientNameDoesNotMatchRegex
✅ ShallNotSendSettingValueChangedWebHookIfClientMatchesButAllChangedSettingsDoNot
✅ ShallNotSendWebHookForNonUpdatedClientRegistration
✅ ShallNotSendWebHookIfClientNameDoesNotMatchRegex
✅ ShallOnlyReturnMatchingSettingsIfMoreThanOneSettingUpdated
✅ ShallSendClientStatusChangedWebHookWhenConnected
✅ ShallSendClientStatusChangedWebHookWhenDisconnected
✅ ShallSendHealthStatusChangedWebHook
✅ ShallSendMinRunSessionsWebHook
✅ ShallSendNewClientRegistrationWebHook
✅ ShallSendSettingValueChangedWebHook
✅ ShallSendUpdatedClientRegistrationWebHook
✅ ShallTestAllWebHookTypes

✅ Fig.Integration.Test.Api.WebHookTests

✅ ShallAddWebHook
✅ ShallDeleteWebhook
✅ ShallGetAllWebHooks
✅ ShallUpdateWebHook

✅ Fig.Integration.Test.Client.ApiOfflineTests

✅ ShallGetDefaultValuesIfApiCannotBeContacted

✅ Fig.Integration.Test.Client.ConfigurationSectionTests

✅ ReloadableConfigurationProviderShallRespectConfigurationSections
✅ ShallApplyConfigurationSectionsWhenFigIsOfflineAndNoBackup
✅ ShallApplyConfigurationSectionsWhenFigIsOnline
✅ ShallApplyConfigurationSectionsWhenValuesHaveBeenUpdated

✅ Fig.Integration.Test.Client.NestedSettingClientTests

✅ ReloadableConfigurationProviderShallWorkWithNestedSettings

✅ Fig.Integration.Test.Client.ReloadableConfigurationTests

✅ ShallLoadInitialSettings
✅ ShallLoadInitialValueForListCollections
✅ ShallUpdateSettingsWithNewValues

✅ Fig.Integration.Test.Client.SettingLoadTypeAndTimestampTests

✅ ShallHaveNoneLoadTypeAndNullTimestampWhenApiIsUnavailableAndNoOfflineSettings
✅ ShallHaveOfflineLoadTypeAndValidTimestampWhenUsingOfflineSettings
✅ ShallHaveValidTimestampAndServerLoadTypeWhenLoadingFromApi
✅ ShallMaintainLoadTypeConsistencyAcrossMultipleReloads
✅ ShallUpdateTimestampWhenSettingsReload

✅ Fig.Integration.Test.Client.SettingsBaseTests

✅ ShallConvertEnumSetting
✅ ShallConvertIntSetting
✅ ShallConvertListSetting
✅ ShallConvertStringSetting
✅ ShallConvertTopLevelProperties

✅ Fig.Integration.Test.Client.TypeExtensionMethodsTest

✅ ShallReturnCorrectValueForSupportedTypes(Fig.Integration.Test.Client.TypeExtensionMethodsTest+Animals,True)
✅ ShallReturnCorrectValueForSupportedTypes(Fig.Integration.Test.Client.TypeExtensionMethodsTest+SomeClass,False)
✅ ShallReturnCorrectValueForSupportedTypes(System.Boolean,True)
✅ ShallReturnCorrectValueForSupportedTypes(System.Char,False)
✅ ShallReturnCorrectValueForSupportedTypes(System.Collections.Generic.Dictionary`2[System.String,Fig.Integration.Test.Client.TypeExtensionMethodsTest+SomeClass],False)
✅ ShallReturnCorrectValueForSupportedTypes(System.Collections.Generic.Dictionary`2[System.String,System.String],False)
✅ ShallReturnCorrectValueForSupportedTypes(System.Collections.Generic.KeyValuePair`2[System.String,Fig.Integration.Test.Client.TypeExtensionMethodsTest+SomeClass],False)
✅ ShallReturnCorrectValueForSupportedTypes(System.Collections.Generic.KeyValuePair`2[System.String,System.String],False)
✅ ShallReturnCorrectValueForSupportedTypes(System.Collections.Generic.List`1[Fig.Integration.Test.Client.TypeExtensionMethodsTest+SomeClass],False)
✅ ShallReturnCorrectValueForSupportedTypes(System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],False)
✅ ShallReturnCorrectValueForSupportedTypes(System.Collections.Generic.List`1[System.String],False)
✅ ShallReturnCorrectValueForSupportedTypes(System.DateOnly,False)
✅ ShallReturnCorrectValueForSupportedTypes(System.DateTime,True)
✅ ShallReturnCorrectValueForSupportedTypes(System.Double,True)
✅ ShallReturnCorrectValueForSupportedTypes(System.Int16,False)
✅ ShallReturnCorrectValueForSupportedTypes(System.Int32,True)
✅ ShallReturnCorrectValueForSupportedTypes(System.Int64,True)
✅ ShallReturnCorrectValueForSupportedTypes(System.Single,False)
✅ ShallReturnCorrectValueForSupportedTypes(System.String,True)
✅ ShallReturnCorrectValueForSupportedTypes(System.String[],False)
✅ ShallReturnCorrectValueForSupportedTypes(System.TimeOnly,False)
✅ ShallReturnCorrectValueForSupportedTypes(System.TimeSpan,True)
✅ ShallSupportDataGridTypes(Fig.Integration.Test.Client.TypeExtensionMethodsTest+Animals,False)
✅ ShallSupportDataGridTypes(Fig.Integration.Test.Client.TypeExtensionMethodsTest+SomeClass,False)
✅ ShallSupportDataGridTypes(System.Collections.Generic.Dictionary`2[System.String,Fig.Integration.Test.Client.TypeExtensionMethodsTest+SomeClass],False)
✅ ShallSupportDataGridTypes(System.Collections.Generic.Dictionary`2[System.String,System.String],False)
✅ ShallSupportDataGridTypes(System.Collections.Generic.KeyValuePair`2[System.String,Fig.Integration.Test.Client.TypeExtensionMethodsTest+SomeClass],False)
✅ ShallSupportDataGridTypes(System.Collections.Generic.KeyValuePair`2[System.String,System.String],False)
✅ ShallSupportDataGridTypes(System.Collections.Generic.List`1[Fig.Integration.Test.Client.TypeExtensionMethodsTest+SomeClass],True)
✅ ShallSupportDataGridTypes(System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],False)
✅ ShallSupportDataGridTypes(System.Collections.Generic.List`1[System.String],True)
✅ ShallSupportDataGridTypes(System.String,False)
✅ ShallSupportDataGridTypes(System.String[],False)

✅ unit-test-results/unit-test-results.trx

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

Test suite Passed Failed Skipped Time
Fig.Unit.Test.Api.ClientComparerTests 28✅ 42ms
Fig.Unit.Test.Api.ClientRegistrationLockServiceTests 14✅ 1s
Fig.Unit.Test.Api.RateLimitingSettingsTests 3✅ 19ms
Fig.Unit.Test.Api.ValidValuesHandlerTests 5✅ 190ms
Fig.Unit.Test.Client.ApplyAutomaticHeadingGenerationTests 8✅ 67ms
Fig.Unit.Test.Client.ConfigurationProviderTests 4✅ 561ms
Fig.Unit.Test.Client.CustomCategoryAttributeTests 12✅ 8ms
Fig.Unit.Test.Client.DescriptionProviderTests 21✅ 180ms
Fig.Unit.Test.Client.FigConfigurationHealthCheckTests 8✅ 41ms
Fig.Unit.Test.Client.LookupTableAttributeTests 4✅ 10ms
Fig.Unit.Test.Client.MarkdownExtractorTests 7✅ 153ms
Fig.Unit.Test.Client.NestedSettingsAttributeInheritanceTests 21✅ 67ms
Fig.Unit.Test.Client.ResultBuilderTests 6✅ 9ms
Fig.Unit.Test.Client.Status.SettingStatusMonitorTests 3✅ 121ms
Fig.Unit.Test.Client.ValidateCountAttributeTests 39✅ 16ms
Fig.Unit.Test.Client.ValidateGreaterThanAttributeTests 19✅ 4ms
Fig.Unit.Test.Client.ValidateIsBetweenAttributeTests 16✅ 6ms
Fig.Unit.Test.Client.ValidateLessThanAttributeTests 13✅ 5ms
Fig.Unit.Test.Client.ValidateSqlServerConnectionStringAttributeTests 13✅ 13ms
Fig.Unit.Test.Client.ValidationAttributeTests 4✅ 7ms
Fig.Unit.Test.Common.ClientNameValidatorTests 3✅ 3ms
Fig.Unit.Test.Contracts.SecurityEventDataContractTests 3✅ 5ms
Fig.Unit.Test.Contracts.SettingsDefinitionDataContractTests 1✅ 24ms
Fig.Unit.Test.DatabaseMigrations.DatabaseMigrationRepositoryTests 3✅ 58ms
Fig.Unit.Test.DatabaseMigrations.DatabaseMigrationServiceTests 5✅ 48ms
Fig.Unit.Test.DatabaseMigrations.MigrationDiscoveryTests 4✅ 32ms
Fig.Unit.Test.Web.DataGridCsvHandlerTests 11✅ 138ms
Fig.Unit.Test.Web.DataGridSettingConfigurationModelTests 14✅ 56ms
Fig.Unit.Test.Web.DropDownSettingConfigurationModelTests 7✅ 20ms
Fig.Unit.Test.Web.EventDistributorTests 3✅ 7ms
Fig.Unit.Test.Web.ScriptRunnerTests 37✅ 557ms
Fig.Unit.Test.Web.SettingFilterParserTests 22✅ 24ms
Fig.Unit.Test.Web.StringBuilderExtensionMethodTests 10✅ 13ms
Fig.Unit.Test.Web.StringExtensionMethodsTests 1✅ 22ms
Fig.Unit.Test.WebHooks.SecurityEventWebHookDataTests 2✅ 1ms
Fig.Unit.Test.WebHooks.WebHookContractTests 6✅ 4ms

✅ Fig.Unit.Test.Api.ClientComparerTests

✅ Equals_BothNull_ShouldReturnTrue
✅ Equals_ComplexSettingsWithDifferentValidationRegex_ShouldReturnFalse
✅ Equals_ComplexSettingsWithMultipleProperties_ShouldCompareCorrectly
✅ Equals_DifferentClientSecrets_ShouldReturnTrue
✅ Equals_DifferentDescriptions_ShouldReturnFalse
✅ Equals_DifferentIds_ShouldReturnTrue
✅ Equals_DifferentInstances_ShouldReturnTrue
✅ Equals_DifferentNames_ShouldReturnFalse
✅ Equals_DifferentSettingCounts_ShouldReturnFalse
✅ Equals_DifferentSettingProperties_ShouldReturnFalse
✅ Equals_EmptySettings_ShouldReturnTrue
✅ Equals_FirstNull_ShouldReturnFalse
✅ Equals_IdenticalClients_ShouldReturnTrue
✅ Equals_MultipleSettingsOneModified_ShouldReturnFalse
✅ Equals_OneInstanceNullOtherNot_ShouldReturnTrue
✅ Equals_SameReference_ShouldReturnTrue
✅ Equals_SecondNull_ShouldReturnFalse
✅ Equals_SettingsAdded_ShouldReturnFalse
✅ Equals_SettingsInDifferentOrder_ShouldReturnTrue
✅ Equals_SettingsRemoved_ShouldReturnFalse
✅ Equals_WithCustomActions_ShouldIgnoreCustomActions
✅ Equals_WithDifferentLastRegistrationDates_ShouldIgnoreTimestamps
✅ Equals_WithRunSessions_ShouldIgnoreRunSessions
✅ GetHashCode_ConsistentAcrossMultipleCalls_ShouldReturnSameValue
✅ GetHashCode_DifferentDescriptions_ShouldReturnDifferentHashCodes
✅ GetHashCode_DifferentNames_ShouldReturnDifferentHashCodes
✅ GetHashCode_DifferentSettings_ShouldReturnDifferentHashCodes
✅ GetHashCode_IdenticalClients_ShouldReturnSameHashCode

✅ Fig.Unit.Test.Api.ClientRegistrationLockServiceTests

✅ AcquireLockAsync_ShouldAllowDifferentClientsToAcquireLocksConcurrently
✅ AcquireLockAsync_ShouldHandleHighConcurrency
✅ AcquireLockAsync_ShouldHandleMultipleDisposeCalls
✅ AcquireLockAsync_ShouldMaintainSeparateLocksPerClient
✅ AcquireLockAsync_ShouldMeasureWaitTime
✅ AcquireLockAsync_ShouldReleaseLockOnDispose
✅ AcquireLockAsync_ShouldRespectCancellationToken
✅ AcquireLockAsync_ShouldSerializeSameClientLocks
✅ AcquireLockAsync_ShouldThrowOnEmptyClientName
✅ CleanupUnusedLocks_ShouldHandleMultipleClients
✅ CleanupUnusedLocks_ShouldHandleRaceCondition
✅ CleanupUnusedLocks_ShouldNotRemoveLocksInUse
✅ CleanupUnusedLocks_ShouldNotRemoveRecentlyUsedLocks
✅ CleanupUnusedLocks_ShouldRemoveOldUnusedLocks

✅ Fig.Unit.Test.Api.RateLimitingSettingsTests

✅ GlobalPolicySettings_CustomValues_AreSetCorrectly
✅ GlobalPolicySettings_DefaultConstructor_SetsExpectedDefaults
✅ RateLimitingSettings_DefaultConstructor_SetsExpectedDefaults

✅ Fig.Unit.Test.Api.ValidValuesHandlerTests

✅ GetValidValues_WithDisplayValueInLookupTable_ShouldNotMarkAsInvalid
✅ GetValueFromValidValues_WithDisplayValueAndLookupKeySetting_ShouldReturnDisplayValue
✅ GetValueFromValidValues_WithDisplayValueButNoLookupKeySetting_ShouldReturnFirstValue
✅ GetValueFromValidValues_WithExactMatch_ShouldReturnExactMatch
✅ GetValueFromValidValues_WithInvalidDisplayValue_ShouldReturnFirstValue

✅ Fig.Unit.Test.Client.ApplyAutomaticHeadingGenerationTests

✅ ApplyAutomaticHeadingGeneration_ForFirstSettingWithCategory_ShouldAddHeading
✅ ApplyAutomaticHeadingGeneration_ForFirstSettingWithNewCategory_ShouldAddHeading
✅ ApplyAutomaticHeadingGeneration_ForSecondSettingWithSameCategory_ShouldNotAddHeading
✅ ApplyAutomaticHeadingGeneration_WhenDisabled_ShouldNotAddHeading
✅ ApplyAutomaticHeadingGeneration_WhenManualHeadingExists_ShouldNotOverride
✅ ApplyAutomaticHeadingGeneration_WhenNoCategoryName_ShouldNotAddHeading
✅ ApplyAutomaticHeadingGeneration_WithAdvancedSetting_ShouldInheritAdvancedFlag
✅ ApplyAutomaticHeadingGeneration_WithMultipleCategoriesInterleaved_ShouldAddHeadingOnlyForFirst

✅ Fig.Unit.Test.Client.ConfigurationProviderTests

✅ ShallHandleRestartRequest(False)
✅ ShallHandleRestartRequest(True)
✅ ShallRegisterSettingsWithApi
✅ ShallSetConfigurationCorrectly

✅ Fig.Unit.Test.Client.CustomCategoryAttributeTests

✅ CategoryAttribute_WithCustomEnumDirectly_WorksCorrectly
✅ CategoryAttribute_WithCustomEnumDirectlyInSettingsClass_ExtractsCorrectly
✅ CategoryAttribute_WithCustomEnumInSettingsClass_ExtractsCorrectly
✅ CategoryAttribute_WithCustomNameAndColor_Works
✅ CategoryAttribute_WithPredefinedCategoryEnumStillWorks
✅ CategoryAttribute_WithPredefinedEnum_StillWorks
✅ CategoryHelper_FromEnum_CreatesCorrectCategoryAttribute
✅ CategoryHelper_FromEnum_WithoutAttributes_UsesDefaults
✅ CategoryHelper_GetColorHex_ExtractsCorrectColor
✅ CategoryHelper_GetColorHex_WithoutAttribute_ReturnsNull
✅ CategoryHelper_GetName_ExtractsCorrectName
✅ CategoryHelper_GetName_WithoutAttribute_ReturnsNull

✅ Fig.Unit.Test.Client.DescriptionProviderTests

✅ GetAllMarkdownResourceKeys_ShouldDelegateToInternalResourceProvider
✅ GetDescription_WhenDescriptionDoesNotStartWithDollar_ShouldReturnDescriptionAsIs
✅ GetDescription_WhenDescriptionHasLeadingWhitespace_ShouldReturnAsIs
✅ GetDescription_WhenDescriptionStartsWithDollar_ShouldProcessResourceKey
✅ GetDescription_WhenEmptyResourceContent_ShouldNotAddDivider
✅ GetDescription_WhenMultipleResourceKeys_ShouldCombineWithDividers
✅ GetDescription_WhenOnlyWhitespaceResources_ShouldNotAddDividers
✅ GetDescription_WhenResourceKeyContainsSection_ShouldExtractSection
✅ GetDescription_WhenResourceKeyHasWhitespace_ShouldTrimCorrectly
✅ GetDescription_WhenResourceNotFound_ShouldReturnResourceKeyAndLogError
✅ GetDescription_WhenSingleEmptyResource_ShouldReturnEmpty
✅ ProcessMarkdown_ShouldConvertInternalLinksToMarkdownBold
✅ ProcessMarkdown_ShouldEmbedPngImagesAsBase64
✅ ProcessMarkdown_ShouldEmbedSvgImagesAsBase64
✅ ProcessMarkdown_ShouldHandleComplexMarkdownWithAllFeatures
✅ ProcessMarkdown_ShouldStripFigExcludeAdmonitions
✅ ProcessMarkdown_ShouldStripFrontMatter
✅ ProcessMarkdown_ShouldStripInternalAdmonitions
✅ ProcessMarkdown_WhenImageNotFound_ShouldKeepOriginalImageName
✅ ProcessMarkdown_WithExistingDataUrl_ShouldProcessAndConvertToBold
✅ ProcessMarkdown_WithPureBase64String_ShouldSkipImageProcessing

✅ Fig.Unit.Test.Client.FigConfigurationHealthCheckTests

✅ ClassLevelValidation_AppliesToAllExceptPropertyLevel
✅ ClassLevelValidation_PassesWhenAllValid
✅ MultiLevelNested_Validation_Fails
✅ MultiLevelNested_Validation_Passes
✅ NestedSetting_Validation_Fails
✅ NestedSetting_Validation_Passes
✅ PropertyLevelValidation_Fails
✅ ShallValidateAtPropertyLevelValidation_Passes

✅ Fig.Unit.Test.Client.LookupTableAttributeTests

✅ LookupTable_WithEmptyKeySettingName_ShouldNotValidate
✅ LookupTable_WithInvalidKeySettingName_ShouldThrowException
✅ LookupTable_WithNullKeySettingName_ShouldNotValidate
✅ LookupTable_WithValidKeySettingName_ShouldNotThrowException

✅ Fig.Unit.Test.Client.MarkdownExtractorTests

✅ ShallExtractContentFromHeadingWithFormattingAndEntities
✅ ShallExtractContentFromHeadingWithHtmlEntities
✅ ShallExtractContentFromHeadingWithMultipleHtmlEntities
✅ ShallExtractContentUnderHeading
✅ ShallExtractContentUnderSubHeading
✅ ShallReturnEmptyStringIfHeadingIsNotFound
✅ ShallReturnSubHeadingsUnderSelectedHeading

✅ Fig.Unit.Test.Client.NestedSettingsAttributeInheritanceTests

✅ AdvancedAttribute_OnNestedSetting_IsInheritedByChildren
✅ CategoryAttribute_OnNestedSetting_IsInheritedByChildren
✅ ConfigurationSectionOverrideAttribute_OnNestedSetting_IsInheritedByChildren
✅ DeepNesting_InheritsAttributesFromAllLevels
✅ DependsOnAttribute_OnNestedSetting_IsInheritedByChildren
✅ DirectAttributeOnChild_OverridesInheritedAttribute
✅ DisplayScriptAttribute_OnNestedSetting_IsInheritedByChildren
✅ EnvironmentSpecificAttribute_OnNestedSetting_IsInheritedByChildren
✅ GroupAttribute_OnNestedSetting_IsInheritedByChildren
✅ IndentAttribute_OnNestedSetting_IsInheritedByChildren
✅ LookupTableAttribute_OnNestedSetting_IsInheritedByChildren
✅ MultiLineAttribute_OnNestedSetting_IsInheritedByChildren
✅ MultipleInheritableAttributes_OnNestedSetting_AreAllInheritedByChildren
✅ NonInheritableAttributes_AreNotInherited
✅ SecretAttribute_OnNestedSetting_IsInheritedByChildren
✅ SettingWithoutNestedInheritance_DoesNotHaveAdvancedAttribute
✅ ValidateGreaterThanAttribute_OnNestedSetting_IsInheritedByChildren
✅ ValidateIsBetweenAttribute_OnNestedSetting_IsInheritedByChildren
✅ ValidateLessThanAttribute_OnNestedSetting_IsInheritedByChildren
✅ ValidationAttribute_OnNestedSetting_IsInheritedByChildren
✅ ValidValuesAttribute_OnNestedSetting_IsInheritedByChildren

✅ Fig.Unit.Test.Client.ResultBuilderTests

✅ CreateFailureResult_ShouldReturnFailedModel
✅ CreateSuccessResult_ShouldReturnSucceededModel
✅ WithDataGridResult_ShouldSetDataGridResult
✅ WithDataGridResult_WhenAlreadySet_ShouldThrow
✅ WithTextResult_ShouldSetTextResult
✅ WithTextResult_WhenAlreadySet_ShouldThrow

✅ Fig.Unit.Test.Client.Status.SettingStatusMonitorTests

✅ SetFailedRegistration_ShouldInjectUnhealthyStatusIntoHealthReport
✅ SetFailedRegistration_WithNoHealthReport_ShouldNotThrow
✅ SyncStatus_WithoutRegistrationFailure_ShouldPreserveOriginalHealthStatus

✅ Fig.Unit.Test.Client.ValidateCountAttributeTests

✅ ApplyToTypes_ShouldReturnCorrectTypes
✅ Constructor_BetweenConstraint_WithInvalidRange_ShouldThrowException
✅ Constructor_BetweenConstraint_WithWrongConstructor_ShouldThrowException
✅ Constructor_NonBetweenConstraint_WithBetweenConstructor_ShouldThrowException
✅ GetScript_BetweenConstraint_ShouldReturnCorrectJavaScript
✅ GetScript_ShouldReturnCorrectJavaScript(AtLeast,">=","at least")
✅ GetScript_ShouldReturnCorrectJavaScript(AtMost,"<=","at most")
✅ GetScript_ShouldReturnCorrectJavaScript(Exactly,"===","exactly")
✅ GetScript_WithSingularCount_ShouldUseSingularForm
✅ IsValid_BetweenConstraint_Various(Between,1,1,0,False,"Collection has 0 items but must contain between 1 and 1 items (inclusive)")
✅ IsValid_BetweenConstraint_Various(Between,1,1,1,True,"Valid")
✅ IsValid_BetweenConstraint_Various(Between,1,1,2,False,"Collection has 2 items but must contain between 1 and 1 items (inclusive)")
✅ IsValid_BetweenConstraint_Various(Between,2,5,1,False,"Collection has 1 item but must contain between 2 and 5 items (inclusive)")
✅ IsValid_BetweenConstraint_Various(Between,2,5,2,True,"Valid")
✅ IsValid_BetweenConstraint_Various(Between,2,5,3,True,"Valid")
✅ IsValid_BetweenConstraint_Various(Between,2,5,4,True,"Valid")
✅ IsValid_BetweenConstraint_Various(Between,2,5,5,True,"Valid")
✅ IsValid_BetweenConstraint_Various(Between,2,5,6,False,"Collection has 6 items but must contain between 2 and 5 items (inclusive)")
✅ IsValid_BetweenConstraint_WithEmptyList_ShouldWorkCorrectly
✅ IsValid_BetweenConstraint_WithHealthCheckDisabled_ShouldReturnTrue
✅ IsValid_BetweenConstraint_WithNonCollectionValue_ShouldReturnFalse
✅ IsValid_BetweenConstraint_WithNullValue_ShouldReturnFalse
✅ IsValid_Various(AtLeast,3,2,False,"Collection has 2 items but must contain at least 3 items")
✅ IsValid_Various(AtLeast,3,3,True,"Valid")
✅ IsValid_Various(AtLeast,3,4,True,"Valid")
✅ IsValid_Various(AtMost,3,2,True,"Valid")
✅ IsValid_Various(AtMost,3,3,True,"Valid")
✅ IsValid_Various(AtMost,3,4,False,"Collection has 4 items but must contain at most 3 items")
✅ IsValid_Various(Exactly,1,0,False,"Collection has 0 items but must contain exactly 1 item")
✅ IsValid_Various(Exactly,1,1,True,"Valid")
✅ IsValid_Various(Exactly,3,2,False,"Collection has 2 items but must contain exactly 3 items")
✅ IsValid_Various(Exactly,3,3,True,"Valid")
✅ IsValid_Various(Exactly,3,4,False,"Collection has 4 items but must contain exactly 3 items")
✅ IsValid_WithArray_ShouldWorkCorrectly
✅ IsValid_WithEmptyList_ShouldWorkCorrectly
✅ IsValid_WithHashSet_ShouldWorkCorrectly
✅ IsValid_WithHealthCheckDisabled_ShouldReturnTrue
✅ IsValid_WithNonCollectionValue_ShouldReturnFalse
✅ IsValid_WithNullValue_ShouldReturnFalse

✅ Fig.Unit.Test.Client.ValidateGreaterThanAttributeTests

✅ ApplyToTypes_ShouldReturnCorrectTypes
✅ GetScript_ShouldReturnCorrectJavaScript(Exclusive,"> 5","greater than 5")
✅ GetScript_ShouldReturnCorrectJavaScript(Inclusive,">= 5","greater than or equal to 5")
✅ IsValid_IntegerTypes_ShouldWorkCorrectly(4,Inclusive,False,"4 is not greater than or equal to 5")
✅ IsValid_IntegerTypes_ShouldWorkCorrectly(4L,Exclusive,False,"4 is not greater than 5")
✅ IsValid_IntegerTypes_ShouldWorkCorrectly(5,Inclusive,True,"Valid")
✅ IsValid_IntegerTypes_ShouldWorkCorrectly(5L,Inclusive,True,"Valid")
✅ IsValid_Various(10.0d,Exclusive,True,"Valid")
✅ IsValid_Various(10.0d,Inclusive,True,"Valid")
✅ IsValid_Various(3.0d,Exclusive,False,"3 is not greater than 5")
✅ IsValid_Various(3.0d,Inclusive,False,"3 is not greater than or equal to 5")
✅ IsValid_Various(4.5d,Inclusive,False,"4.5 is not greater than or equal to 5")
✅ IsValid_Various(5.0d,Exclusive,False,"5 is not greater than 5")
✅ IsValid_Various(5.0d,Inclusive,True,"Valid")
✅ IsValid_Various(5.5d,Exclusive,True,"Valid")
✅ IsValid_WithHealthCheckDisabled_ShouldReturnTrue(Exclusive)
✅ IsValid_WithHealthCheckDisabled_ShouldReturnTrue(Inclusive)
✅ IsValid_WithNullValue_ShouldReturnFalse(Exclusive," is not greater than 5")
✅ IsValid_WithNullValue_ShouldReturnFalse(Inclusive," is not greater than or equal to 5")

✅ Fig.Unit.Test.Client.ValidateIsBetweenAttributeTests

✅ ApplyToTypes_ShouldReturnCorrectTypes
✅ GetScript_Exclusive_ShouldReturnCorrectJavaScript
✅ GetScript_Inclusive_ShouldReturnCorrectJavaScript
✅ IsValid_Exclusive_WithValueAtLowerBound_ShouldReturnFalse
✅ IsValid_Exclusive_WithValueAtUpperBound_ShouldReturnFalse
✅ IsValid_Exclusive_WithValueInRange_ShouldReturnTrue
✅ IsValid_Inclusive_WithValueAtLowerBound_ShouldReturnTrue
✅ IsValid_Inclusive_WithValueAtUpperBound_ShouldReturnTrue
✅ IsValid_Inclusive_WithValueInRange_ShouldReturnTrue
✅ IsValid_WithHealthCheckDisabled_ShouldReturnTrue
✅ IsValid_WithIntegerValue_ShouldWork
✅ IsValid_WithLongValue_ShouldWork
✅ IsValid_WithNonNumericType_ShouldReturnFalse
✅ IsValid_WithNullValue_ShouldReturnFalse
✅ IsValid_WithValueAboveRange_ShouldReturnFalse
✅ IsValid_WithValueBelowRange_ShouldReturnFalse

✅ Fig.Unit.Test.Client.ValidateLessThanAttributeTests

✅ ApplyToTypes_ShouldReturnCorrectTypes
✅ GetScript_Exclusive_ShouldReturnCorrectJavaScript
✅ GetScript_Inclusive_ShouldReturnCorrectJavaScript
✅ IsValid_Exclusive_WithValueEqualToMax_ShouldReturnFalse
✅ IsValid_Exclusive_WithValueGreaterThanMax_ShouldReturnFalse
✅ IsValid_Exclusive_WithValueLessThanMax_ShouldReturnTrue
✅ IsValid_Inclusive_WithHealthCheckDisabled_ShouldReturnTrue
✅ IsValid_Inclusive_WithNullValue_ShouldReturnFalse
✅ IsValid_Inclusive_WithValueEqualToMax_ShouldReturnTrue
✅ IsValid_Inclusive_WithValueGreaterThanMax_ShouldReturnFalse
✅ IsValid_Inclusive_WithValueLessThanMax_ShouldReturnTrue
✅ IsValid_WithHealthCheckDisabled_ShouldReturnTrue
✅ IsValid_WithNullValue_ShouldReturnFalse

✅ Fig.Unit.Test.Client.ValidateSqlServerConnectionStringAttributeTests

✅ ApplyToTypes_ShouldReturnStringType
✅ GetScript_ShouldReturnCorrectJavaScript
✅ IsValid_WithEmptyString_ShouldReturnFalse
✅ IsValid_WithHealthCheckDisabled_ShouldReturnTrue
✅ IsValid_WithInvalidConnectionString_ShouldReturnFalse
✅ IsValid_WithMissingDatabase_ShouldReturnFalse
✅ IsValid_WithMissingServer_ShouldReturnFalse
✅ IsValid_WithNonStringValue_ShouldReturnFalse
✅ IsValid_WithNullValue_ShouldReturnFalse
✅ IsValid_WithValidConnectionString_ShouldReturnTrue
✅ IsValid_WithValidConnectionStringUsingAttachDBFilename_ShouldReturnTrue
✅ IsValid_WithValidConnectionStringUsingDataSource_ShouldReturnTrue
✅ IsValid_WithWhitespaceString_ShouldReturnFalse

✅ Fig.Unit.Test.Client.ValidationAttributeTests

✅ ClassLevelValidation_Is_Applied_To_Matching_Types_Without_PropertyValidation
✅ ClassLevelValidation_Is_Applied_To_Nullable_Types
✅ ClassLevelValidation_Is_Not_Applied_To_Unspecified_Types
✅ PropertyLevelValidation_Takes_Precedence_Over_ClassLevelValidation

✅ Fig.Unit.Test.Common.ClientNameValidatorTests

✅ ShallNotAcceptEmptyString
✅ ShallNotThrowExceptionForValidString
✅ ShallThrowExceptionWhenClientNameIncludesReservedCharacters

✅ Fig.Unit.Test.Contracts.SecurityEventDataContractTests

✅ SecurityEventDataContract_Constructor_SetsPropertiesCorrectly
✅ SecurityEventDataContract_Constructor_WithFailureReason_SetsAllPropertiesCorrectly
✅ SecurityEventDataContract_Constructor_WithNullValues_HandlesNullsCorrectly

✅ Fig.Unit.Test.Contracts.SettingsDefinitionDataContractTests

✅ ShallSerializeAndDeserialize

✅ Fig.Unit.Test.DatabaseMigrations.DatabaseMigrationRepositoryTests

✅ GetScriptForDatabase_ShouldReturnSqliteScript_WhenConnectionIsInMemory
✅ GetScriptForDatabase_ShouldReturnSqliteScript_WhenConnectionIsSqlite
✅ GetScriptForDatabase_ShouldReturnSqlServerScript_WhenConnectionIsSqlServer

✅ Fig.Unit.Test.DatabaseMigrations.DatabaseMigrationServiceTests

✅ RunMigrationsAsync_ShouldNotRunMigrations_WhenAnotherInstanceHandling
✅ RunMigrationsAsync_ShouldSkipExecutedMigrations
✅ RunMigrationsAsync_ShouldSkipMigration_WhenScriptIsEmpty
✅ RunMigrationsAsync_ShouldThrowException_WhenMigrationFails
✅ RunMigrationsAsync_ShouldThrowException_WhenMigrationsHaveNonSequentialNumbers

✅ Fig.Unit.Test.DatabaseMigrations.MigrationDiscoveryTests

✅ AllMigrations_ShouldHaveSequentialNumbers
✅ Migration_002_ShouldBeDiscoverable
✅ Migration_002_SqliteScript_ShouldUpdateEnableTimeMachine
✅ Migration_002_SqlServerScript_ShouldUpdateEnableTimeMachine

✅ Fig.Unit.Test.Web.DataGridCsvHandlerTests

✅ ConvertToCsv_EmptyOrNull_ReturnsNull
✅ ConvertToCsv_ValidRows_ProducesCsv
✅ ParseCsvLine_HandlesQuotesAndCommas
✅ ParseCsvLine_HandlesUnquotedData
✅ ParseCsvToRows_EmptyOrHeaderOnly_ReturnsError
✅ ParseCsvToRows_HeaderMismatch_ReturnsError
✅ ParseCsvToRows_InvalidTypeValues_ReturnsError
✅ ParseCsvToRows_ListString_ParsesList
✅ ParseCsvToRows_ParsesAllSupportedTypes
✅ ParseCsvToRows_ReadOnlyColumn_SetsNull
✅ ParseCsvToRows_RowColumnCountMismatch_ReturnsError

✅ Fig.Unit.Test.Web.DataGridSettingConfigurationModelTests

✅ EvaluateDirty_AfterMarkAsSaved_ShouldNotBeDirty
✅ EvaluateDirty_InitialState_ShouldNotBeDirty
✅ EvaluateDirty_WhenAddingRow_ShouldBeDirty
✅ EvaluateDirty_WhenModifyingCellValue_ShouldBeDirty
✅ EvaluateDirty_WhenRemovingRow_ShouldBeDirty
✅ GetChangeDiff_WhenEmptyToPopulated_ShouldShowAllAsAdded
✅ GetChangeDiff_WhenEntireDataGridReplaced_ShouldShowAllChanges
✅ GetChangeDiff_WhenFirstRowChanged_ShouldNotShowSecondRowAsRemoved
✅ GetChangeDiff_WhenNoChanges_ShouldReturnEmptyDiff
✅ GetChangeDiff_WhenPopulatedToEmpty_ShouldShowAllAsRemoved
✅ GetChangeDiff_WhenRowAddedAtBeginning_ShouldShowCorrectDiff
✅ GetChangeDiff_WhenRowRemovedFromMiddle_ShouldShowCorrectDiff
✅ GetChangeDiff_WhenRowsReordered_ShouldShowCorrectDiff
✅ GetChangeDiff_WhenSecondRowChanged_ShouldNotShowFirstRowAsRemoved

✅ Fig.Unit.Test.Web.DropDownSettingConfigurationModelTests

✅ DisplayValue_SetValue_ShouldStoreDisplayValueOnly
✅ DisplayValue_WithValidLookupValue_ShouldReturnValueWithoutPrefix
✅ GetFilteredValidValues_WithEmptyLookupValue_ShouldReturnAllOptions
✅ GetFilteredValidValues_WithInvalidLookupValue_ShouldReturnNoOptions
✅ GetFilteredValidValues_WithNoLookupKeySettingName_ShouldReturnAllOptions
✅ GetFilteredValidValues_WithNullLookupValue_ShouldReturnAllOptions
✅ GetFilteredValidValues_WithValidLookupValue_ShouldReturnFilteredOptions

✅ Fig.Unit.Test.Web.EventDistributorTests

✅ ShallCallbackMultipleSubscribers
✅ ShallCallbackSubscriber
✅ ShallNotCallbackOtherTopics

✅ Fig.Unit.Test.Web.ScriptRunnerTests

✅ ShallAllowAccessToNestedSettingsByDotNotation
✅ ShallAllowAccessToNestedSettingsByFullNameAndDotNotation
✅ ShallExecuteValidJavascript
✅ ShallHandleConflictingSettingsWithDotNotation
✅ ShallHandleInvalidJavascript
✅ ShallLoadAllSettingsIntoContext
✅ ShallNotAddValidationErrorsToDataGrid
✅ ShallNotUpdateSettingName
✅ ShallResetInfiniteLoopProtectionWithManualValueUpdate
✅ ShallReturnOriginalIfBeautifyScriptIsNotAvailable
✅ ShallUpdateAllRowsInDataGridValidValues
✅ ShallUpdateDataGridEditorLineCount
✅ ShallUpdateDataGridIsReadOnly
✅ ShallUpdateDataGridValidationErrors
✅ ShallUpdateDataGridValidValues
✅ ShallUpdateDataGridValidValuesAndValue
✅ ShallUpdateDataGridValue
✅ ShallUpdateEditorLineCount
✅ ShallUpdateSettingAdvanced
✅ ShallUpdateSettingBoolValue
✅ ShallUpdateSettingCategoryColor
✅ ShallUpdateSettingCategoryName
✅ ShallUpdateSettingDateTimeValue
✅ ShallUpdateSettingDisplayOrder
✅ ShallUpdateSettingDoubleValue
✅ ShallUpdateSettingIntValue
✅ ShallUpdateSettingIsValid
✅ ShallUpdateSettingIsValidExplanation
✅ ShallUpdateSettingLongValue
✅ ShallUpdateSettingReadOnly
✅ ShallUpdateSettingStringValue
✅ ShallUpdateSettingTimeSpanValue
✅ ShallUpdateSettingVisible
✅ ShallUpdateValidValues
✅ ShallUpdateValidValuesWithValuesFromOtherSetting
✅ ShallUpdateValueWithValuesFromOtherSetting
✅ ShallWorkWithDeeplyNestedSettingsUsingDotNotation

✅ Fig.Unit.Test.Web.SettingFilterParserTests

✅ Parse_AdvancedFalse_SetsAdvancedFilter
✅ Parse_AdvancedTrue_SetsAdvancedFilter
✅ Parse_AmbiguousPartialBool_MatchesFirstPrefix
✅ Parse_CaseInsensitivePrefixes_ParsesCorrectly
✅ Parse_CategoryFilter_SetsCategoryFilter
✅ Parse_CategoryWithSpaces_CapturesValueAfterColon
✅ Parse_Classification_CaseInsensitive_PreservesValue
✅ Parse_Classification_SetsClassification
✅ Parse_ComplexFilter_ParsesAllComponents
✅ Parse_ComplexFilterWithPartialBools_ParsesCorrectly
✅ Parse_EmptyString_ReturnsEmptyCriteria
✅ Parse_GeneralSearchTerm_AddsToGeneralSearchTerms
✅ Parse_InvalidBooleanValue_IgnoresFilter
✅ Parse_MixedFiltersAndSearchTerms_ParsesCorrectly
✅ Parse_ModifiedTrue_SetsModifiedFilter
✅ Parse_MultipleGeneralSearchTerms_AddsAll
✅ Parse_PartialBoolCaseInsensitive_ParsesCorrectly
✅ Parse_PartialBoolFalse_ParsesCorrectly
✅ Parse_PartialBoolTrue_ParsesCorrectly
✅ Parse_SecretTrue_SetsSecretFilter
✅ Parse_TextBeforeColon_TreatedAsGeneralSearch
✅ Parse_ValidFalse_SetsValidFilter

✅ Fig.Unit.Test.Web.StringBuilderExtensionMethodTests

✅ ShallAppendMarkdownHeading(1,"# Test Heading")
✅ ShallAppendMarkdownHeading(2,"## Test Heading")
✅ ShallAppendMarkdownHeading(3,"### Test Heading")
✅ ShallAppendMarkdownHeading(4,"#### Test Heading")
✅ ShallAppendMarkdownHeading(5,"##### Test Heading")
✅ ShallAppendMarkdownHeading(6,"###### Test Heading")
✅ ShallAppendMarkdownParagraph
✅ ShallAppendMarkdownProperty
✅ ShallAppendMarkdownTable_WithOrderAndSortAttributes
✅ ShallAppendMarkdownTable_WithSortAttributeDescending

✅ Fig.Unit.Test.Web.StringExtensionMethodsTests

✅ ShallStripHtmlFromMarkdownDescriptions

✅ Fig.Unit.Test.WebHooks.SecurityEventWebHookDataTests

✅ SecurityEventWebHookData_Constructor_SetsPropertiesCorrectly
✅ SecurityEventWebHookData_Constructor_WithoutFailureReason_SetsDefaultNull

✅ Fig.Unit.Test.WebHooks.WebHookContractTests

✅ ClientHealthChangedDataContract_Constructor_SetsIsTestPropertyCorrectly
✅ ClientRegistrationDataContract_Constructor_SetsIsTestPropertyCorrectly
✅ ClientStatusChangedDataContract_Constructor_SetsIsTestPropertyCorrectly
✅ MinRunSessionsDataContract_Constructor_SetsIsTestPropertyCorrectly
✅ SecurityEventDataContract_Constructor_SetsIsTestPropertyCorrectly
✅ SettingValueChangedDataContract_Constructor_SetsIsTestPropertyCorrectly

Annotations

Check failure on line 365 in src/tests/Fig.Integration.Test/Api/ClientStatusTests.cs

See this annotation in the file changed.

@github-actions github-actions / TestResults

Fig.Integration.Test.Api.ClientStatusTests ► ShallSetLastRunSessionDisconnectedWhenLastSessionExpires

Failed test found in:
  integration-test-results/integration-test-results.trx
Error:
    Assert.That(clientStatus1!.RunSessions.Count, Is.EqualTo(2))
    Expected: 2
    But was:  1
  
Raw output
  Assert.That(clientStatus1!.RunSessions.Count, Is.EqualTo(2))
  Expected: 2
  But was:  1

   at Fig.Integration.Test.Api.ClientStatusTests.ShallSetLastRunSessionDisconnectedWhenLastSessionExpires() in D:\a\fig\fig\src\tests\Fig.Integration.Test\Api\ClientStatusTests.cs:line 365
   at NUnit.Framework.Internal.TaskAwaitAdapter.GenericAdapter`1.BlockUntilCompleted()
   at NUnit.Framework.Internal.AsyncToSyncAdapter.Await[TResult](TestExecutionContext context, Func`1 invoke)
   at NUnit.Framework.Internal.Commands.TestMethodCommand.Execute(TestExecutionContext context)
   at NUnit.Framework.Internal.Commands.BeforeAndAfterTestCommand.<>c__DisplayClass1_0.<Execute>b__0()
   at NUnit.Framework.Internal.Commands.DelegatingTestCommand.RunTestMethodInThreadAbortSafeZone(TestExecutionContext context, Action action)

1)    at Fig.Integration.Test.Api.ClientStatusTests.ShallSetLastRunSessionDisconnectedWhenLastSessionExpires() in D:\a\fig\fig\src\tests\Fig.Integration.Test\Api\ClientStatusTests.cs:line 365