public void Test_CreateSessoin_ValidEmailExistingSession()
        {
            string      email = "*****@*****.**";
            List <User> users = new List <User>
            {
                new User
                {
                    Id          = new Guid(),
                    Email       = email,
                    Username    = "******",
                    Credentials = new UserCredentials
                    {
                        PwdSalt = new Guid(),
                        PwdHash = "testhash"
                    },
                    Projects = new List <Guid>()
                }
            };

            Session session = new Session
            {
                UserId = users[0].Id,
                Id     = new Guid()
            };

            var mockDbClient = new MockDBClient()
                               .MockContains <User, string>("users", "Email", email, true)
                               .MockFindByField <User, string>("users", "Email", email, users)
                               .MockContains <Session, Guid>("sessions", "UserId", users[0].Id, true)
                               .MockFindByField <Session, Guid>("sessions", "UserId", users[0].Id, new List <Session> {
                session
            });

            var mockResource = new MockResource().GetDefaultConfig();

            AuthService authService = new AuthService(mockDbClient.Object, mockResource.Object);
            Guid        sessionId   = authService.CreateSession(email);

            Assert.True(sessionId == session.Id);
        }
        public void Test_IsValidUser_NullInput()
        {
            var mockDbClient = new MockDBClient()
                               .MockContains <User, string>("users", "Email", null, false)
                               .MockFindByField <User, string>("users", "Email", null, null);

            var mockResource = new MockResource().GetDefaultConfig();

            AuthService authService = new AuthService(mockDbClient.Object, mockResource.Object);

            Assert.Throws <ArgumentNullException>(() =>
                                                  authService.IsValidUser(null, null)
                                                  );

            Assert.Throws <ArgumentNullException>(() =>
                                                  authService.IsValidUser("*****@*****.**", null)
                                                  );

            Assert.Throws <ArgumentNullException>(() =>
                                                  authService.IsValidUser(null, "MyAwesomePassword")
                                                  );
        }
        public void Test_IsValidUser_ValidUser()
        {
            // arrange

            HashManager manager = new HashManager();

            string      email    = "*****@*****.**";
            string      password = "******";
            Guid        pwdSalt  = new Guid();
            List <User> users    = new List <User>
            {
                new User {
                    Id          = new Guid(),
                    Credentials = new UserCredentials
                    {
                        PwdHash = manager.GetHash(pwdSalt.ToString(), password, 0),
                        PwdSalt = pwdSalt
                    },
                    Email    = email,
                    Username = "******",
                    Projects = new List <Guid>()
                }
            };

            var mockDbClient = new MockDBClient()
                               .MockContains <User, string>("users", "Email", email, true)
                               .MockFindByField <User, string>("users", "Email", email, users);

            var mockResource = new MockResource().GetDefaultConfig();

            // act
            AuthService authService = new AuthService(mockDbClient.Object, mockResource.Object);
            bool        result      = authService.IsValidUser(email, password);

            // assert
            Assert.True(result);
            mockDbClient.VerifyAll();
        }