public async Task FindUser_ReturnsNull_WhenUserDoesNotExist()
        {
            var logger   = new Mock <ILogger>().Object;
            var settings = LdapTestHelper.GetLdapSettings();

            var ldapConnectionProvider = new LdapConnectionProvider(settings, logger);
            var ldapProviderService    = new LdapProviderService(ldapConnectionProvider, logger, new PolicyProvider());
            var externalUser           = await ldapProviderService.FindUserBySubjectId($"EXAMPLE\\nonexistent.user");

            Assert.Null(externalUser);
        }
        public async Task FindUser_Succeeds_WhenUserExists()
        {
            var logger   = new Mock <ILogger>().Object;
            var settings = LdapTestHelper.GetLdapSettings();

            var ldapConnectionProvider = new LdapConnectionProvider(settings, logger);
            var newUser             = LdapTestHelper.CreateTestUser("test", "user", settings.BaseDn, ldapConnectionProvider);
            var ldapProviderService = new LdapProviderService(ldapConnectionProvider, logger, new PolicyProvider());
            var externalUser        = await ldapProviderService.FindUserBySubjectId($"EXAMPLE\\{newUser.getAttribute("cn").StringValue}");

            LdapTestHelper.RemoveEntry(newUser, ldapConnectionProvider);
            Assert.NotNull(externalUser);
            Assert.Equal("test", externalUser.FirstName);
            Assert.Equal("user", externalUser.LastName);
            Assert.Equal(@"EXAMPLE\test.user", externalUser.SubjectId);
            Assert.Equal("", externalUser.MiddleName);
        }
        public void SearchUsers_Succeeds(string searchText, int count)
        {
            var logger   = new Mock <ILogger>().Object;
            var settings = LdapTestHelper.GetLdapSettings();

            var testUsers = new List <Tuple <string, string> >
            {
                Tuple.Create("mike", "trout"),
                Tuple.Create("mike", "piazza"),
                Tuple.Create("mike", "stanton"),
                Tuple.Create("carlos", "beltran")
            };

            var ldapConnectionProvider = new LdapConnectionProvider(settings, logger);
            var ldapEntries            = LdapTestHelper.CreateTestUsers(testUsers, settings.BaseDn, ldapConnectionProvider);

            var ldapProviderService = new LdapProviderService(ldapConnectionProvider, logger, new PolicyProvider());
            var searchResults       = ldapProviderService.SearchUsers(searchText);

            LdapTestHelper.RemoveEntries(ldapEntries, ldapConnectionProvider);

            Assert.NotNull(searchResults);
            Assert.Equal(count, searchResults.Count);
        }