< Summary

Information
Class: LOCKnet.Data.Repositories.StoredCredentialGuard
Assembly: LOCKnet.Data
File(s): /home/runner/work/LOCKnet/LOCKnet/src/LOCKnet.Data/Repositories/StoredCredentialGuard.cs
Line coverage
89%
Covered lines: 17
Uncovered lines: 2
Coverable lines: 19
Total lines: 34
Line coverage: 89.4%
Branch coverage
86%
Covered branches: 19
Total branches: 22
Branch coverage: 86.3%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ValidateForPersistence(...)75%131284.61%
HasPlaintextMetadataResidue(...)100%1010100%

File(s)

/home/runner/work/LOCKnet/LOCKnet/src/LOCKnet.Data/Repositories/StoredCredentialGuard.cs

#LineLine coverage
 1using LOCKnet.Core.DataAbstractions;
 2
 3namespace LOCKnet.Data.Repositories;
 4
 5internal static class StoredCredentialGuard
 6{
 7  public static void ValidateForPersistence(CredentialRecord credential)
 838  {
 839    ArgumentNullException.ThrowIfNull(credential);
 10
 8311    if (credential.MetadataFormatVersion != CredentialMetadataFormatVersion.Current)
 112      throw new InvalidOperationException("Direkte Persistenz akzeptiert nur aktuelle verschluesselte Metadatenformate."
 13
 8214    if (credential.SecretFormatVersion == CredentialSecretFormatVersion.Current && credential.EncryptedPassword.Length =
 015      throw new InvalidOperationException("Aktuelle Secret-Records muessen verschluesselte Secret-Daten enthalten.");
 16
 8217    if (!Guid.TryParseExact(credential.CredentialUuid, "N", out _))
 018      throw new InvalidOperationException("Aktuelle Metadata-Records muessen eine stabile CredentialUuid im N-Format ent
 19
 8220    if (credential.EncryptedMetadata.Length == 0)
 121      throw new InvalidOperationException("Aktuelle Metadata-Records muessen verschluesselte Metadaten enthalten.");
 22
 8123    if (HasPlaintextMetadataResidue(credential))
 324      throw new InvalidOperationException("Aktuelle Metadata-Records duerfen keine Klartext-Metadaten persistieren.");
 7825  }
 26
 27  private static bool HasPlaintextMetadataResidue(CredentialRecord credential)
 8128    => !string.IsNullOrEmpty(credential.Title) ||
 8129      !string.IsNullOrEmpty(credential.Username) ||
 8130      !string.IsNullOrEmpty(credential.Url) ||
 8131      !string.IsNullOrEmpty(credential.Notes) ||
 8132      !string.IsNullOrEmpty(credential.IconKey) ||
 8133      credential.CredentialType != CredentialType.Password;
 34}