diff options
author | crupest <crupest@outlook.com> | 2020-08-08 16:12:34 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2020-08-08 16:12:34 +0800 |
commit | 18065fa9d203a9187df46bf4ed6328ffdc10bdc5 (patch) | |
tree | c56b563b812d008597ee17ddaf915fb2c02b9b19 | |
parent | 5ec61fd4b5dc019893b06aae2590799db38790e7 (diff) | |
download | timeline-18065fa9d203a9187df46bf4ed6328ffdc10bdc5.tar.gz timeline-18065fa9d203a9187df46bf4ed6328ffdc10bdc5.tar.bz2 timeline-18065fa9d203a9187df46bf4ed6328ffdc10bdc5.zip |
Add unique id test in name validator.
4 files changed, 27 insertions, 0 deletions
diff --git a/Timeline.Tests/UsernameValidatorUnitTest.cs b/Timeline.Tests/UsernameValidatorUnitTest.cs index 8824362b..5b568adf 100644 --- a/Timeline.Tests/UsernameValidatorUnitTest.cs +++ b/Timeline.Tests/UsernameValidatorUnitTest.cs @@ -52,6 +52,12 @@ namespace Timeline.Tests FailAndMessage(new string('a', 40)).Should().ContainEquivalentOf("long");
}
+ [Fact(Skip = "Currently name can't be longer than 26. So this will print message of too long.")]
+ public void UniqueId()
+ {
+ FailAndMessage("e4c80127d092d9b2fc19c5e04612d4c0").Should().ContainEquivalentOf("unique id");
+ }
+
[Theory]
[InlineData(null)]
[InlineData("abc")]
diff --git a/Timeline/Models/Validation/NameValidator.cs b/Timeline/Models/Validation/NameValidator.cs index dec2b872..b74c40b7 100644 --- a/Timeline/Models/Validation/NameValidator.cs +++ b/Timeline/Models/Validation/NameValidator.cs @@ -1,10 +1,13 @@ using System.Linq;
+using System.Text.RegularExpressions;
using static Timeline.Resources.Models.Validation.NameValidator;
namespace Timeline.Models.Validation
{
public class NameValidator : Validator<string>
{
+ private static Regex UniqueIdRegex { get; } = new Regex(@"^[a-zA-Z0-9]{32}$");
+
public const int MaxLength = 26;
protected override (bool, string) DoValidate(string value)
@@ -27,6 +30,12 @@ namespace Timeline.Models.Validation }
}
+ // Currently name can't be longer than 26. So this is not needed. But reserve it for future use.
+ if (UniqueIdRegex.IsMatch(value))
+ {
+ return (false, MessageUnqiueId);
+ }
+
return (true, GetSuccessMessage());
}
}
diff --git a/Timeline/Resources/Models/Validation/NameValidator.Designer.cs b/Timeline/Resources/Models/Validation/NameValidator.Designer.cs index 5b869226..3050049e 100644 --- a/Timeline/Resources/Models/Validation/NameValidator.Designer.cs +++ b/Timeline/Resources/Models/Validation/NameValidator.Designer.cs @@ -86,5 +86,14 @@ namespace Timeline.Resources.Models.Validation { return ResourceManager.GetString("MessageTooLong", resourceCulture);
}
}
+
+ /// <summary>
+ /// Looks up a localized string similar to Name can't be of the same format of unique id..
+ /// </summary>
+ internal static string MessageUnqiueId {
+ get {
+ return ResourceManager.GetString("MessageUnqiueId", resourceCulture);
+ }
+ }
}
}
diff --git a/Timeline/Resources/Models/Validation/NameValidator.resx b/Timeline/Resources/Models/Validation/NameValidator.resx index 08a814d0..5e7e1745 100644 --- a/Timeline/Resources/Models/Validation/NameValidator.resx +++ b/Timeline/Resources/Models/Validation/NameValidator.resx @@ -126,4 +126,7 @@ <data name="MessageTooLong" xml:space="preserve">
<value>Too long, more than 26 characters is not premitted.</value>
</data>
+ <data name="MessageUnqiueId" xml:space="preserve">
+ <value>Name can't be of the same format of unique id.</value>
+ </data>
</root>
\ No newline at end of file |