< Summary

Information
Class: LOCKnet.Data.VaultStorageBootstrap
Assembly: LOCKnet.Data
File(s): /home/runner/work/LOCKnet/LOCKnet/src/LOCKnet.Data/VaultStorageBootstrap.cs
Line coverage
95%
Covered lines: 19
Uncovered lines: 1
Coverable lines: 20
Total lines: 81
Line coverage: 95%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
.ctor(...)100%11100%
get_Storage()100%11100%
InitializeAccessibleStorage()100%22100%
CreateCredentialRepository()100%11100%
CreateMasterKeyRepository()100%11100%
CreateSettingsRepository()100%210%
CreateVaultMigrationRepository()100%11100%
FromConnectionString(...)100%11100%

File(s)

/home/runner/work/LOCKnet/LOCKnet/src/LOCKnet.Data/VaultStorageBootstrap.cs

#LineLine coverage
 1using LOCKnet.Core.DataAbstractions;
 2using LOCKnet.Data.Repositories;
 3
 4namespace LOCKnet.Data;
 5
 6/// <summary>
 7/// Bietet den aktuellen Bootstrap- und Routing-Seam fuer Storage-Modus, Datenbankinitialisierung und Repository-Erzeugu
 8/// </summary>
 9public sealed class VaultStorageBootstrap
 10{
 11  private readonly ISqliteConnectionFactory _connectionFactory;
 12
 13  /// <summary>
 14  /// Initialisiert eine neue Instanz von <see cref="VaultStorageBootstrap"/> fuer einen Vault-Pfad.
 15  /// </summary>
 16  /// <param name="databasePath">Pfad zur Vault-Datei.</param>
 17  public VaultStorageBootstrap(string databasePath)
 1918    : this(new PlainSqliteConnectionFactory(databasePath))
 1919  {
 1920  }
 21
 22  /// <summary>
 23  /// Initialisiert eine neue Instanz von <see cref="VaultStorageBootstrap"/> fuer eine zentrale Connection-Factory.
 24  /// </summary>
 25  /// <param name="connectionFactory">Factory fuer Storage-spezifische SQLite-Verbindungen.</param>
 2326  public VaultStorageBootstrap(ISqliteConnectionFactory connectionFactory)
 2327  {
 2328    ArgumentNullException.ThrowIfNull(connectionFactory);
 29
 2330    _connectionFactory = connectionFactory;
 2331    Storage = connectionFactory.Storage;
 2332  }
 33
 34  /// <summary>
 35  /// Der erkannte Storage-Descriptor fuer die aktuelle Vault.
 36  /// </summary>
 4437  public VaultStorageDescriptor Storage { get; }
 38
 39  /// <summary>
 40  /// Initialisiert den aktuell ohne Schluessel erreichbaren Storage.
 41  /// </summary>
 42  public void InitializeAccessibleStorage()
 2243  {
 2244    if (Storage.RequiresKeyAtOpen)
 145      return;
 46
 2147    new Database(_connectionFactory).Initialize();
 2248  }
 49
 50  /// <summary>
 51  /// Erzeugt das Credential-Repository fuer den aktuellen Storage-Modus.
 52  /// </summary>
 53  /// <returns>Die aktuelle Implementierung von <see cref="ICredentialRepository"/>.</returns>
 1954  public ICredentialRepository CreateCredentialRepository() => new CredentialsRepository(_connectionFactory);
 55
 56  /// <summary>
 57  /// Erzeugt das MasterKey-Repository fuer den aktuellen Storage-Modus.
 58  /// </summary>
 59  /// <returns>Die aktuelle Implementierung von <see cref="IMasterKeyRepository"/>.</returns>
 2060  public IMasterKeyRepository CreateMasterKeyRepository() => new MasterKeyRepository(_connectionFactory);
 61
 62  /// <summary>
 63  /// Erzeugt das Settings-Repository fuer den aktuellen Storage-Modus.
 64  /// </summary>
 65  /// <returns>Die aktuelle Implementierung von <see cref="ISettingsRepository"/>.</returns>
 066  public ISettingsRepository CreateSettingsRepository() => new SettingsRepository(_connectionFactory);
 67
 68  /// <summary>
 69  /// Erzeugt das Migrations-Repository fuer den aktuellen Storage-Modus.
 70  /// </summary>
 71  /// <returns>Die aktuelle Implementierung von <see cref="IVaultMigrationRepository"/>.</returns>
 1972  public IVaultMigrationRepository CreateVaultMigrationRepository() => new VaultMigrationRepository(_connectionFactory);
 73
 74  /// <summary>
 75  /// Erzeugt einen Bootstrap fuer Tests mit direktem Connection-String.
 76  /// </summary>
 77  /// <param name="connectionString">SQLite-Connection-String.</param>
 78  /// <returns>Ein Bootstrap fuer die aktuelle Plain-SQLite-Implementierung.</returns>
 79  internal static VaultStorageBootstrap FromConnectionString(string connectionString)
 380    => new(PlainSqliteConnectionFactory.FromConnectionString(connectionString));
 81}