Пример #1
0
            public void ThrowsIfUserDoesNotExist()
            {
                var repository = new InMemoryRepository();
                var service    = new ChatService(repository, new Mock <ICryptoService>().Object);

                Assert.Throws <InvalidOperationException>(() => service.AuthenticateUser("SomeUser", "foo"));
            }
Пример #2
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"));
            }
Пример #3
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");
            }
Пример #4
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");
            }
Пример #5
0
            public void ThrowsIfUserPasswordDoesNotMatch()
            {
                var repository = new InMemoryRepository();

                repository.Add(new ChatUser
                {
                    Name           = "SomeUser",
                    Salt           = "salt",
                    HashedPassword = "******".ToSha256("salt")
                });
                var service = new ChatService(repository, new Mock <ICryptoService>().Object);

                Assert.Throws <InvalidOperationException>(() => service.AuthenticateUser("SomeUser", "foo"));
            }
Пример #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);
            }