public void MultiTenantEnabled_NullTenant_ReturnsEmptyResults()
 {
     SecuritySettings.Instance.MultiTenant = true;
     var sub = new MockUserAccountService();
     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 UsernamesNotUniqueAcrossTenants_CorrectResultsReturned()
            {
                SecuritySettings.Instance.MultiTenant = true;
                var sub = new MockUserAccountService();
                sub.MockUserAccounts(
                    new UserAccount { ID = 1, Tenant = "t1", Username = "******" },
                    new UserAccount { ID = 2, Tenant = "t1", Username = "******" },
                    new UserAccount { ID = 3, Tenant = "t2", Username = "******" },
                    new UserAccount { ID = 4, Tenant = SecuritySettings.Instance.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(SecuritySettings.Instance.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 InvalidKey_ReturnsNull()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = 1, VerificationKey = "a" },
         new UserAccount { ID = 2, VerificationKey = "b" },
         new UserAccount { ID = 3, VerificationKey = "c" });
     var result = sub.Object.GetByVerificationKey("d");
     Assert.IsNull(result);
 }
 public void ValidKey_MultipleMatches_Throws()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = 1, VerificationKey = "a" },
         new UserAccount { ID = 2, VerificationKey = "b" },
         new UserAccount { ID = 3, VerificationKey = "b" });
     var result = sub.Object.GetByVerificationKey("b");
 }
 public void ValidKey_ReturnsCorrectResult()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = 1, VerificationKey = "a" },
         new UserAccount { ID = 2, VerificationKey = "b" },
         new UserAccount { ID = 3, VerificationKey = "c" });
     var result = sub.Object.GetByVerificationKey("b");
     Assert.AreEqual(2, result.ID);
 }
 public void PassInvalidEmail_ReturnsNull()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = 1, Tenant = SecuritySettings.Instance.DefaultTenant, Email = "a" },
         new UserAccount { ID = 2, Tenant = SecuritySettings.Instance.DefaultTenant, Email = "b" },
         new UserAccount { ID = 3, Tenant = SecuritySettings.Instance.DefaultTenant, Email = "c" });
     var result = sub.Object.GetByEmail("d");
     Assert.IsNull(result);
 }
 public void ValidUser_SetPasswordCalled()
 {
     var sub = new MockUserAccountService();
     var user = new MockUserAccount(SecuritySettings.Instance.DefaultTenant, "user", "foo", "*****@*****.**");
     sub.MockUserAccounts(user.Object);
     sub.Object.SetPassword("user", "pass");
     user.Verify(x => x.SetPassword("pass"));
 }
 public void MultiTenantNotEnabled_NullTenant_ReturnsResultsForDefaultTenant()
 {
     SecuritySettings.Instance.MultiTenant = false;
     SecuritySettings.Instance.DefaultTenant = "a";
     var sub = new MockUserAccountService();
     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 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 ValidAccount_CallsAccount()
 {
     SecuritySettings.Instance.DefaultTenant = "tenant";
     var sub = new MockUserAccountService();
     var account = new MockUserAccount("tenant", "user", "pass", "*****@*****.**");
     sub.MockUserAccounts(account.Object);
     var result = sub.Object.IsPasswordExpired("tenant", "user");
     account.Verify(x => x.IsPasswordExpired);
 }
 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 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 PassValidUsername_ReturnsCorrectResult()
 {
     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("b");
     Assert.AreEqual(b, result.ID);
 }
 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));
 }
 public void ValidUser_RepositorySaved()
 {
     var sub = new MockUserAccountService();
     var user = new MockUserAccount(SecuritySettings.Instance.DefaultTenant, "user", "foo", "*****@*****.**");
     sub.MockUserAccounts(user.Object);
     sub.Object.SetPassword("user", "pass");
     sub.UserAccountRepository.Verify(x => x.SaveChanges());
 }
            public void MultiTenantNotEnabled_ReturnsCorrectValues()
            {
                var sub = new MockUserAccountService();
                sub.MockUserAccounts(
                    new UserAccount { ID = 1, Tenant = SecuritySettings.Instance.DefaultTenant, Email = "a" },
                    new UserAccount { ID = 1, Tenant = SecuritySettings.Instance.DefaultTenant, Email = "b" },
                    new UserAccount { ID = 1, Tenant = "t2", Email = "a" });

                Assert.IsTrue(sub.Object.EmailExists("a"));
                Assert.IsTrue(sub.Object.EmailExists("b"));
                Assert.IsTrue(sub.Object.EmailExists(SecuritySettings.Instance.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 PassValidEmail_ReturnsCorrectResult()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = 1, Tenant = SecuritySettings.Instance.DefaultTenant, Email = "a" },
         new UserAccount { ID = 2, Tenant = SecuritySettings.Instance.DefaultTenant, Email = "b" },
         new UserAccount { ID = 3, Tenant = SecuritySettings.Instance.DefaultTenant, Email = "c" });
     var result = sub.Object.GetByEmail("b");
     Assert.AreEqual(2, result.ID);
 }
 public void PassValidEmail_MultipleMatches_Throws()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = 1, Tenant = SecuritySettings.Instance.DefaultTenant, Email = "a" },
         new UserAccount { ID = 2, Tenant = SecuritySettings.Instance.DefaultTenant, Email = "a" },
         new UserAccount { ID = 3, Tenant = SecuritySettings.Instance.DefaultTenant, Email = "c" });
     sub.Object.GetByEmail("a");
 }
 public void SomeAccountsClosed_ReturnsOnlyAccountsNotClosed()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(
         new UserAccount { ID = 1, Tenant = SecuritySettings.Instance.DefaultTenant, IsAccountClosed = true },
         new UserAccount { ID = 2, Tenant = SecuritySettings.Instance.DefaultTenant, IsAccountClosed = true },
         new UserAccount { ID = 3, Tenant = SecuritySettings.Instance.DefaultTenant, },
         new UserAccount { ID = 4, Tenant = SecuritySettings.Instance.DefaultTenant, });
     var result = sub.Object.GetAll(null);
     Assert.AreEqual(2, result.Count());
     CollectionAssert.AreEquivalent(new int[] { 3, 4 }, result.Select(x => x.ID).ToArray());
 }
 public void NoUser_Throws()
 {
     var sub = new MockUserAccountService();
     sub.MockUserAccounts(new UserAccount { Tenant = "tenant", Username = "******" });
     sub.Object.SetPassword("tenant", "user2", "pass");
 }