예제 #1
0
            public void ThrowsIfNameIsNullOrEmpty()
            {
                var repository = new InMemoryRepository();
                var service = new ChatService(new Mock<ICache>().Object, repository,new Mock<ICryptoService>().Object);

                Assert.Throws<InvalidOperationException>(() => service.AddUser(null, clientId: null, userAgent: null, password: null));
                Assert.Throws<InvalidOperationException>(() => service.AddUser(String.Empty, clientId: null, userAgent: null, password: null));
            }
예제 #2
0
            public void ThrowsIfPasswordIsTooShort()
            {
                var repository = new InMemoryRepository();
                var service = new ChatService(new Mock<ICache>().Object, repository,new Mock<ICryptoService>().Object);

                Assert.Throws<InvalidOperationException>(() => service.AddUser("SomeUser", clientId: null, userAgent: null, password: "******"));
            }
예제 #3
0
            public void UnicodeNameIsValid()
            {
                // Fix issue #370
                var repository = new InMemoryRepository();
                var service = new ChatService(new Mock<ICache>().Object, repository,new Mock<ICryptoService>().Object);
                var user = service.AddUser("ТарасБуга", clientId: null, userAgent: null, password: "******");

                Assert.Equal("ТарасБуга", user.Name);
            }
예제 #4
0
            public void ThrowsIfNameInUse()
            {
                var repository = new InMemoryRepository();
                repository.Add(new ChatUser()
                {
                    Name = "taken"
                });
                var service = new ChatService(new Mock<ICache>().Object, repository,new Mock<ICryptoService>().Object);

                Assert.Throws<InvalidOperationException>(() => service.AddUser("taken", clientId: null, userAgent: null, password: null));
            }
예제 #5
0
            public void AddsUserToRepository()
            {
                var crypto = new Mock<ICryptoService>();
                crypto.Setup(c => c.CreateSalt()).Returns("salted");
                var repository = new InMemoryRepository();
                var service = new ChatService(new Mock<ICache>().Object, repository,crypto.Object);

                service.AddUser("SomeUser", clientId: null, userAgent: null, password: "******");

                var user = repository.GetUserByName("SomeUser");
                Assert.NotNull(user);
                Assert.Equal("SomeUser", user.Name);
                Assert.Equal("salted", user.Salt);
                Assert.Equal("8f5793009fe15c2227e3528d0507413a83dff10635d3a6acf1ba3229a03380d8", user.HashedPassword);
            }
예제 #6
0
            public void ThrowsIfPasswordIsTooShort()
            {
                var repository = new InMemoryRepository();
                var service = new ChatService(repository);

                Assert.Throws<InvalidOperationException>(() => service.AddUser("SomeUser", clientId: null, password: "******"));
            }
예제 #7
0
            public void ThrowsIfNameIsNullOrEmpty()
            {
                var repository = new InMemoryRepository();
                var service = new ChatService(repository);

                Assert.Throws<InvalidOperationException>(() => service.AddUser(null, clientId: null, password: null));
                Assert.Throws<InvalidOperationException>(() => service.AddUser(String.Empty, clientId: null, password: null));
            }
예제 #8
0
            public void ThrowsIfNameIsInValid()
            {
                var repository = new InMemoryRepository();
                var service = new ChatService(repository);

                Assert.Throws<InvalidOperationException>(() => service.AddUser("some in valid name", clientId: null, password: null));
            }
예제 #9
0
            public void ThrowsIfNameInUse()
            {
                var repository = new InMemoryRepository();
                repository.Add(new ChatUser()
                {
                    Name = "taken"
                });
                var service = new ChatService(repository);

                Assert.Throws<InvalidOperationException>(() => service.AddUser("taken", clientId: null, password: null));
            }
예제 #10
0
            public void AddsUserToRepository()
            {
                var repository = new InMemoryRepository();
                var service = new ChatService(repository);

                service.AddUser("SomeUser", clientId: null, password: "******");

                var user = repository.GetUserByName("SomeUser");
                Assert.NotNull(user);
                Assert.Equal("SomeUser", user.Name);
                Assert.Equal("password".ToSha256(), user.HashedPassword);
            }
예제 #11
0
            public void AddsNumberToUserNameIfTaken()
            {
                var repository = new InMemoryRepository();
                repository.Add(new ChatUser
                {
                    Name = "david",
                    Id = "1"
                });

                var service = new ChatService(repository, null);

                service.AddUser("david", "idenity", null);

                var user = repository.GetUserByIdentity("idenity");
                Assert.NotNull(user);
                Assert.Equal("david1", user.Name);
                Assert.Equal("idenity", user.Identity);
                Assert.Null(user.Email);
                Assert.Null(user.Hash);
            }
예제 #12
0
            public void AddsAuthUserToRepository()
            {
                var repository = new InMemoryRepository();
                var service = new ChatService(repository, null);

                service.AddUser("SomeUser", "identity", "email");

                var user = repository.GetUserByIdentity("identity");
                Assert.NotNull(user);
                Assert.Equal("SomeUser", user.Name);
                Assert.Equal("identity", user.Identity);
                Assert.Equal("email", user.Email);
                Assert.Equal("0c83f57c786a0b4a39efab23731c7ebc", user.Hash);
            }