public void Test_IsValidUser_InvalidPassword()
        {
            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(), "Dope123", 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();

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

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

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

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

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

            Assert.Throws <InvalidDataException>(() =>
                                                 authService.CreateSession(email)
                                                 );
        }
        public void Test_CreateSession_ValidEmailNoSession()
        {
            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>()
                }
            };

            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, false);

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

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

            Assert.True(sessionID != null);
            Assert.True(sessionID != Guid.Empty);
        }
        public void Test_IsValidUser_MultipleUsers()
        {
            IHashManager manager  = new HashManager();
            string       email    = "*****@*****.**";
            string       password = "******";
            Guid         pwdSalt  = new Guid();
            User         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>()
            };
            List <User> users = new List <User>();

            users.Add(user);
            users.Add(user);

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

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

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

            Assert.Throws <InvalidDataException>(() =>
                                                 authService.IsValidUser(email, password)
                                                 );
        }
        public void Test_CreateSession_NullInput()
        {
            string email = null;

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

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

            Assert.Throws <ArgumentNullException>(() =>
                                                  authService.CreateSession(email)
                                                  );
        }
        public void Test_IsValidUser_UserNotFound()
        {
            string email = "*****@*****.**";

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

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

            AuthService authService = new AuthService(mockDbClient.Object, mockResource.Object);
            bool        result      = authService.IsValidUser(email, "password123");

            Assert.True(result == false);
        }
        public void Test_CreateSession_InvalidEmail()
        {
            string email = "*****@*****.**";

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

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

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

            Assert.True(sessionId != null);
            Assert.True(sessionId == Guid.Empty);
        }
        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")
                                                  );
        }