Add integration tests for migration categories and execution
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Some checks failed
Docs CI / lint-and-preview (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
- Implemented MigrationCategoryTests to validate migration categorization for startup, release, seed, and data migrations. - Added tests for edge cases, including null, empty, and whitespace migration names. - Created StartupMigrationHostTests to verify the behavior of the migration host with real PostgreSQL instances using Testcontainers. - Included tests for migration execution, schema creation, and handling of pending release migrations. - Added SQL migration files for testing: creating a test table, adding a column, a release migration, and seeding data.
This commit is contained in:
41
src/Cli/StellaOps.Cli/Services/OfflineModeGuard.cs
Normal file
41
src/Cli/StellaOps.Cli/Services/OfflineModeGuard.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
|
||||
namespace StellaOps.Cli.Services;
|
||||
|
||||
/// <summary>
|
||||
/// Guard for operations that require network connectivity.
|
||||
/// Stub implementation - will be wired to actual offline mode detection.
|
||||
/// </summary>
|
||||
internal static class OfflineModeGuard
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets whether the CLI is currently in offline mode.
|
||||
/// </summary>
|
||||
public static bool IsOffline { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets whether network operations are allowed.
|
||||
/// </summary>
|
||||
public static bool IsNetworkAllowed() => !IsOffline;
|
||||
|
||||
/// <summary>
|
||||
/// Gets whether network operations are allowed, checking options and logging operation.
|
||||
/// </summary>
|
||||
/// <param name="options">CLI options (used to check offline mode setting).</param>
|
||||
/// <param name="operationName">Name of the operation being checked.</param>
|
||||
public static bool IsNetworkAllowed(object? options, string operationName) => !IsOffline;
|
||||
|
||||
/// <summary>
|
||||
/// Throws if the CLI is in offline mode and the operation requires network.
|
||||
/// </summary>
|
||||
/// <param name="operationName">Name of the operation being guarded.</param>
|
||||
/// <exception cref="InvalidOperationException">Thrown when offline and network required.</exception>
|
||||
public static void ThrowIfOffline(string operationName)
|
||||
{
|
||||
if (IsOffline)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
$"Operation '{operationName}' requires network connectivity but CLI is in offline mode.");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user