Ejemplo n.º 1
0
        public void Invoke_ValidData_AddsDomainToDatabaseWithCorrectValues()
        {
            // prepare
            var domainData = new DomainModel
            {
                Name = "testdomain"
            };

            DataAccess.Models.Domain domainSaved = null;

            var mockedDomainrepository = new Mock <IDomainRepository>();

            mockedDomainrepository.Setup(r => r.Add(It.IsAny <DataAccess.Models.Domain>()))
            .Callback <DataAccess.Models.Domain>(u => domainSaved = u);
            var mockedUnitOfWork = new Mock <IUnitOfWork>();

            var action = new AddNewDomain(mockedDomainrepository.Object, mockedUnitOfWork.Object);

            // action
            action.Invoke(domainData, Guid.NewGuid());

            // assert
            mockedDomainrepository.Verify(r => r.Add(It.IsAny <DataAccess.Models.Domain>()), Times.Once());
            mockedUnitOfWork.Verify(r => r.Save(), Times.Exactly(1));
            Assert.Equal("testdomain", domainSaved.Name);
        }
Ejemplo n.º 2
0
        public void Invoke_WrongDomain_ReturnsNull()
        {
            // prepare
            var domainInDatabase = new DataAccess.Models.Domain
            {
                Name = "Database Domain"
            };

            var mockedUserRepository   = new Mock <IUserRepository>();
            var mockedDomainRepository = new Mock <IDomainRepository>();
            var findDomainResult       = new List <DataAccess.Models.Domain> {
                domainInDatabase
            };

            mockedDomainRepository.Setup(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.Domain, bool> > >()))
            .Returns(findDomainResult.AsQueryable);
            var action = new GetUserByEmail(mockedUserRepository.Object, mockedDomainRepository.Object);

            // action
            var user = action.Invoke("*****@*****.**", "Database Domain");

            // check
            Assert.Null(user);
            mockedUserRepository.Verify(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.User, bool> > >()), Times.Once);
            mockedDomainRepository.Verify(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.Domain, bool> > >()), Times.Once);
        }
Ejemplo n.º 3
0
        public void Invoke_ValidData_ReturnsCorrectModel()
        {
            var id           = Guid.NewGuid();
            var domainFromDb = new DataAccess.Models.Domain
            {
                Id         = id,
                Name       = "Name",
                CreatedOn  = DateTime.MinValue,
                ModifiedOn = DateTime.MinValue,
                DeletedOn  = null
            };

            // prepare
            var findByResult = new List <DataAccess.Models.Domain> {
                domainFromDb
            };

            var mockedDomainRepository = new Mock <IDomainRepository>();

            mockedDomainRepository.Setup(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.Domain, bool> > >()))
            .Returns(findByResult.AsQueryable());
            var action = new GetDomainByName(mockedDomainRepository.Object);

            // action
            var domain = action.Invoke(id.ToString());

            // check
            Assert.Equal(id, domain.Id);
            Assert.Equal("Name", domain.Name);
            Assert.Equal(DateTime.MinValue, domain.CreatedOn);
            Assert.Equal(DateTime.MinValue, domain.ModifiedOn);
            Assert.Null(domain.DeletedOn);
            mockedDomainRepository.Verify(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.Domain, bool> > >()), Times.Once);
        }
Ejemplo n.º 4
0
        public void Invoke_NoUser_AddNorSaveAreCalled()
        {
            // prepare
            var roomToAdd = new RoomModel {
                Name = "TestRoom"
            };
            var domain = new DataAccess.Models.Domain
            {
                Name = "Test Domain"
            };

            var mockedRoomRepository       = new Mock <IRoomRepository>();
            var mockedUserRepo             = new Mock <IUserRepository>();
            var mockedUserRoomRepository   = new Mock <IUserRoomRepository>();
            var mockedDomainRoomRepository = new Mock <IDomainRepository>();

            mockedDomainRoomRepository.Setup(x => x.GetById(It.IsAny <Guid>())).Returns(domain);
            var mockedUnitOfWork = new Mock <IUnitOfWork>();

            var action = new AddNewRoom(mockedRoomRepository.Object, mockedUserRepo.Object, mockedUserRoomRepository.Object, mockedDomainRoomRepository.Object, mockedUnitOfWork.Object);

            // action
            var actionResult = action.Invoke(roomToAdd, Guid.NewGuid(), Guid.NewGuid());

            // assert
            Assert.Equal(Guid.Empty, actionResult);
            mockedDomainRoomRepository.Verify(r => r.GetById(It.IsAny <Guid>()), Times.Once);
            mockedUserRepo.Verify(r => r.GetById(It.IsAny <Guid>()), Times.Once);
            mockedRoomRepository.Verify(r => r.Add(It.IsAny <DataAccess.Models.Room>()), Times.Never);
            mockedUnitOfWork.Verify(r => r.Save(), Times.Never);
        }
Ejemplo n.º 5
0
        public void Invoke_EmptyUser_ReturnsNull()
        {
            // prepare
            var domain = new DataAccess.Models.Domain
            {
                Name = "Test Domain"
            };

            var mockedUserRepository = new Mock <IUserRepository>();

            var findByResult = new List <DataAccess.Models.Domain> {
                domain
            };
            var mockedDomainRepository = new Mock <IDomainRepository>();

            mockedDomainRepository.Setup(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.Domain, bool> > >()))
            .Returns(findByResult.AsQueryable);

            var action = new AuthenticateUser(mockedUserRepository.Object, mockedDomainRepository.Object);

            // action
            var user = action.Invoke("*****@*****.**", "test", "123");

            // check
            Assert.Null(user);
            mockedDomainRepository.Verify(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.Domain, bool> > >()), Times.Once);
            mockedUserRepository.Verify(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.User, bool> > >()), Times.Once);
        }
        public void Invoke_ValidData_ReturnsCorrectModel()
        {
            var domainFromDb = new DataAccess.Models.Domain
            {
                Id   = Guid.NewGuid(),
                Name = "Name"
            };

            // prepare
            var findByResult = new List <DataAccess.Models.Domain> {
                domainFromDb
            };
            var mockedDomainRepository = new Mock <IDomainRepository>();

            mockedDomainRepository.Setup(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.Domain, bool> > >()))
            .Returns(findByResult.AsQueryable);
            var action = new CheckDomainExistsByName(mockedDomainRepository.Object);

            // action
            var domain = action.Invoke("Name");

            // check
            Assert.True(domain);
            mockedDomainRepository.Verify(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.Domain, bool> > >()), Times.Once);
        }
Ejemplo n.º 7
0
        public void Invoke_ValidData_DeleteAndSaveAreCalled()
        {
            // prepare

            var guid         = Guid.NewGuid();
            var domainFromDb = new DataAccess.Models.Domain
            {
                Id = guid
            };

            var mockedDomainRepository = new Mock <IDomainRepository>();

            mockedDomainRepository.Setup(r => r.GetById(guid)).Returns(domainFromDb);
            var mockedUnitOfWork = new Mock <IUnitOfWork>();

            var action = new DeleteDomainById(mockedDomainRepository.Object, mockedUnitOfWork.Object);

            // action
            var result = action.Invoke(guid);

            // assert
            Assert.True(result);
            mockedDomainRepository.Verify(r => r.Delete(It.IsAny <DataAccess.Models.Domain>()), Times.Once());
            mockedUnitOfWork.Verify(r => r.Save(), Times.Once());
        }
Ejemplo n.º 8
0
        public void Invoke_ValidData_ReturnsCorrectModel()
        {
            // prepare
            var guid   = Guid.NewGuid();
            var domain = new DataAccess.Models.Domain
            {
                Name = "Test Domain"
            };
            var userFromDb = new DataAccess.Models.User
            {
                Id           = guid,
                Name         = "Name",
                Email        = "*****@*****.**",
                PasswordHash = "123",
                Domain       = domain
            };

            var findByResult = new List <DataAccess.Models.User> {
                userFromDb
            };
            var mockedUserRepository = new Mock <IUserRepository>();

            mockedUserRepository.Setup(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.User, bool> > >()))
            .Returns(findByResult.AsQueryable);
            var mockedDomainRepository = new Mock <IDomainRepository>();
            var findDomainResult       = new List <DataAccess.Models.Domain> {
                domain
            };

            mockedDomainRepository.Setup(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.Domain, bool> > >()))
            .Returns(findDomainResult.AsQueryable);
            var action = new GetUserByEmail(mockedUserRepository.Object, mockedDomainRepository.Object);

            // action
            var user = action.Invoke("*****@*****.**", "Test Domain");

            // check
            Assert.NotNull(user);
            Assert.Equal(guid, user.Id);
            Assert.Equal("Name", user.Name);
            Assert.Equal("*****@*****.**", user.Email);
            Assert.Equal("Test Domain", user.Domain.Name);
            mockedUserRepository.Verify(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.User, bool> > >()), Times.Once);
            mockedDomainRepository.Verify(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.Domain, bool> > >()), Times.Once);
        }
Ejemplo n.º 9
0
        public void Invoke_WrongPassword_ReturnsNull()
        {
            // prepare
            var domain = new DataAccess.Models.Domain
            {
                Name = "Test Domain"
            };

            var dataUser = new DataAccess.Models.User
            {
                Email        = "*****@*****.**",
                PasswordSalt = "salt-generated",
                PasswordHash = "plain-hashed"
            };

            var findByResult = new List <DataAccess.Models.User> {
                dataUser
            };
            var mockedUserRepository = new Mock <IUserRepository>();

            mockedUserRepository.Setup(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.User, bool> > >()))
            .Returns(findByResult.AsQueryable);

            var mockedHasher = new Mock <IHasher>();

            mockedHasher.Setup(h => h.CreatePasswordHash("wrongPassword", "salt-generated")).Returns("wrong-hashed");

            var mockedDomainRepository = new Mock <IDomainRepository>();
            var findDomainResult       = new List <DataAccess.Models.Domain> {
                domain
            };

            mockedDomainRepository.Setup(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.Domain, bool> > >()))
            .Returns(findDomainResult.AsQueryable);

            var action = new AuthenticateUser(mockedUserRepository.Object, mockedDomainRepository.Object, mockedHasher.Object);

            // action
            var user = action.Invoke("*****@*****.**", "wrongPassword", "123");

            // check
            Assert.Null(user);
            mockedDomainRepository.Verify(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.Domain, bool> > >()), Times.Once);
            mockedUserRepository.Verify(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.User, bool> > >()), Times.Once);
        }
Ejemplo n.º 10
0
        public void Invoke_ValidData_EditAndSaveAreCalled()
        {
            // prepare
            var domainId     = Guid.NewGuid();
            var userId       = Guid.NewGuid();
            var domainFromDb = new DataAccess.Models.Domain
            {
                Id    = domainId,
                Owner = null
            };

            var userFromDb = new DataAccess.Models.User
            {
                Id   = userId,
                Name = "TestUser"
            };

            DataAccess.Models.Domain domainSaved = null;

            var mockedDomainRepository = new Mock <IDomainRepository>();

            mockedDomainRepository.Setup(r => r.GetById(domainId)).Returns(domainFromDb);
            mockedDomainRepository.Setup(r => r.Edit(It.IsAny <DataAccess.Models.Domain>()))
            .Callback <DataAccess.Models.Domain>(u => domainSaved = u);

            var mockedUserRepository = new Mock <IUserRepository>();

            mockedUserRepository.Setup(r => r.GetById(userId)).Returns(userFromDb);
            var mockedUnitOfWork = new Mock <IUnitOfWork>();

            var action = new SetDomainOwner(mockedDomainRepository.Object, mockedUserRepository.Object, mockedUnitOfWork.Object);

            // action
            var result = action.Invoke(userId, domainId);

            // assert
            Assert.True(result);
            Assert.Equal(userId, domainSaved.Owner.Id);
            Assert.Equal("TestUser", domainSaved.Owner.Name);
            mockedUserRepository.Verify(r => r.GetById(It.IsAny <Guid>()), Times.Once);
            mockedDomainRepository.Verify(r => r.GetById(It.IsAny <Guid>()), Times.Once);
            mockedDomainRepository.Verify(r => r.Edit(It.IsAny <DataAccess.Models.Domain>()), Times.Once());
            mockedUnitOfWork.Verify(r => r.Save(), Times.Once());
        }
Ejemplo n.º 11
0
        public void Invoke_ValidData_ReturnsCorrectModel()
        {
            // prepare
            var guidRoom = Guid.NewGuid();
            var guid     = Guid.NewGuid();

            var domenka = new DataAccess.Models.Domain
            {
                Name = "sluzbowa"
            };

            var usersFromDb = new List <DataAccess.Models.User>
            {
                new DataAccess.Models.User {
                    Id               = guid,
                    Name             = "Name",
                    Email            = "*****@*****.**",
                    EmailConfirmedOn = DateTime.MinValue,
                    CreatedOn        = DateTime.MinValue,
                    ModifiedOn       = DateTime.MinValue,
                    Domain           = domenka
                }
            };

            var mockedRoomRepository = new Mock <IRoomRepository>();

            mockedRoomRepository.Setup(r => r.GetRoomUsers(It.IsAny <Guid>())).Returns(usersFromDb.AsQueryable());
            var action = new GetRoomUsers(mockedRoomRepository.Object);

            // action
            var users = action.Invoke(guidRoom);

            // check
            Assert.NotNull(users);
            Assert.Equal(guid, users[0].Id);
            Assert.Equal("Name", users[0].Name);
            Assert.Equal(DateTime.MinValue, users[0].ModifiedOn);
            mockedRoomRepository.Verify(r => r.GetRoomUsers(It.IsAny <Guid>()), Times.Once);
        }
Ejemplo n.º 12
0
        public void Invoke_AlreadyExists_AddNorSaveAreCalled()
        {
            // prepare
            var userData = new UserModel
            {
                Email    = "email",
                Password = "******",
                Name     = "Grzegorz"
            };
            var domainToAdd = new DomainModel
            {
                Name  = "testdomain",
                Owner = userData
            };
            var domainFromDb = new DataAccess.Models.Domain
            {
                Name = "testdomain"
            };
            var findByResult = new List <DataAccess.Models.Domain> {
                domainFromDb
            };

            var mockedDomainRepository = new Mock <IDomainRepository>();

            mockedDomainRepository.Setup(r => r.FindBy(It.IsAny <Expression <Func <DataAccess.Models.Domain, bool> > >()))
            .Returns(findByResult.AsQueryable());
            var mockedUnitOfWork = new Mock <IUnitOfWork>();

            var action = new AddNewDomain(mockedDomainRepository.Object, mockedUnitOfWork.Object);

            // action
            var actionResult = action.Invoke(domainToAdd, Guid.NewGuid());

            // assert
            Assert.Equal(Guid.Empty, actionResult);
            mockedDomainRepository.Verify(r => r.Add(It.IsAny <DataAccess.Models.Domain>()), Times.Never);
            mockedUnitOfWork.Verify(r => r.Save(), Times.Never);
        }
Ejemplo n.º 13
0
        public void Invoke_ValidData_AddsRoomToDatabaseWithCorrectValues()
        {
            // prepare
            var domain = new DataAccess.Models.Domain
            {
                Name = "Test Domain"
            };

            var user = new DataAccess.Models.User
            {
                Name = "Test"
            };

            var tag = new TagModel
            {
                Name = "TestTag"
            };

            var roomData = new RoomModel
            {
                Tags = new List <TagModel> {
                    tag
                },
                Name          = "TestRoom",
                Topic         = "RoomTrool",
                Description   = "TroloRoom",
                Customization = 1,
                IsPublic      = true
            };

            DataAccess.Models.Room roomSaved = null;

            var mockedRoomRepository = new Mock <IRoomRepository>();

            mockedRoomRepository.Setup(r => r.Add(It.IsAny <DataAccess.Models.Room>()))
            .Callback <DataAccess.Models.Room>(u => roomSaved = u);

            var mockedUserRepo = new Mock <IUserRepository>();

            mockedUserRepo.Setup(x => x.GetById(It.IsAny <Guid>())).Returns(user);

            var mockedUserRoomRepository   = new Mock <IUserRoomRepository>();
            var mockedDomainRoomRepository = new Mock <IDomainRepository>();

            mockedDomainRoomRepository.Setup(x => x.GetById(It.IsAny <Guid>())).Returns(domain);
            var mockedUnitOfWork = new Mock <IUnitOfWork>();

            var action = new AddNewRoom(mockedRoomRepository.Object, mockedUserRepo.Object, mockedUserRoomRepository.Object, mockedDomainRoomRepository.Object, mockedUnitOfWork.Object);

            // action
            var actionResult = action.Invoke(roomData, Guid.NewGuid(), Guid.NewGuid());

            // assert
            Assert.Equal(Guid.Empty, actionResult);
            Assert.Equal("TestTag", roomSaved.Tags.ElementAt(0).Name);
            Assert.Equal("TestRoom", roomSaved.Name);
            Assert.Equal("RoomTrool", roomSaved.Topic);
            Assert.Equal("TroloRoom", roomSaved.Description);
            Assert.False(roomSaved.IsPrivateConversation);
            Assert.Equal(1, roomSaved.Customization);
            Assert.True(roomSaved.IsPublic);
            Assert.Equal("Test Domain", roomSaved.Domain.Name);
            Assert.Equal("Test", roomSaved.Owner.Name);
            mockedRoomRepository.Verify(r => r.Add(It.IsAny <DataAccess.Models.Room>()), Times.Once());
            mockedUserRoomRepository.Verify(r => r.Add(It.IsAny <DataAccess.Models.UserRoom>()), Times.Once());
            mockedUnitOfWork.Verify(r => r.Save(), Times.Once());
        }