예제 #1
0
            public void ThrowsIfUserPasswordNotSet()
            {
                var repository = new InMemoryRepository();
                repository.Add(new ChatUser
                {
                    Name = "foo"
                });
                var service = new ChatService(repository);

                Assert.Throws<InvalidOperationException>(() => service.AuthenticateUser("SomeUser", null));
            }
예제 #2
0
            public void ThrowsIfUserDoesNotExist()
            {
                var repository = new InMemoryRepository();
                var service = new ChatService(repository);

                Assert.Throws<InvalidOperationException>(() => service.AuthenticateUser("SomeUser", "foo"));
            }
예제 #3
0
            public void ThrowsIfUserPasswordDoesNotMatch()
            {
                var repository = new InMemoryRepository();
                repository.Add(new ChatUser
                {
                    Name = "foo",
                    HashedPassword = "******".ToSha256()
                });
                var service = new ChatService(repository);

                Assert.Throws<InvalidOperationException>(() => service.AuthenticateUser("SomeUser", "foo"));
            }
예제 #4
0
            public void ThrowsIfUserPasswordNotSet()
            {
                var repository = new InMemoryRepository();
                repository.Add(new ChatUser
                {
                    Name = "SomeUser"
                });
                var service = new ChatService(repository, new Mock<ICryptoService>().Object);

                Assert.Throws<InvalidOperationException>(() => service.AuthenticateUser("SomeUser", "password"));
            }
예제 #5
0
            public void DoesNotThrowIfPasswordsMatch()
            {
                var repository = new InMemoryRepository();
                repository.Add(new ChatUser
                {
                    Name = "foo",
                    HashedPassword = "******".ToSha256()
                });
                var service = new ChatService(repository);

                service.AuthenticateUser("foo", "passwords");
            }
예제 #6
0
            public void EnsuresStoredPasswordIsSalted()
            {
                var crypto = new Mock<ICryptoService>();
                crypto.Setup(c => c.CreateSalt()).Returns("salted");
                var repository = new InMemoryRepository();
                var user = new ChatUser
                {
                    Name = "foo",
                    HashedPassword = "******"
                };
                repository.Add(user);
                var service = new ChatService(repository, crypto.Object);

                service.AuthenticateUser("foo", "passwords");

                Assert.Equal("salted", user.Salt);
                Assert.Equal("9ce70d2ab42c9a9012ed6f80f85ab400ef1483f70e227a42b6d77faea204db26", user.HashedPassword);
            }
예제 #7
0
 public void DoesNotThrowIfSaltedPasswordsMatch()
 {
     var repository = new InMemoryRepository();
     repository.Add(new ChatUser
     {
         Name = "foo",
         Salt = "salted",
         HashedPassword = "******"
     });
     var service = new ChatService(repository, new Mock<ICryptoService>().Object);
     service.AuthenticateUser("foo", "password");
 }
예제 #8
0
 public void DoesNotThrowIfPasswordsMatch()
 {
     var repository = new InMemoryRepository();
     repository.Add(new ChatUser
     {
         Name = "foo",
         HashedPassword = "******"
     });
     var service = new ChatService(repository, new Mock<ICryptoService>().Object);
     service.AuthenticateUser("foo", "passwords");
 }
예제 #9
0
            public void ThrowsIfUserPasswordDoesNotMatch()
            {
                var repository = new InMemoryRepository();
                repository.Add(new ChatUser
                {
                    Name = "SomeUser",
                    Salt = "salt",
                    HashedPassword = "******".ToSha256("salt")
                });
                var service = new ChatService(new Mock<ICache>().Object, repository, new Mock<ICryptoService>().Object);

                Assert.Throws<InvalidOperationException>(() => service.AuthenticateUser("SomeUser", "foo"));
            }
예제 #10
0
            public void ThrowsIfUserDoesNotExist()
            {
                var repository = new InMemoryRepository();
                var service = new ChatService(new Mock<ICache>().Object, repository, new Mock<ICryptoService>().Object);

                Assert.Throws<InvalidOperationException>(() => service.AuthenticateUser("SomeUser", "foo"));
            }