예제 #1
0
        public void AddAccount_AddAdmin()
        {
            var users = new List <User>
            {
                new User
                {
                    Id       = 1,
                    Login    = "******",
                    Password = new Encryption.HasherFactory().GetHasher().Hash("Admin"),
                    Rank     = Rank.Administrator
                }
            };

            var mockSet     = CreateNewMockSetWithData(users);
            var mockContext = new Mock <DatabaseContext>();

            mockContext.Setup(m => m.Set <User>()).Returns(mockSet.Object);

            var oldDb = RepositoryFactory.SetDbContext(mockContext.Object);

            var loginDict = new Dictionary <string, string>
            {
                ["login"]    = "******",
                ["password"] = "******",
            };

            var userController = new UserController();

            var(loggedInAdmin, tokenAdmin) = userController.LogIn(loginDict);

            var newUserDict = new Dictionary <string, string>
            {
                ["rank"]  = "Administrator",
                ["login"] = "******",
            };

            userController.AddAccount(newUserDict, tokenAdmin);
            mockSet.Verify(
                m => m.Add(
                    It.Is <User>(u => u.Login == "admin123456" && u.Rank == Rank.Administrator)
                    )
                );

            RepositoryFactory.SetDbContext(oldDb);
        }