using BusinessLogic.Interfaces.Repositories; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; namespace BusinessLogic.UnitTests.Security { [TestClass] [ExcludeFromCodeCoverage] public class UserStoreTests { private readonly Mock _mockUserRoleRepository = new Mock(); private readonly Mock _mockUserRepository = new Mock(); private readonly Mock _mockFundGroupFundRepository = new Mock(); private readonly Mock _mockUserTemplateRepository = new Mock(); private readonly Mock _mockFundRepository = new Mock(); private BusinessLogic.Security.UserStore GetUserStore() { return new BusinessLogic.Security.UserStore( _mockUserRoleRepository.Object, _mockUserRepository.Object, _mockFundGroupFundRepository.Object, _mockUserTemplateRepository.Object, _mockFundRepository.Object); } [TestMethod] public void CanBeInstantiated() { // Arrange try { // Act var userStore = GetUserStore(); } catch (Exception) { // Assert Assert.Fail(); } } [TestMethod] public void CanGetAUser() { // Arrange _mockUserRepository.Setup(x => x.GetUser(It.IsAny())) .Returns(new Entities.User() { UserId = 1 }); var userStore = GetUserStore(); // Act var result = userStore.GetUser("A user"); // Assert Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(Entities.User)); Assert.AreEqual(result.UserId, 1); } [TestMethod] public void CanGetUserRoles() { // Arrange _mockUserRoleRepository.Setup(x => x.GetByUsername(It.IsAny(), It.IsAny())) .Returns(new List() { "Role1", "Role2" }); var userStore = GetUserStore(); // Act var result = userStore.GetUserRoles("A user"); // Assert Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(string[])); Assert.IsTrue(result.Length == 2); } [TestMethod] public void CanGetUserFunds() { // Arrange _mockUserRepository.Setup(x => x.GetUserAccessibleFunds(It.IsAny())) .Returns(new List () { "F1", "A1" }); var userStore = GetUserStore(); // Act var result = userStore.GetUserFunds("A user"); // Assert Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(string[])); Assert.IsTrue(result.Length == 2); } [TestMethod] public void ErrorGettingUserFundsReturnsEmptyArray() { // Arrange var userStore = GetUserStore(); // Act var result = userStore.GetUserFunds("a user to fail"); // Assert Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(string[])); Assert.IsTrue(result.Length == 0); } [TestMethod] public void CanGetUserTemplate() { // Arrange _mockUserTemplateRepository.Setup(x => x.GetByUsername(It.IsAny())) .Returns(new List() { 1, 2 }); var userStore = GetUserStore(); // Act var result = userStore.GetUserTemplates("A user"); // Assert Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(int[])); } } }