public void TestMethod1()
        {
            string username = "******";

            var listofpermission = new List<string> { "ReadAll", "WriteAll", "DeleteAll" };

            var role1 = new Role { Name = "administrator", Permissions = listofpermission };

            var roles = new List<Role> { role1 };

            string[] repositorytestrole = new string[] { "administrator" };

            string repositorytestusername = "******";

            string repositorytestpassword = "******";

            int value = 1;

            string repositorytestmark = "CBR600RR";

            string repositorytestmanufacturer = "HONDA";

            var repositorytestbikeyear = new DateTime(2000, 1, 1);

            string repositorytestcondition = "normal_for_test";

            //configuring userrepository mock
            var userrepository = new Mock<IUserRepository>();

            userrepository.Setup(m => m.GetUser(repositorytestusername, repositorytestpassword)).Returns(new User { Username = repositorytestusername, Roles = roles });

            userrepository.Setup(m => m.RetrieveAllUsers()).Returns(new List<User> { new User { Username = repositorytestusername, Roles = roles } });

            userrepository.Setup(m => m.GetAllUsers()).Returns(new List<User> { new User { Username = repositorytestusername, Roles = roles } });

            userrepository.Setup(m => m.GetUserIDbyUsername(username)).Returns(value);

            userrepository.Setup(m => m.GetUserIDbyUsername(repositorytestusername)).Returns(2);

            userrepository.Setup(m => m.SaveNewUser(repositorytestusername, repositorytestpassword, repositorytestrole)).Returns(true);

            //configuring bikerepository mock
            var bikerepository = new Mock<IBikeRepository>();

            var currentbike = new Bike
            {
                Manufacturer = repositorytestmanufacturer,
                Mark = repositorytestmark,
                BikeYear = repositorytestbikeyear,
                ConditionState = repositorytestcondition,
                OwnerID = 1

            };

            bikerepository.Setup(m => m.RetrieveAllBikes()).Returns(new List<Bike> { currentbike });

            bikerepository.Setup(m => m.Search(repositorytestusername)).Returns(new List<Bike> { currentbike });

            //configuring repository factory mock object in all repositories
            var repositoryfactory = new Mock<IRepositoryFactory>();

            repositoryfactory.Setup(m => m.GetUserRepository()).Returns(userrepository.Object);

            repositoryfactory.Setup(m => m.GetBikeRepository()).Returns(bikerepository.Object);

            //Start Domain and Services testing with Repository isolation.
            ServiceLocator.RegisterService<IUserService>(typeof(UserService));

            //Service->RepositoryFactory->Mock Object
            Training.Workshop.Data.Context.Current.RepositoryFactory = repositoryfactory.Object;

            var user = User.Create(repositorytestusername, repositorytestpassword, repositorytestrole);

            Assert.IsTrue(user.Username == repositorytestusername);

            Assert.IsTrue(user.Roles == roles);

            //Stop userrepository testing
            //Start bikerepository testing
            ServiceLocator.RegisterService<IBikeService>(typeof(BikeService));

            var bike1 = Bike.Create(repositorytestmanufacturer, repositorytestmark, repositorytestusername, value, repositorytestcondition);

            Assert.IsTrue
                (
                bike1.Manufacturer == repositorytestmanufacturer &&
                bike1.Mark == repositorytestmark &&
                bike1.OwnerID == 2 &&
                bike1.ConditionState == repositorytestcondition
                );

            var bike2 = Bike.Create(repositorytestmark, repositorytestmanufacturer, repositorytestusername, value, repositorytestcondition);

            Assert.IsFalse
               (
               bike2.Manufacturer == repositorytestmanufacturer &&
               bike2.Mark == repositorytestmark &&
               bike2.OwnerID == value &&
               bike2.ConditionState == repositorytestcondition
               );
            //Stop bikerepository testing

            //Domain testing with service mock.
            //cunfiguring services
            var iuserservice = new Mock<IUserService>();

            string newusername = "******";
            iuserservice.Setup(m => m.GetUser(newusername, newusername)).Returns(new User { Username = newusername, Roles = roles });

            iuserservice.Setup(m => m.Create("newuser", "newuser", repositorytestrole)).Returns(new User { Username = "******", Roles = roles });

            iuserservice.Setup(m => m.Create("newuser2", "newuser2", repositorytestrole)).Returns(new User { Username = "******", Roles = roles });
            //right choise
            iuserservice.Setup(m => m.GetUser(newusername, newusername)).Returns(new User { Username = "******", Roles = roles });
            //right
            userrepository.Setup(m => m.GetUser(newusername, newusername)).Returns(new User { Username = newusername, Roles = roles });

            userrepository.Setup(m => m.SaveNewUser("newuser", "newuser", repositorytestrole)).Returns(false);

            userrepository.Setup(m => m.SaveNewUser(newusername, newusername, repositorytestrole)).Returns(true);

            //Start Domain testing
            //uncorrect SaveNewUser(username,password,roles),uncorrect data in User
            var newuser1 = User.Create("newuser", "newuser", repositorytestrole);

            Assert.IsFalse
                (
                newuser1.Username == newusername &&
                newuser1.Roles == roles
                );

            //correct SaveNewUser(), correct data in User

            var newuser2 = User.Create(newusername, newusername, repositorytestrole);

            userrepository.Setup(m => m.SaveNewUser(newusername, newusername, repositorytestrole)).Returns(true);

            Assert.IsTrue
                (
                newuser2.Username == newusername &&
                newuser2.Roles == roles
                );

            //uncorrect SaveNewUser(), correct data in User
            var newuser3 = User.Create("newuser2", "newuser2", repositorytestrole);

            Assert.IsFalse
              (
              newuser3.Username == newusername &&
              newuser3.Roles == roles
              );

            //Stop Domain testing
        }
Example #2
0
        /// <summary>
        /// Returns all users with permissions and roles.
        /// New method works with 1 stored procedure.
        /// </summary>
        /// <returns></returns>
        public List<User> RetrieveAllUsers()
        {
            var listofusers = new List<User>();

            using (var unitofwork = (ISQLUnitOfWork)Training.Workshop.UnitOfWork.UnitOfWork.Start())
            {
                using (var command = unitofwork.Connection.CreateCommand())
                {
                    command.CommandText = "usp_GetAllUsers";
                    command.CommandType = CommandType.StoredProcedure;

                    using (IDataReader reader = command.ExecuteReader())
                    {
                        //UserID,Username
                        List<Tuple<string, string>> userlist = GetUser(reader);

                        if (!reader.NextResult())
                            throw new InvalidOperationException("Cant execute SELECT ROLES");
                        //UserID,RoleID,RoleName
                        List<Tuple<string, string, string>> roleslist = GetRoles(reader);

                        if (!reader.NextResult())
                            throw new InvalidOperationException("Cant execute SELECT PERMISSIONS");

                        // Get Permissions by username
                        List<Tuple<string, string, string>> permissionslist = GetPermissions(reader);
                        reader.Close();

                        //filled user fields before return.
                        foreach (var userelement in userlist)
                        {
                            var newuser = new User();

                            var userid = userelement.Item1;

                            newuser.Username = userelement.Item2.ToString();

                            var rolelist = new List<Role>();

                            foreach (var roleelement in roleslist)
                            {
                                var role = new Role();
                                if (userid == roleelement.Item1)
                                {
                                    role.Name = roleelement.Item3;

                                    var Permissionlist = new List<string>();

                                    foreach (var permissionelement in permissionslist)
                                    {
                                        //if permission relates to role-adding permission to list belongs to role.
                                        if (roleelement.Item2 == permissionelement.Item2)
                                        {
                                            {
                                                Permissionlist.Add(permissionelement.Item3.ToString());
                                            }
                                        }
                                    }
                                    //adding all permissions to role
                                    role.Permissions = Permissionlist;
                                    //adding role to role list of user
                                    rolelist.Add(role);
                                }

                            }
                            newuser.Roles = rolelist;

                            listofusers.Add(newuser);
                        }

                    }
                }
            }

            return listofusers;
        }
Example #3
0
        /// <summary>
        /// Get User with roles and permissions by one stored procedure
        /// </summary>
        /// <param name="username"></param>
        /// <returns></returns>
        public User RetrieveUser(string username)
        {
            //User Construction
            var user = new User();

            using (var unitofwork = (ISQLUnitOfWork)Training.Workshop.UnitOfWork.UnitOfWork.Start())
            {
                using (var command = unitofwork.Connection.CreateCommand())
                {
                    command.CommandText = "usp_GetUser";
                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.AddWithValue("Username", username);

                    using (IDataReader reader = command.ExecuteReader())
                    {
                        //UserID,Username
                        List<Tuple<string, string>> userlist = GetUser(reader);
                        //to search roles and permissions by userID
                        string userID = userlist[0].Item1;

                        if (!reader.NextResult())
                            throw new InvalidOperationException("Cant execute SELECT ROLES");
                        //UserID,RoleID,RoleName
                        List<Tuple<string, string, string>> roleslist = GetRoles(reader,userID);

                        if (!reader.NextResult())
                            throw new InvalidOperationException("Cant execute SELECT PERMISSIONS");

                        // Get Permissions by username
                        //UserID,RoleID,Permission
                        List<Tuple<string, string, string>> permissionslist = GetPermissions(reader,userID);
                        reader.Close();

                        //filled user role and permissions before return.
                        user.Username = username;

                        var rolelist=new List<Role>();

                        foreach (var roleelement in roleslist)
                        {
                            var role = new Role();

                            role.Name = roleelement.Item3.ToString();

                            var Permissionlist = new List<string>();

                            foreach (var permissionelement in permissionslist)
                            {
                                //if permission relates to role-adding permission to list belongs to role.
                                if (roleelement.Item2.ToString() == permissionelement.Item2.ToString())
                                {
                                    Permissionlist.Add(permissionelement.Item3.ToString());
                                }
                            }
                            //adding all permissions to role
                            role.Permissions = Permissionlist;
                            //adding role to role list of user
                            rolelist.Add(role);

                        }
                        user.Roles = rolelist;
                    }
                }
            }
            return user;
        }
Example #4
0
        /// <summary>
        /// return all obtained User Roles by username and fill it by permissions,return List of Roles with all permissions.
        /// </summary>
        /// <param name="username"></param>
        /// <returns></returns>
        public List<Role> GetRolesandPermissionsbyUsername(string username)
        {
            List<string> RoleNamesListwhichUserhas = Data.Context.Current.RepositoryFactory.GetUserRepository().GetRoleNamesByUsername(username);

            var RoleList = new List<Role>();

            foreach (var role in RoleNamesListwhichUserhas)
            {
                var Role = new Role()
                {
                    Name = role,
                    Permissions = GetPermissionsbyRolename(role)
                };
                RoleList.Add(Role);
            }

            return RoleList;
        }