From 8f56bfba2a65b4cce3c5a92bb1ba7d982b5c7609 Mon Sep 17 00:00:00 2001 From: Daan Date: Tue, 18 Jun 2024 10:30:13 +0200 Subject: [PATCH 1/2] including the UUID in templates (to be able to determine the template used in items) --- OnePassword.NET/Templates/ITemplate.cs | 5 +++++ OnePassword.NET/Templates/Template.cs | 11 ++++++++--- OnePassword.NET/Templates/TemplateInfo.cs | 13 +++++++++---- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/OnePassword.NET/Templates/ITemplate.cs b/OnePassword.NET/Templates/ITemplate.cs index 5df1dcd..6750542 100644 --- a/OnePassword.NET/Templates/ITemplate.cs +++ b/OnePassword.NET/Templates/ITemplate.cs @@ -5,6 +5,11 @@ /// public interface ITemplate : IEquatable, IComparable, IComparable { + /// + /// The template UUID. + /// + string UUID { get; } + /// /// The template name. /// diff --git a/OnePassword.NET/Templates/Template.cs b/OnePassword.NET/Templates/Template.cs index d3562dd..d871291 100644 --- a/OnePassword.NET/Templates/Template.cs +++ b/OnePassword.NET/Templates/Template.cs @@ -6,6 +6,11 @@ namespace OnePassword.Templates; /// Represents a 1Password template. public sealed class Template : ItemBase, ITemplate, ICloneable { + /// + [JsonInclude] + [JsonPropertyName("uuid")] + public string UUID { get; internal set; } = ""; + /// [JsonInclude] [JsonPropertyName("name")] @@ -67,7 +72,7 @@ public Template Clone() public bool Equals(ITemplate? other) { if (other is null) return false; - return ReferenceEquals(this, other) || string.Equals(Name, other.Name, StringComparison.OrdinalIgnoreCase); + return ReferenceEquals(this, other) || string.Equals(UUID, other.UUID, StringComparison.OrdinalIgnoreCase); } /// @@ -82,14 +87,14 @@ public int CompareTo(object? obj) public int CompareTo(ITemplate? other) { if (other is null) return 1; - return ReferenceEquals(this, other) ? 0 : string.Compare(Name, other.Name, StringComparison.Ordinal); + return ReferenceEquals(this, other) ? 0 : string.Compare(UUID, other.UUID, StringComparison.Ordinal); } /// public override int GetHashCode() => // ReSharper disable once NonReadonlyMemberInGetHashCode // Name can only be set by internal methods. - StringComparer.OrdinalIgnoreCase.GetHashCode(Name); + StringComparer.OrdinalIgnoreCase.GetHashCode(UUID) + StringComparer.OrdinalIgnoreCase.GetHashCode(Name); /// object ICloneable.Clone() => Clone(); diff --git a/OnePassword.NET/Templates/TemplateInfo.cs b/OnePassword.NET/Templates/TemplateInfo.cs index 3eda5f7..0549f52 100644 --- a/OnePassword.NET/Templates/TemplateInfo.cs +++ b/OnePassword.NET/Templates/TemplateInfo.cs @@ -3,13 +3,18 @@ /// Describes a 1Password template. public sealed class TemplateInfo : ITemplate { + /// + [JsonInclude] + [JsonPropertyName("uuid")] + public string UUID { get; internal set; } = ""; + /// [JsonInclude] [JsonPropertyName("name")] public string Name { get; internal set; } = ""; /// - public override string ToString() => Name; + public override string ToString() => $"{Name} ({UUID})"; /// Equality operator. /// The object. @@ -54,7 +59,7 @@ public sealed class TemplateInfo : ITemplate public bool Equals(ITemplate? other) { if (other is null) return false; - return ReferenceEquals(this, other) || string.Equals(Name, other.Name, StringComparison.OrdinalIgnoreCase); + return ReferenceEquals(this, other) || string.Equals(UUID, other.UUID, StringComparison.OrdinalIgnoreCase); } /// @@ -69,14 +74,14 @@ public int CompareTo(object? obj) public int CompareTo(ITemplate? other) { if (other is null) return 1; - return ReferenceEquals(this, other) ? 0 : string.Compare(Name, other.Name, StringComparison.Ordinal); + return ReferenceEquals(this, other) ? 0 : string.Compare(UUID, other.UUID, StringComparison.Ordinal); } /// public override int GetHashCode() => // ReSharper disable once NonReadonlyMemberInGetHashCode // Name can only be set by internal methods. - StringComparer.OrdinalIgnoreCase.GetHashCode(Name); + StringComparer.OrdinalIgnoreCase.GetHashCode(UUID) + StringComparer.OrdinalIgnoreCase.GetHashCode(Name); private static int NullSafeCompareTo(TemplateInfo? a, ITemplate? b) { From 443ca04711d0e87a8bea9e5397aa74b26855ec68 Mon Sep 17 00:00:00 2001 From: Jean-Sebastien Carle <29762210+jscarle@users.noreply.github.com> Date: Tue, 18 Jun 2024 09:44:38 -0400 Subject: [PATCH 2/2] Adjustments. --- OnePassword.NET.Tests/TestTemplates.cs | 9 ++++----- OnePassword.NET/Templates/ITemplate.cs | 2 +- OnePassword.NET/Templates/Template.cs | 8 ++++---- OnePassword.NET/Templates/TemplateInfo.cs | 10 +++++----- 4 files changed, 14 insertions(+), 15 deletions(-) diff --git a/OnePassword.NET.Tests/TestTemplates.cs b/OnePassword.NET.Tests/TestTemplates.cs index 48bb95c..271297b 100644 --- a/OnePassword.NET.Tests/TestTemplates.cs +++ b/OnePassword.NET.Tests/TestTemplates.cs @@ -55,15 +55,14 @@ public void GetTemplatesByEnum() Run(RunType.Test, () => { - foreach (var enumValue in Enum.GetValues(typeof(Category))) + foreach (var enumValue in Enum.GetValues()) { - var enumMember = (Category)enumValue; - if (enumMember is Category.Custom or Category.Unknown) + if (enumValue is Category.Custom or Category.Unknown) continue; - var enumMemberString = enumMember.ToEnumString(); + var enumMemberString = enumValue.ToEnumString(); - var template = OnePassword.GetTemplate(enumMember); + var template = OnePassword.GetTemplate(enumValue); Assert.Multiple(() => { diff --git a/OnePassword.NET/Templates/ITemplate.cs b/OnePassword.NET/Templates/ITemplate.cs index 6750542..c9f0837 100644 --- a/OnePassword.NET/Templates/ITemplate.cs +++ b/OnePassword.NET/Templates/ITemplate.cs @@ -8,7 +8,7 @@ public interface ITemplate : IEquatable, IComparable, ICom /// /// The template UUID. /// - string UUID { get; } + string Uuid { get; } /// /// The template name. diff --git a/OnePassword.NET/Templates/Template.cs b/OnePassword.NET/Templates/Template.cs index d871291..5b7cade 100644 --- a/OnePassword.NET/Templates/Template.cs +++ b/OnePassword.NET/Templates/Template.cs @@ -9,7 +9,7 @@ public sealed class Template : ItemBase, ITemplate, ICloneable /// [JsonInclude] [JsonPropertyName("uuid")] - public string UUID { get; internal set; } = ""; + public string Uuid { get; internal set; } = ""; /// [JsonInclude] @@ -72,7 +72,7 @@ public Template Clone() public bool Equals(ITemplate? other) { if (other is null) return false; - return ReferenceEquals(this, other) || string.Equals(UUID, other.UUID, StringComparison.OrdinalIgnoreCase); + return ReferenceEquals(this, other) || string.Equals(Uuid, other.Uuid, StringComparison.OrdinalIgnoreCase); } /// @@ -87,14 +87,14 @@ public int CompareTo(object? obj) public int CompareTo(ITemplate? other) { if (other is null) return 1; - return ReferenceEquals(this, other) ? 0 : string.Compare(UUID, other.UUID, StringComparison.Ordinal); + return ReferenceEquals(this, other) ? 0 : string.Compare(Uuid, other.Uuid, StringComparison.Ordinal); } /// public override int GetHashCode() => // ReSharper disable once NonReadonlyMemberInGetHashCode // Name can only be set by internal methods. - StringComparer.OrdinalIgnoreCase.GetHashCode(UUID) + StringComparer.OrdinalIgnoreCase.GetHashCode(Name); + StringComparer.OrdinalIgnoreCase.GetHashCode(Uuid) + StringComparer.OrdinalIgnoreCase.GetHashCode(Name); /// object ICloneable.Clone() => Clone(); diff --git a/OnePassword.NET/Templates/TemplateInfo.cs b/OnePassword.NET/Templates/TemplateInfo.cs index 0549f52..c44349f 100644 --- a/OnePassword.NET/Templates/TemplateInfo.cs +++ b/OnePassword.NET/Templates/TemplateInfo.cs @@ -6,7 +6,7 @@ public sealed class TemplateInfo : ITemplate /// [JsonInclude] [JsonPropertyName("uuid")] - public string UUID { get; internal set; } = ""; + public string Uuid { get; internal set; } = ""; /// [JsonInclude] @@ -14,7 +14,7 @@ public sealed class TemplateInfo : ITemplate public string Name { get; internal set; } = ""; /// - public override string ToString() => $"{Name} ({UUID})"; + public override string ToString() => Name; /// Equality operator. /// The object. @@ -59,7 +59,7 @@ public sealed class TemplateInfo : ITemplate public bool Equals(ITemplate? other) { if (other is null) return false; - return ReferenceEquals(this, other) || string.Equals(UUID, other.UUID, StringComparison.OrdinalIgnoreCase); + return ReferenceEquals(this, other) || string.Equals(Uuid, other.Uuid, StringComparison.OrdinalIgnoreCase); } /// @@ -74,14 +74,14 @@ public int CompareTo(object? obj) public int CompareTo(ITemplate? other) { if (other is null) return 1; - return ReferenceEquals(this, other) ? 0 : string.Compare(UUID, other.UUID, StringComparison.Ordinal); + return ReferenceEquals(this, other) ? 0 : string.Compare(Uuid, other.Uuid, StringComparison.Ordinal); } /// public override int GetHashCode() => // ReSharper disable once NonReadonlyMemberInGetHashCode // Name can only be set by internal methods. - StringComparer.OrdinalIgnoreCase.GetHashCode(UUID) + StringComparer.OrdinalIgnoreCase.GetHashCode(Name); + StringComparer.OrdinalIgnoreCase.GetHashCode(Uuid) + StringComparer.OrdinalIgnoreCase.GetHashCode(Name); private static int NullSafeCompareTo(TemplateInfo? a, ITemplate? b) {