public void Throw_Exception_if_NameIdentifier_Is_Null_Empty_Or_Whitespace()
        {
            // Prepare
            IUserRepository userRepository =
                new Microsoft.Research.DataOnboarding.DataAccessService.Fakes.StubIUserRepository();
            IUnitOfWork unitOfWork = new Fakes.StubIUnitOfWork();
            User userToRegister = new User()
                {
                    NameIdentifier = string.Empty,        // Invalid name identifier
                    FirstName = "SomeFirstName",
                    MiddleName = "SomeMiddleName",
                    LastName = "SomeLastName",
                    IdentityProvider = "Windows Live",
                    Organization = "SomeOrganization",
                    EmailId = "*****@*****.**"
                };

            // Act
            IUserService userService = new UserServiceProvider(userRepository, unitOfWork);
            User registeredUser = userService.RegisterUser(userToRegister);
        }
        public void Throw_Exception_On_Registering_Duplicate_NameIdentifier()
        {
            // Prepare
            User fakeUser = new User()
            {
                UserId = 1,
                NameIdentifier = "s0Me1De9Tf!Er$tRing",
                FirstName = "SomeFirstName",
                MiddleName = "SomeMiddleName",
                LastName = "SomeLastName",
                IdentityProvider = "Windows Live",
                Organization = "SomeOrganization",
                EmailId = "*****@*****.**",
                CreatedOn = DateTime.Now,
                ModifiedOn = DateTime.Now,
                IsActive = true
            };
            IUserRepository userRepository =
                new Microsoft.Research.DataOnboarding.DataAccessService.Fakes.StubIUserRepository()
                {
                    GetUserByNameIdentifierString = (nameIdentifier) => { return fakeUser; }
                };
            IUnitOfWork unitOfWork =
                new Fakes.StubIUnitOfWork()
                {
                    Commit = () => { return; }
                };
            User userToRegister = new User()
                {
                    NameIdentifier = "s0Me1De9Tf!Er$tRing",
                    FirstName = "SomeFirstName",
                    MiddleName = "SomeMiddleName",
                    LastName = "SomeLastName",
                    IdentityProvider = "Windows Live",
                    Organization = "SomeOrganization",
                    EmailId = "*****@*****.**"
                };

            // Act
            IUserService userService = new UserServiceProvider(userRepository, unitOfWork);
            try
            {
                User registeredUser = userService.RegisterUser(userToRegister);
            }
            catch (UserAlreadyExistsException uaee)
            {
                Assert.AreEqual(uaee.NameIdentifier, userToRegister.NameIdentifier);
                throw;
            }
        }
        public void Throw_Exception_For_Null_Input_Parameter()
        {
            // Prepare
            IUserRepository userRepository =
                new Microsoft.Research.DataOnboarding.DataAccessService.Fakes.StubIUserRepository();
            IUnitOfWork unitOfWork = new Fakes.StubIUnitOfWork();
            User userToRegister = default(User);

            // Act
            IUserService userService = new UserServiceProvider(userRepository, unitOfWork);
            User registeredUser = userService.RegisterUser(userToRegister);
        }