From 024327ffe91c7c32c66f73a9266f918cac84f99a Mon Sep 17 00:00:00 2001 From: Nicolas Constant Date: Thu, 4 Feb 2021 01:09:11 -0500 Subject: [PATCH] added ModerationRepository Tests --- .../Tools/ModerationParser.cs | 2 + .../BirdsiteLive.Domain.Tests.csproj | 4 + .../Repository/ModerationRepositoryTests.cs | 347 ++++++++++++++++++ .../Tools/ModerationParserTests.cs | 28 ++ 4 files changed, 381 insertions(+) create mode 100644 src/Tests/BirdsiteLive.Domain.Tests/Repository/ModerationRepositoryTests.cs diff --git a/src/BirdsiteLive.Domain/Tools/ModerationParser.cs b/src/BirdsiteLive.Domain/Tools/ModerationParser.cs index 888fe64..a338b20 100644 --- a/src/BirdsiteLive.Domain/Tools/ModerationParser.cs +++ b/src/BirdsiteLive.Domain/Tools/ModerationParser.cs @@ -7,6 +7,8 @@ namespace BirdsiteLive.Domain.Tools { public static string[] Parse(string entry) { + if (string.IsNullOrWhiteSpace(entry)) return new string[0]; + var separationChar = '|'; if (entry.Contains(";")) separationChar = ';'; else if (entry.Contains(",")) separationChar = ','; diff --git a/src/Tests/BirdsiteLive.Domain.Tests/BirdsiteLive.Domain.Tests.csproj b/src/Tests/BirdsiteLive.Domain.Tests/BirdsiteLive.Domain.Tests.csproj index 72a94c9..626c941 100644 --- a/src/Tests/BirdsiteLive.Domain.Tests/BirdsiteLive.Domain.Tests.csproj +++ b/src/Tests/BirdsiteLive.Domain.Tests/BirdsiteLive.Domain.Tests.csproj @@ -18,4 +18,8 @@ + + + + diff --git a/src/Tests/BirdsiteLive.Domain.Tests/Repository/ModerationRepositoryTests.cs b/src/Tests/BirdsiteLive.Domain.Tests/Repository/ModerationRepositoryTests.cs new file mode 100644 index 0000000..30ffb8e --- /dev/null +++ b/src/Tests/BirdsiteLive.Domain.Tests/Repository/ModerationRepositoryTests.cs @@ -0,0 +1,347 @@ +using BirdsiteLive.Common.Settings; +using BirdsiteLive.Domain.Repository; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace BirdsiteLive.Domain.Tests.Repository +{ + [TestClass] + public class ModerationRepositoryTests + { + #region GetModerationType + [TestMethod] + public void GetModerationType_Follower_WhiteListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + FollowersWhiteListing = "@me@domain.ext" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModerationTypeEnum.WhiteListing ,repo.GetModerationType(ModerationEntityTypeEnum.Follower)); + Assert.AreEqual(ModerationTypeEnum.None, repo.GetModerationType(ModerationEntityTypeEnum.TwitterAccount)); + #endregion + } + + [TestMethod] + public void GetModerationType_TwitterAccount_WhiteListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + TwitterAccountsWhiteListing = "@me@domain.ext" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModerationTypeEnum.None, repo.GetModerationType(ModerationEntityTypeEnum.Follower)); + Assert.AreEqual(ModerationTypeEnum.WhiteListing, repo.GetModerationType(ModerationEntityTypeEnum.TwitterAccount)); + #endregion + } + + [TestMethod] + public void GetModerationType_FollowerTwitterAccount_WhiteListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + FollowersWhiteListing = "@me@domain.ext", + TwitterAccountsWhiteListing = "@me@domain.ext" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModerationTypeEnum.WhiteListing, repo.GetModerationType(ModerationEntityTypeEnum.Follower)); + Assert.AreEqual(ModerationTypeEnum.WhiteListing, repo.GetModerationType(ModerationEntityTypeEnum.TwitterAccount)); + #endregion + } + + [TestMethod] + public void GetModerationType_Follower_BlackListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + FollowersBlackListing = "@me@domain.ext" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModerationTypeEnum.BlackListing, repo.GetModerationType(ModerationEntityTypeEnum.Follower)); + Assert.AreEqual(ModerationTypeEnum.None, repo.GetModerationType(ModerationEntityTypeEnum.TwitterAccount)); + #endregion + } + + [TestMethod] + public void GetModerationType_TwitterAccount_BlackListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + TwitterAccountsBlackListing = "@me@domain.ext" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModerationTypeEnum.None, repo.GetModerationType(ModerationEntityTypeEnum.Follower)); + Assert.AreEqual(ModerationTypeEnum.BlackListing, repo.GetModerationType(ModerationEntityTypeEnum.TwitterAccount)); + #endregion + } + + [TestMethod] + public void GetModerationType_FollowerTwitterAccount_BlackListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + FollowersBlackListing = "@me@domain.ext", + TwitterAccountsBlackListing = "@me@domain.ext" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModerationTypeEnum.BlackListing, repo.GetModerationType(ModerationEntityTypeEnum.Follower)); + Assert.AreEqual(ModerationTypeEnum.BlackListing, repo.GetModerationType(ModerationEntityTypeEnum.TwitterAccount)); + #endregion + } + + [TestMethod] + public void GetModerationType_Follower_BothListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + FollowersBlackListing = "@me@domain.ext", + FollowersWhiteListing = "@me@domain.ext", + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModerationTypeEnum.WhiteListing, repo.GetModerationType(ModerationEntityTypeEnum.Follower)); + Assert.AreEqual(ModerationTypeEnum.None, repo.GetModerationType(ModerationEntityTypeEnum.TwitterAccount)); + #endregion + } + + [TestMethod] + public void GetModerationType_TwitterAccount_BothListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + TwitterAccountsBlackListing = "@me@domain.ext", + TwitterAccountsWhiteListing = "@me@domain.ext" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModerationTypeEnum.None, repo.GetModerationType(ModerationEntityTypeEnum.Follower)); + Assert.AreEqual(ModerationTypeEnum.WhiteListing, repo.GetModerationType(ModerationEntityTypeEnum.TwitterAccount)); + #endregion + } + + [TestMethod] + public void GetModerationType_FollowerTwitterAccount_BothListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + FollowersBlackListing = "@me@domain.ext", + FollowersWhiteListing = "@me@domain.ext", + TwitterAccountsBlackListing = "@me@domain.ext", + TwitterAccountsWhiteListing = "@me@domain.ext" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModerationTypeEnum.WhiteListing, repo.GetModerationType(ModerationEntityTypeEnum.Follower)); + Assert.AreEqual(ModerationTypeEnum.WhiteListing, repo.GetModerationType(ModerationEntityTypeEnum.TwitterAccount)); + #endregion + } + #endregion + + #region CheckStatus + [TestMethod] + public void CheckStatus_Follower_WhiteListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + FollowersWhiteListing = "@me@domain.ext" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModeratedTypeEnum.WhiteListed, repo.CheckStatus(ModerationEntityTypeEnum.Follower, "@me@domain.ext")); + Assert.AreEqual(ModeratedTypeEnum.None, repo.CheckStatus(ModerationEntityTypeEnum.Follower, "@me2@domain.ext")); + #endregion + } + + [TestMethod] + public void CheckStatus_Follower_WhiteListing_Instance_Test() + { + #region Stubs + var settings = new ModerationSettings + { + FollowersWhiteListing = "domain.ext" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModeratedTypeEnum.WhiteListed, repo.CheckStatus(ModerationEntityTypeEnum.Follower, "@me@domain.ext")); + Assert.AreEqual(ModeratedTypeEnum.WhiteListed, repo.CheckStatus(ModerationEntityTypeEnum.Follower, "@me2@domain.ext")); + Assert.AreEqual(ModeratedTypeEnum.None, repo.CheckStatus(ModerationEntityTypeEnum.Follower, "@me2@domain2.ext")); + #endregion + } + + [TestMethod] + public void CheckStatus_Follower_WhiteListing_SubDomain_Test() + { + #region Stubs + var settings = new ModerationSettings + { + FollowersWhiteListing = "*.domain.ext" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModeratedTypeEnum.WhiteListed, repo.CheckStatus(ModerationEntityTypeEnum.Follower, "@me@s.domain.ext")); + Assert.AreEqual(ModeratedTypeEnum.WhiteListed, repo.CheckStatus(ModerationEntityTypeEnum.Follower, "@me2@s2.domain.ext")); + Assert.AreEqual(ModeratedTypeEnum.None, repo.CheckStatus(ModerationEntityTypeEnum.Follower, "@me2@domain.ext")); + Assert.AreEqual(ModeratedTypeEnum.None, repo.CheckStatus(ModerationEntityTypeEnum.Follower, "@me2@domain2.ext")); + #endregion + } + + [TestMethod] + public void CheckStatus_TwitterAccount_WhiteListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + TwitterAccountsWhiteListing = "handle" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModeratedTypeEnum.WhiteListed, repo.CheckStatus(ModerationEntityTypeEnum.TwitterAccount, "handle")); + Assert.AreEqual(ModeratedTypeEnum.None, repo.CheckStatus(ModerationEntityTypeEnum.TwitterAccount, "handle2")); + #endregion + } + + [TestMethod] + public void CheckStatus_Follower_BlackListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + FollowersBlackListing = "@me@domain.ext" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModeratedTypeEnum.BlackListed, repo.CheckStatus(ModerationEntityTypeEnum.Follower, "@me@domain.ext")); + Assert.AreEqual(ModeratedTypeEnum.None, repo.CheckStatus(ModerationEntityTypeEnum.Follower, "@me2@domain.ext")); + #endregion + } + + [TestMethod] + public void CheckStatus_TwitterAccount_BlackListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + TwitterAccountsBlackListing = "handle" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModeratedTypeEnum.BlackListed, repo.CheckStatus(ModerationEntityTypeEnum.TwitterAccount, "handle")); + Assert.AreEqual(ModeratedTypeEnum.None, repo.CheckStatus(ModerationEntityTypeEnum.TwitterAccount, "handle2")); + #endregion + } + + [TestMethod] + public void CheckStatus_Follower_BothListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + FollowersWhiteListing = "@me@domain.ext", + FollowersBlackListing = "@me@domain.ext" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModeratedTypeEnum.WhiteListed, repo.CheckStatus(ModerationEntityTypeEnum.Follower, "@me@domain.ext")); + Assert.AreEqual(ModeratedTypeEnum.None, repo.CheckStatus(ModerationEntityTypeEnum.Follower, "@me2@domain.ext")); + #endregion + } + + [TestMethod] + public void CheckStatus_TwitterAccount_BothListing_Test() + { + #region Stubs + var settings = new ModerationSettings + { + TwitterAccountsWhiteListing = "handle", + TwitterAccountsBlackListing = "handle" + }; + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModeratedTypeEnum.WhiteListed, repo.CheckStatus(ModerationEntityTypeEnum.TwitterAccount, "handle")); + Assert.AreEqual(ModeratedTypeEnum.None, repo.CheckStatus(ModerationEntityTypeEnum.TwitterAccount, "handle2")); + #endregion + } + + [TestMethod] + public void CheckStatus_None_Test() + { + #region Stubs + var settings = new ModerationSettings(); + #endregion + + var repo = new ModerationRepository(settings); + + #region Validations + Assert.AreEqual(ModeratedTypeEnum.None, repo.CheckStatus(ModerationEntityTypeEnum.Follower, "@handle@domain.ext")); + Assert.AreEqual(ModeratedTypeEnum.None, repo.CheckStatus(ModerationEntityTypeEnum.TwitterAccount, "handle")); + #endregion + } + #endregion + } +} \ No newline at end of file diff --git a/src/Tests/BirdsiteLive.Domain.Tests/Tools/ModerationParserTests.cs b/src/Tests/BirdsiteLive.Domain.Tests/Tools/ModerationParserTests.cs index 8284a1b..59030fa 100644 --- a/src/Tests/BirdsiteLive.Domain.Tests/Tools/ModerationParserTests.cs +++ b/src/Tests/BirdsiteLive.Domain.Tests/Tools/ModerationParserTests.cs @@ -22,6 +22,34 @@ namespace BirdsiteLive.Domain.Tests.Tools #endregion } + [TestMethod] + public void Parse_Null_Test() + { + #region Stubs + string entry = null; + #endregion + + var result = ModerationParser.Parse(entry); + + #region Validations + Assert.AreEqual(0, result.Length); + #endregion + } + + [TestMethod] + public void Parse_WhiteSpace_Test() + { + #region Stubs + var entry = " "; + #endregion + + var result = ModerationParser.Parse(entry); + + #region Validations + Assert.AreEqual(0, result.Length); + #endregion + } + [TestMethod] public void Parse_PipeSeparator_Test() {