Saxonite v1.2.6.2
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using Sarand.Net.Standard.Base.Helpers;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Sacs.UnitTests.Net.Standard.Base.Helpers
|
||||
{
|
||||
//=======================================================================
|
||||
[TestClass]
|
||||
public class SacsDataValidationHelper_Tester
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Email addresses.
|
||||
//-------------------------------------------------------------------
|
||||
[TestMethod]
|
||||
public void IsValidEmailAddress()
|
||||
{
|
||||
// Valid addresses.
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidEmailAddress("joe@bloggs.com"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidEmailAddress("joe@bloggs.xx"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidEmailAddress("joe@bloggs.co.uk"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidEmailAddress("jb@bloggs.co.uk"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidEmailAddress("joe.bloggs@bloggs.co.uk"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidEmailAddress("joe-bloggs@bloggs.co.uk"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidEmailAddress("joe_bloggs@bloggs.co.uk"));
|
||||
|
||||
// Invalid addresses.
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidEmailAddress(null));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidEmailAddress(""));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidEmailAddress(" "));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidEmailAddress("joe"));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidEmailAddress("joe.bloggs.com"));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidEmailAddress("joe@bloggs"));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidEmailAddress("joe@blo ggs.com"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// URLs.
|
||||
//-------------------------------------------------------------------
|
||||
[TestMethod]
|
||||
public void IsValidUrl()
|
||||
{
|
||||
// Valid addresses.
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidUrl("http://joe.bloggs"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidUrl("https://joe.bloggs"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidUrl("//joe.bloggs"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidUrl("joe.bloggs"));
|
||||
|
||||
// Invalid addresses.
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidUrl(null));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidUrl(""));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidUrl(" "));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidUrl("joe"));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidUrl("joe@bloggs.com"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
[TestMethod]
|
||||
public void IsValidWikipediaUrl()
|
||||
{
|
||||
// Valid addresses.
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidWikipediaUrl("en.wikipedia.org/wiki/etc"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidWikipediaUrl("//en.wikipedia.org/wiki/etc"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidWikipediaUrl("https://en.wikipedia.org/wiki/etc"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidWikipediaUrl("en.wikipedia.org/w/index.php?etc"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidWikipediaUrl("//en.wikipedia.org/w/index.php?etc"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidWikipediaUrl("https://en.wikipedia.org/w/index.php?etc"));
|
||||
|
||||
// Invalid addresses.
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidWikipediaUrl(null));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidWikipediaUrl(""));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidWikipediaUrl(" "));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidWikipediaUrl("http://en.wikipedia.org/wiki/"));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidWikipediaUrl("http://en.wikipedia.org/w/index.php"));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidWikipediaUrl("htps://www.bbc.co.uk"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
[TestMethod]
|
||||
public void IsValidLinkedInUrl()
|
||||
{
|
||||
// Valid addresses.
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidLinkedInUrl("www.linkedin.com/in/etc"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidLinkedInUrl("//www.linkedin.com/in/etc"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidLinkedInUrl("https://www.linkedin.com/in/etc"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidLinkedInUrl("en.linkedin.com/in/etc"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidLinkedInUrl("//en.linkedin.com/in/etc"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidLinkedInUrl("https://en.linkedin.com/in/etc"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidLinkedInUrl("xx.linkedin.com/in/etc"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidLinkedInUrl("//xx.linkedin.com/in/etc"));
|
||||
Assert.IsTrue(SacsDataValidationHelper.IsValidLinkedInUrl("https://xx.linkedin.com/in/etc"));
|
||||
|
||||
// Invalid addresses.
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidLinkedInUrl(null));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidLinkedInUrl(""));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidLinkedInUrl(" "));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidLinkedInUrl("http://www.linkedin.com/in/"));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidLinkedInUrl("http://xx.linkedin.com/in/"));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidLinkedInUrl("http://xx.linkedin.com/in/"));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidLinkedInUrl("linkedin.com/in/"));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidLinkedInUrl("x.linkedin.com/in/"));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidLinkedInUrl("xxx.linkedin.com/in/"));
|
||||
Assert.IsFalse(SacsDataValidationHelper.IsValidLinkedInUrl("htps://www.bbc.co.uk"));
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
}
|
||||
//=======================================================================
|
||||
}
|
||||
@@ -11,6 +11,8 @@ namespace Sarand.Net.Standard.Base.Helpers
|
||||
//=======================================================================
|
||||
public static class SacsDataValidationHelper
|
||||
{
|
||||
//-------------------------------------------------------------------
|
||||
// Email address.
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>
|
||||
/// Validate the email address.
|
||||
@@ -33,6 +35,112 @@ namespace Sarand.Net.Standard.Base.Helpers
|
||||
return true;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// URL.
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>
|
||||
/// Validate the URL, including protocol and leading slashes ('//').
|
||||
/// </summary>
|
||||
public static bool IsCompleteUrl(String value)
|
||||
{
|
||||
if (StringUtil.IsEmpty(value)) return false;
|
||||
if (!new UrlAttribute().IsValid(value))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validate the URL.
|
||||
/// <para>NB AllowsURL to start with leading slashes ('//'), ie. no protocol ('https:') or to start with the domain (no protocol or slashes).</para>
|
||||
/// <para>NB Use IsCompleteUrl to validate that protocol and slashes are also present.</para>
|
||||
/// </summary>
|
||||
public static bool IsValidUrl(String value)
|
||||
{
|
||||
if (StringUtil.IsEmpty((value ?? "").Trim())) return false;
|
||||
|
||||
// Ensure that value has at least one dot.
|
||||
if (Regex.Matches(value, "\\.").Count == 0) return false;
|
||||
|
||||
// Ensure that value has no '@ symbols (unless encoded).
|
||||
if (Regex.Matches(value, "\\@").Count > 0) return false;
|
||||
|
||||
// URL validation.
|
||||
if (!new UrlAttribute().IsValid(value))
|
||||
{
|
||||
// URL validation insists on the full URL.
|
||||
if (!new UrlAttribute().IsValid("//" + value))
|
||||
{
|
||||
if (!new UrlAttribute().IsValid("http://" + value))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Wikipedia URLs. [[https:]//]xx.wikipedia.org...
|
||||
private static readonly Regex reWikipediaUrl = new Regex("^(?:(?:http(?:s)?:)?//)?\\w{2}" + Regex.Escape(".wikipedia.org/wiki/") + ".+", RegexOptions.IgnoreCase);
|
||||
private static readonly Regex reWikipediaUrl_Alt = new Regex("^(?:(?:http(?:s)?:)?//)?\\w{2}" + Regex.Escape(".wikipedia.org/w/index.php?") + ".+", RegexOptions.IgnoreCase);
|
||||
public static bool IsValidWikipediaUrl(String value)
|
||||
{
|
||||
if (!IsValidUrl(value)) return false;
|
||||
if (reWikipediaUrl.Matches(value).Count > 0) return true;
|
||||
if (reWikipediaUrl_Alt.Matches(value).Count > 0) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// LinkedIn URLs. [[https:]//][www|xx].linkedin.com/in...
|
||||
private static readonly Regex reLinkedInUrl = new Regex("^(?:(?:http(?:s)?:)?//)?(?:(?:www|\\w{2})\\.)?" + Regex.Escape("linkedin.com/in/") + ".+", RegexOptions.IgnoreCase);
|
||||
private static readonly Regex reLinkedInUrl_Company = new Regex("^(?:(?:http(?:s)?:)?//)?(?:(?:www|\\w{2})\\.)?" + Regex.Escape("linkedin.com/company/") + ".+", RegexOptions.IgnoreCase);
|
||||
public static bool IsValidLinkedInUrl(String value)
|
||||
{
|
||||
if (!IsValidUrl(value)) return false;
|
||||
if (reLinkedInUrl.Matches(value).Count > 0) return true;
|
||||
if (reLinkedInUrl_Company.Matches(value).Count > 0) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Twitter URLs. [[http[s]:]//][wwww.]twitter.com/...
|
||||
private static readonly Regex reTwitterUrl = new Regex("^(?:(?:http(?:s)?:)?//)?(?:www\\.)?" + Regex.Escape("twitter.com/") + ".+", RegexOptions.IgnoreCase);
|
||||
public static bool IsValidTwitterUrl(String value)
|
||||
{
|
||||
if (!IsValidUrl(value)) return false;
|
||||
if (reTwitterUrl.Matches(value).Count > 0) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Facebook URLs. [[https:]//][www.|xx.|xx-xx.]facebook.com/in...
|
||||
private static readonly Regex reFacebookUrl = new Regex("^(?:(?:http(?:s)?:)?//)?(?:(?:www|\\w{2}|\\w{2}-\\w{2})\\.)?" + Regex.Escape("facebook.com/") + ".+", RegexOptions.IgnoreCase);
|
||||
public static bool IsValidFacebookUrl(String value)
|
||||
{
|
||||
if (!IsValidUrl(value)) return false;
|
||||
if (reFacebookUrl.Matches(value).Count > 0) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
// Instagram URLs. [[https:]//][www.]instagram.com/...
|
||||
private static readonly Regex reInstagramUrl = new Regex("^(?:(?:http(?:s)?:)?//)?(?:www\\.)?" + Regex.Escape("instagram.com/") + ".+", RegexOptions.IgnoreCase);
|
||||
public static bool IsValidInstagramUrl(String value)
|
||||
{
|
||||
if (!IsValidUrl(value)) return false;
|
||||
if (reInstagramUrl.Matches(value).Count > 0) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>
|
||||
/// Ensure that the website address is a valid URL, ie. at least starts with '//'.
|
||||
/// <para>To allow the value to be used in an anchor element href attribute.</para>
|
||||
/// </summary>
|
||||
public static String QualifyAbsoluteUrl(String url)
|
||||
{
|
||||
if (!IsValidUrl(url)) return url;
|
||||
if (IsCompleteUrl(url)) return url;
|
||||
if (IsCompleteUrl("https:" + url)) return url;
|
||||
return "//" + url;
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// Phone number.
|
||||
//-------------------------------------------------------------------
|
||||
/// <summary>
|
||||
/// Validate the phone number.
|
||||
|
||||
Reference in New Issue
Block a user