public void ShouldBy_Call_RemoveRange_Method()
        {
            // Arrange
            var entities = new List <TodoItem> {
                new TodoItem {
                    Id = 1, Name = "Test 1"
                },
                new TodoItem {
                    Id = 2, Name = "Test 2"
                },
                new TodoItem {
                    Id = 3, Name = "Test 3"
                },
            };

            var context   = new Mock <BasicArchitectureTemplateDbContext>();
            var dbSetMock = ServiceTestsHelper.GetMockDbSet <TodoItem>(entities);

            context.Setup(x => x.Set <TodoItem>()).Returns(dbSetMock.Object);
            // Act
            var repository = new Repository <TodoItem, int>(context.Object);

            repository.RemoveRange(entities.Where(x => x.Id <= 2).ToList());
            var noExist = repository.Query().FirstOrDefault(x => x.Id == 1);
            var exist   = repository.Query().FirstOrDefault(x => x.Id == 3);

            //Assert
            dbSetMock.Verify(x => x.RemoveRange(It.IsAny <IEnumerable <TodoItem> >()));
            Assert.Null(noExist);
            Assert.NotNull(exist);
        }
        public void ShouldBy_Call_Update_Method()
        {
            var testObject = new TodoItem {
                Id = 3, Name = "Test 3"
            };
            var entities = new List <TodoItem>
            {
                new TodoItem {
                    Id = 1, Name = "Test 1"
                },
                new TodoItem {
                    Id = 2, Name = "Test 2"
                },
                testObject
            };

            var context   = new Mock <BasicArchitectureTemplateDbContext>();
            var dbSetMock = ServiceTestsHelper.GetMockDbSet <TodoItem>(testObject);

            context.Setup(x => x.Set <TodoItem>()).Returns(dbSetMock.Object);
            // Act
            var repository = new Repository <TodoItem, int>(context.Object);

            testObject.Name = "Test 3 Updated";
            repository.Update(testObject);
            var exist = repository.Query().FirstOrDefault(x => x.Id == 3);

            //Assert
            dbSetMock.Verify(x => x.Update(It.Is <TodoItem>(y => y == testObject)));
            Assert.Equal("Test 3 Updated", exist.Name);
        }
        public void ShouldBy_Get_Query()
        {
            // Arrange
            var entities = new List <TodoItem> {
                new TodoItem {
                    Id = 1, Name = "Test 1"
                },
                new TodoItem {
                    Id = 2, Name = "Test 2"
                },
                new TodoItem {
                    Id = 3, Name = "Test 3"
                },
            };

            var context   = new Mock <BasicArchitectureTemplateDbContext>();
            var dbSetMock = ServiceTestsHelper.GetMockDbSet <TodoItem>(entities);

            context.Setup(x => x.Set <TodoItem>()).Returns(dbSetMock.Object);

            // Act
            var repository = new Repository <TodoItem, int>(context.Object);
            var results    = repository.Query();
            var list       = results.ToList();

            //Assert
            Assert.NotEmpty(list);
            Assert.True(list.Count == 3);
        }
예제 #4
0
        public async void Get_AllTodoItems()
        {
            // Arrange
            var entities = new List <TodoItem>
            {
                new TodoItem {
                    Id = 1, Name = "Test 1"
                },
                new TodoItem {
                    Id = 2, Name = "Test 2"
                },
                new TodoItem {
                    Id = 3, Name = "Test 3"
                }
            };
            var context   = new Mock <BasicArchitectureTemplateDbContext>();
            var dbSetMock = ServiceTestsHelper.GetMockDbSet <TodoItem>(entities);

            context.Setup(x => x.Set <TodoItem>()).Returns(dbSetMock.Object);
            var repositoryMock = new Mock <IRepository <TodoItem, int> >();

            repositoryMock.Setup(x => x.Query()).Returns((IQueryable <TodoItem>)dbSetMock.Object);
            var service = new TodoService(repositoryMock.Object);

            var controller = new TodoController(new NullLogger <TodoController>(), service);
            // Act
            var result = await controller.Get();

            //Assert
            var model = Assert.IsType <List <TodoItem> >(result);

            Assert.Equal(3, model.Count());
        }
예제 #5
0
        public void ValidateUserTest()
        {
            IEncryptionService encryptionService = new EncryptionService();
            string             userSalt          = encryptionService.CreateSalt();
            string             userHash          = encryptionService.EncryptPassword("password", userSalt);

            var ctx = new Mock <IContext>();

            List <Role> roles = new List <Role>
            {
                new Role()
                {
                    Id = 1, Name = "Role1"
                },
                new Role()
                {
                    Id = 2, Name = "Role2"
                }
            };
            List <User> users = new List <User>
            {
                new User()
                {
                    Id = 1, Username = "******", Salt = userSalt, HashedPassword = userHash
                }
            };
            List <UserRole> userRoles = new List <UserRole>
            {
                new UserRole()
                {
                    Id = 1, RoleId = 1, UserId = 1
                },
                new UserRole()
                {
                    Id = 2, RoleId = 2, UserId = 1
                }
            };

            var rolesMockDbSet     = ServiceTestsHelper.GetMockDbSet <Role>(roles);
            var usersMockDbSet     = ServiceTestsHelper.GetMockDbSet <User>(users);
            var userRolesMockDbSet = ServiceTestsHelper.GetMockDbSet <UserRole>(userRoles);

            ctx.Setup(c => c.Set <Role>()).Returns(rolesMockDbSet.Object);
            ctx.Setup(c => c.Set <User>()).Returns(usersMockDbSet.Object);
            ctx.Setup(c => c.Set <UserRole>()).Returns(userRolesMockDbSet.Object);

            IUserService     userService     = new UserService(ctx.Object);
            IRoleService     roleService     = new RoleService(ctx.Object);
            IUserRoleService userRoleService = new UserRoleService(ctx.Object);

            IMembershipService service = new MembershipService(userService, encryptionService, roleService, userRoleService);
            var result = service.ValidateUser("testUser1", "password");

            Assert.NotNull(result.Principal);
        }
예제 #6
0
        public void GetUserRolesTest()
        {
            var ctx = new Mock <IContext>();

            List <Role> roles = new List <Role>
            {
                new Role()
                {
                    Id = 1, Name = "Role1"
                },
                new Role()
                {
                    Id = 2, Name = "Role2"
                }
            };
            List <UserRole> userRoles = new List <UserRole>
            {
                new UserRole()
                {
                    Id = 1, RoleId = 1, UserId = 1, Role = roles[0]
                },
                new UserRole()
                {
                    Id = 2, RoleId = 2, UserId = 1, Role = roles[1]
                }
            };
            List <User> users = new List <User>
            {
                new User()
                {
                    Id = 1, Username = "******", UserRoles = userRoles
                }
            };

            var rolesMockDbSet     = ServiceTestsHelper.GetMockDbSet <Role>(roles);
            var usersMockDbSet     = ServiceTestsHelper.GetMockDbSet <User>(users);
            var userRolesMockDbSet = ServiceTestsHelper.GetMockDbSet <UserRole>(userRoles);

            ctx.Setup(c => c.Set <Role>()).Returns(rolesMockDbSet.Object);
            ctx.Setup(c => c.Set <User>()).Returns(usersMockDbSet.Object);
            ctx.Setup(c => c.Set <UserRole>()).Returns(userRolesMockDbSet.Object);

            IUserService       userService       = new UserService(ctx.Object);
            IRoleService       roleService       = new RoleService(ctx.Object);
            IUserRoleService   userRoleService   = new UserRoleService(ctx.Object);
            IEncryptionService encryptionService = new EncryptionService();
            IMembershipService service           = new MembershipService(userService, encryptionService, roleService, userRoleService);
            List <Role>        result            = service.GetUserRoles("testUser1");

            Assert.Equal(2, result.Count);
        }
예제 #7
0
        public void GetUserByUsernameTest()
        {
            string      username = "******";
            var         ctx      = new Mock <IContext>();
            List <User> users    = new List <User>();

            users.Add(new User()
            {
                Username = username
            });
            var mockDbSet = ServiceTestsHelper.GetMockDbSet <User>(users);

            ctx.Setup(c => c.Set <User>()).Returns(mockDbSet.Object);
            IUserService service = new UserService(ctx.Object);
            var          result  = service.GetUserByUsername(username);

            Assert.NotNull(result);
        }
        public void ShouldBy_Call_Add_Method()
        {
            // Arrange
            var testObject = new TodoItem();

            var context   = new Mock <BasicArchitectureTemplateDbContext>();
            var dbSetMock = ServiceTestsHelper.GetMockDbSet <TodoItem>(testObject);

            context.Setup(x => x.Set <TodoItem>()).Returns(dbSetMock.Object);
            // Act
            var repository = new Repository <TodoItem, int>(context.Object);

            repository.Add(testObject);

            //Assert
            context.Verify(x => x.Set <TodoItem>());
            dbSetMock.Verify(x => x.Add(It.Is <TodoItem>(y => y == testObject)));
        }
예제 #9
0
        public void CreateUserTestFail_userAlreadyRegistered()
        {
            string username = "******";
            var    ctx      = new Mock <IContext>();

            List <User> users = new List <User>
            {
                new User()
                {
                    Username = username
                }
            };
            List <Role> roles = new List <Role>
            {
                new Role()
                {
                    Id = 1, Name = "Role1"
                },
                new Role()
                {
                    Id = 2, Name = "Role2"
                }
            };

            var usersMockDbSet = ServiceTestsHelper.GetMockDbSet <User>(users);
            var rolesMockDbSet = ServiceTestsHelper.GetMockDbSet <Role>(roles);

            ctx.Setup(c => c.Set <User>()).Returns(usersMockDbSet.Object);
            ctx.Setup(c => c.Set <Role>()).Returns(rolesMockDbSet.Object);
            IUserService     userService     = new UserService(ctx.Object);
            IRoleService     roleService     = new RoleService(ctx.Object);
            IUserRoleService userRoleService = new UserRoleService(ctx.Object);
            var encryptionService            = new EncryptionService();
            IMembershipService service       = new MembershipService(userService, encryptionService, roleService, userRoleService);

            Assert.ThrowsAny <UserAlreadyRegisteredException>(() =>
            {
                service.CreateUser("testUser1", "*****@*****.**", "password", new List <int>()
                {
                    1, 2
                });
            });
        }
        public async Task ShouldBy_Call_AddAsync_Method()
        {
            // Arrange
            var testObject = new TodoItem();
            var entities   = new List <TodoItem> {
                testObject
            };

            var context   = new Mock <BasicArchitectureTemplateDbContext>();
            var dbSetMock = ServiceTestsHelper.GetMockDbSet <TodoItem>(testObject);

            context.Setup(x => x.Set <TodoItem>()).Returns(dbSetMock.Object);

            // Act
            var repository = new Repository <TodoItem, int>(context.Object);
            await repository.AddAsync(testObject);

            //Assert
            dbSetMock.Verify(x => x.AddAsync(It.Is <TodoItem>(y => y == testObject), CancellationToken.None));
        }
예제 #11
0
        public void GetRoleByIdTest()
        {
            var         ctx   = new Mock <IContext>();
            List <Role> roles = new List <Role>();

            roles.Add(new Role()
            {
                Id = 1, Name = "Role1"
            });
            roles.Add(new Role()
            {
                Id = 2, Name = "Role2"
            });
            var rolesMockDbSet = ServiceTestsHelper.GetMockDbSet <Role>(roles);

            ctx.Setup(c => c.Set <Role>()).Returns(rolesMockDbSet.Object);
            IRoleService roleService = new RoleService(ctx.Object);
            var          role        = roleService.GetRoleById(1);

            Assert.Equal("Role1", role.Name);
        }
예제 #12
0
        public void CreateUserTest()
        {
            var         ctx   = new Mock <IContext>();
            List <Role> roles = new List <Role>
            {
                new Role()
                {
                    Id = 1, Name = "Role1"
                },
                new Role()
                {
                    Id = 2, Name = "Role2"
                }
            };

            var rolesMockDbSet     = ServiceTestsHelper.GetMockDbSet <Role>(roles);
            var userRolesMockDbSet = ServiceTestsHelper.GetMockDbSet <UserRole>(new List <UserRole>());
            var usersMockDbSet     = ServiceTestsHelper.GetMockDbSet <User>(new List <User>());

            ctx.Setup(c => c.Set <Role>()).Returns(rolesMockDbSet.Object);
            ctx.Setup(c => c.Set <User>()).Returns(usersMockDbSet.Object);
            ctx.Setup(c => c.Set <UserRole>()).Returns(userRolesMockDbSet.Object);

            IUserService     userService     = new UserService(ctx.Object);
            IRoleService     roleService     = new RoleService(ctx.Object);
            IUserRoleService userRoleService = new UserRoleService(ctx.Object);

            IEncryptionService encryptionService = new EncryptionService();
            IMembershipService service           = new MembershipService(userService, encryptionService, roleService, userRoleService);
            User result = service.CreateUser("testUser1", "*****@*****.**", "password", new List <int>()
            {
                1, 2
            });

            usersMockDbSet.Verify(m => m.Add(It.IsAny <User>()), Times.Once);
            userRolesMockDbSet.Verify(m => m.Add(It.IsAny <UserRole>()), Times.Exactly(2));
        }