public void UsernameMustNotAlreadyExist_UsernameExistsInService_Fails()
        {
            var mockSvc = new MockUserAccountService();
            var acct1 = new MockUserAccount(mockSvc.SecuritySettings.DefaultTenant, "u1", "p1", "*****@*****.**");
            mockSvc.MockUserAccounts(acct1);

            var acct2 = new MockUserAccount(mockSvc.SecuritySettings.DefaultTenant, "u1", "p1", "*****@*****.**");
            var result = UserAccountValidation.UsernameMustNotAlreadyExist.Validate(mockSvc.Object, acct2.Object, acct2.Object.Username);
            Assert.IsNotNull(result);
        }
        public void EmailMustNotAlreadyExist_EmailDoesNotExistsInService_Succeeds()
        {
            var mockSvc = new MockUserAccountService();
            var acct1 = new MockUserAccount(mockSvc.SecuritySettings.DefaultTenant, "u1", "p1", "*****@*****.**");
            mockSvc.MockUserAccounts(acct1);

            var acct2 = new MockUserAccount(mockSvc.SecuritySettings.DefaultTenant, "u1", "p1", "*****@*****.**");
            var result = UserAccountValidation.EmailMustNotAlreadyExist.Validate(mockSvc.Object, acct2.Object, acct2.Object.Email);
            Assert.IsNull(result);
        }
 public void ValidKey_MultipleMatches_Throws()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = a, VerificationKey = "a" },
         new UserAccount { ID = b, VerificationKey = "b" },
         new UserAccount { ID = c, VerificationKey = "b" });
     var result = sub.Object.GetByVerificationKey("b");
 }
 public void ValidKey_ReturnsCorrectResult()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = a, VerificationKey = "a" },
         new UserAccount { ID = b, VerificationKey = "b" },
         new UserAccount { ID = c, VerificationKey = "c" });
     var result = sub.Object.GetByVerificationKey("b");
     Assert.AreEqual(b, result.ID);
 }
 public void PassInvalidEmail_ReturnsNull()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = a, Tenant = sub.SecuritySettings.DefaultTenant, Email = "a" },
         new UserAccount { ID = b, Tenant = sub.SecuritySettings.DefaultTenant, Email = "b" },
         new UserAccount { ID = c, Tenant = sub.SecuritySettings.DefaultTenant, Email = "c" });
     var result = sub.Object.GetByEmail("d");
     Assert.IsNull(result);
 }
 public void PassValidEmail_MultipleMatches_Throws()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = a, Tenant = sub.SecuritySettings.DefaultTenant, Email = "a" },
         new UserAccount { ID = b, Tenant = sub.SecuritySettings.DefaultTenant, Email = "a" },
         new UserAccount { ID = c, Tenant = sub.SecuritySettings.DefaultTenant, Email = "c" });
     sub.Object.GetByEmail("a");
 }
 public void PassValidUsername_MultipleMatches_Throws()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = a, Tenant = SecuritySettings.Instance.DefaultTenant, Username = "******" },
         new UserAccount { ID = b, Tenant = SecuritySettings.Instance.DefaultTenant, Username = "******" },
         new UserAccount { ID = c, Tenant = SecuritySettings.Instance.DefaultTenant, Username = "******" });
     sub.Object.GetByUsername("a");
 }
            public void MultiTenantNotEnabled_ReturnsCorrectValues()
            {
                var sub = new MockUserAccountService();
                sub.MockUserAccounts(
                    new UserAccount { ID = a, Tenant = sub.SecuritySettings.DefaultTenant, Email = "a" },
                    new UserAccount { ID = b, Tenant = sub.SecuritySettings.DefaultTenant, Email = "b" },
                    new UserAccount { ID = c, Tenant = "t2", Email = "a" });

                Assert.IsTrue(sub.Object.EmailExists("a"));
                Assert.IsTrue(sub.Object.EmailExists("b"));
                Assert.IsTrue(sub.Object.EmailExists(sub.SecuritySettings.DefaultTenant, "a"));
                Assert.IsTrue(sub.Object.EmailExists("t1", "b"));
                Assert.IsTrue(sub.Object.EmailExists("t2", "a"));

                Assert.IsFalse(sub.Object.EmailExists("c"));
                Assert.IsFalse(sub.Object.EmailExists("t2", "c"));
            }
 public void MultiTenantEnabled_NullTenant_ReturnsEmptyResults()
 {
     var sub = new MockUserAccountService();
     sub.SecuritySettings.MultiTenant = true;
     sub.MockUserAccounts(
         new UserAccount { Tenant = "a" },
         new UserAccount { Tenant = "a" },
         new UserAccount { Tenant = "b" });
     var result = sub.Object.GetAll(null);
     Assert.AreEqual(0, result.Count());
 }
 public void ValidAccount_CallsAccount()
 {
     var sub = new MockUserAccountService();
     sub.SecuritySettings.DefaultTenant = "tenant";
     var account = new MockUserAccount("tenant", "user", "pass", "*****@*****.**");
     sub.MockUserAccounts(account.Object);
     var result = sub.Object.IsPasswordExpired("tenant", "user");
     account.Verify(x => x.GetIsPasswordExpired(It.IsAny<int>()));
 }
 public void ValidUser_RepositorySaved()
 {
     var sub = new MockUserAccountService();
     var user = new MockUserAccount(sub.SecuritySettings.DefaultTenant, "user", "foo", "*****@*****.**");
     sub.MockUserAccounts(user.Object);
     sub.Object.SetPassword("user", "pass");
     sub.UserAccountRepository.Verify(x => x.Update(user.Object));
 }
 public void ValidUser_SetPasswordCalled()
 {
     var sub = new MockUserAccountService();
     var user = new MockUserAccount(sub.SecuritySettings.DefaultTenant, "user", "foo", "*****@*****.**");
     sub.MockUserAccounts(user.Object);
     sub.Object.SetPassword("user", "pass");
     user.Verify(x => x.SetPassword("pass"));
 }
 public void NoUser_Throws()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(new UserAccount { Tenant = "tenant", Username = "******" });
     sub.Object.SetPassword("tenant", "user2", "pass");
 }
            public void UsernamesUniqueAcrossTenants_CorrectResultsReturned()
            {
                SecuritySettings.Instance.MultiTenant = true;
                SecuritySettings.Instance.UsernamesUniqueAcrossTenants = true;
                var sub = new MockUserAccountService();
                sub.MockUserAccounts(
                    new UserAccount { ID = a, Tenant = "t1", Username = "******" },
                    new UserAccount { ID = b, Tenant = "t1", Username = "******" },
                    new UserAccount { ID = c, Tenant = "t2", Username = "******" });
                Assert.IsTrue(sub.Object.UsernameExists("a"));
                Assert.IsTrue(sub.Object.UsernameExists("t1", "a"));
                Assert.IsTrue(sub.Object.UsernameExists("t2", "a"));
                Assert.IsTrue(sub.Object.UsernameExists("t3", "a"));

                Assert.IsFalse(sub.Object.UsernameExists("d"));
                Assert.IsFalse(sub.Object.UsernameExists("t1", "d"));
                Assert.IsFalse(sub.Object.UsernameExists("t2", "d"));
                Assert.IsFalse(sub.Object.UsernameExists("t3", "d"));
            }
 public void PassInvalidUsername_ReturnsNull()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = a, Tenant = SecuritySettings.Instance.DefaultTenant, Username = "******" },
         new UserAccount { ID = b, Tenant = SecuritySettings.Instance.DefaultTenant, Username = "******" },
         new UserAccount { ID = c, Tenant = SecuritySettings.Instance.DefaultTenant, Username = "******" });
     var result = sub.Object.GetByUsername("d");
     Assert.IsNull(result);
 }
 public void InvalidKey_ReturnsNull()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = a, VerificationKey = "a" },
         new UserAccount { ID = b, VerificationKey = "b" },
         new UserAccount { ID = c, VerificationKey = "c" });
     var result = sub.Object.GetByVerificationKey("d");
     Assert.IsNull(result);
 }
            public void UsernamesNotUniqueAcrossTenants_CorrectResultsReturned()
            {
                var sub = new MockUserAccountService();
                sub.SecuritySettings.MultiTenant = true;
                sub.MockUserAccounts(
                    new UserAccount { ID = a, Tenant = "t1", Username = "******" },
                    new UserAccount { ID = b, Tenant = "t1", Username = "******" },
                    new UserAccount { ID = c, Tenant = "t2", Username = "******" },
                    new UserAccount { ID = d, Tenant = sub.SecuritySettings.DefaultTenant, Username = "******" });
                Assert.IsTrue(sub.Object.UsernameExists("t1", "a"));
                Assert.IsTrue(sub.Object.UsernameExists("t1", "b"));
                Assert.IsTrue(sub.Object.UsernameExists("t2", "a"));
                Assert.IsTrue(sub.Object.UsernameExists(sub.SecuritySettings.DefaultTenant, "d"));

                Assert.IsFalse(sub.Object.UsernameExists("t1", "c"));
                Assert.IsFalse(sub.Object.UsernameExists("t2", "b"));
                Assert.IsFalse(sub.Object.UsernameExists("t2", "c"));
            }
 public void MultiTenantNotEnabled_NullTenant_ReturnsResultsForDefaultTenant()
 {
     var sub = new MockUserAccountService();
     sub.SecuritySettings.MultiTenant = false;
     sub.SecuritySettings.DefaultTenant = "a";
     sub.MockUserAccounts(
         new UserAccount { Tenant = "a" },
         new UserAccount { Tenant = "a" },
         new UserAccount { Tenant = "b" });
     
     var result = sub.Object.GetAll(null);
     
     Assert.AreEqual(2, result.Count());
 }
 public void SomeAccountsClosed_ReturnsOnlyAccountsNotClosed()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = a, Tenant = sub.SecuritySettings.DefaultTenant, IsAccountClosed = true },
         new UserAccount { ID = b, Tenant = sub.SecuritySettings.DefaultTenant, IsAccountClosed = true },
         new UserAccount { ID = c, Tenant = sub.SecuritySettings.DefaultTenant, },
         new UserAccount { ID = d, Tenant = sub.SecuritySettings.DefaultTenant, });
     var result = sub.Object.GetAll(null);
     Assert.AreEqual(2, result.Count());
     CollectionAssert.AreEquivalent(new Guid[] { c, d }, result.Select(x => x.ID).ToArray());
 }
 public void PassValidEmail_ReturnsCorrectResult()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = a, Tenant = sub.SecuritySettings.DefaultTenant, Email = "a" },
         new UserAccount { ID = b, Tenant = sub.SecuritySettings.DefaultTenant, Email = "b" },
         new UserAccount { ID = c, Tenant = sub.SecuritySettings.DefaultTenant, Email = "c" });
     var result = sub.Object.GetByEmail("b");
     Assert.AreEqual(b, result.ID);
 }
        public void PasswordMustBeDifferentThanCurrent_SamePassword_Fails()
        {
            var mockSvc = new MockUserAccountService();
            var acct = new MockUserAccount(mockSvc.SecuritySettings.DefaultTenant, "u1", "p1", "*****@*****.**");
            acct.Object.LastLogin = DateTime.Now;
            mockSvc.MockUserAccounts(acct);

            var result = UserAccountValidation.PasswordMustBeDifferentThanCurrent.Validate(mockSvc.Object, acct.Object, "p1");
            Assert.IsNotNull(result);
        }
 public void NotificationServicedCalled()
 {
     var sub = new MockUserAccountService();
     sub.NotificationService = new Mock<INotificationService>();
     var user = new MockUserAccount(SecuritySettings.Instance.DefaultTenant, "user", "foo", "*****@*****.**");
     sub.MockUserAccounts(user.Object);
     sub.Object.SetPassword("user", "pass");
     sub.NotificationService.Verify(x => x.SendPasswordChangeNotice(user.Object));
 }