@Test public void testFindUserDnWhenUserDnNegativeNone() throws NamingException { NamingEnumeration<SearchResult> searchResult = mockEmptyNamingEnumeration(); when(ctx.search(anyString(), anyString(), any(SearchControls.class))).thenReturn(searchResult); search = new LdapSearch(conf, ctx); assertNull(search.findUserDn("CN=User1,DC=foo,DC=bar")); }
@Test(expected = NamingException.class) public void testFindGroupDNNoResults() throws NamingException { conf.setVar(HiveConf.ConfVars.HIVE_SERVER2_PLAIN_LDAP_GROUPDNPATTERN, "CN=%s,OU=org1,DC=foo,DC=bar"); NamingEnumeration<SearchResult> result = mockEmptyNamingEnumeration(); when(ctx.search(anyString(), anyString(), any(SearchControls.class))).thenReturn(result); search = new LdapSearch(conf, ctx); search.findGroupDn("anyGroup"); }
@Test public void testFindUserDnWhenUserPatternFoundBySecondPattern() throws NamingException { conf.setVar(HiveConf.ConfVars.HIVE_SERVER2_PLAIN_LDAP_USERDNPATTERN, "CN=%s,OU=org1,DC=foo,DC=bar:CN=%s,OU=org2,DC=foo,DC=bar"); NamingEnumeration<SearchResult> emptyResult = mockEmptyNamingEnumeration(); NamingEnumeration<SearchResult> validResult = mockNamingEnumeration("CN=User1,OU=org2,DC=foo,DC=bar"); when(ctx.search(anyString(), anyString(), any(SearchControls.class))) .thenReturn(emptyResult) .thenReturn(validResult); search = new LdapSearch(conf, ctx); String expected = "CN=User1,OU=org2,DC=foo,DC=bar"; String actual = search.findUserDn("User1"); assertEquals(expected, actual); verify(ctx).search(eq("OU=org1,DC=foo,DC=bar"), contains("CN=User1"), any(SearchControls.class)); verify(ctx).search(eq("OU=org2,DC=foo,DC=bar"), contains("CN=User1"), any(SearchControls.class)); }
@Test public void testFindUserDnWhenUserPatternFoundByFirstPattern() throws NamingException { conf.setVar(HiveConf.ConfVars.HIVE_SERVER2_PLAIN_LDAP_USERDNPATTERN, "CN=%s,OU=org1,DC=foo,DC=bar:CN=%s,OU=org2,DC=foo,DC=bar"); NamingEnumeration<SearchResult> emptyResult = mockEmptyNamingEnumeration(); NamingEnumeration<SearchResult> validResult = mockNamingEnumeration("CN=User1,OU=org2,DC=foo,DC=bar"); when(ctx.search(anyString(), anyString(), any(SearchControls.class))) .thenReturn(validResult) .thenReturn(emptyResult); search = new LdapSearch(conf, ctx); String expected = "CN=User1,OU=org2,DC=foo,DC=bar"; String actual = search.findUserDn("User1"); assertEquals(expected, actual); verify(ctx).search(eq("OU=org1,DC=foo,DC=bar"), contains("CN=User1"), any(SearchControls.class)); }
@Test public void testIsUserMemberOfGroupWhenUserId() throws NamingException { conf.setVar(HiveConf.ConfVars.HIVE_SERVER2_PLAIN_LDAP_USERDNPATTERN, "CN=%s,OU=org1,DC=foo,DC=bar"); NamingEnumeration<SearchResult> validResult = LdapTestUtils.mockNamingEnumeration("CN=User1"); NamingEnumeration<SearchResult> emptyResult = LdapTestUtils.mockEmptyNamingEnumeration(); when(ctx.search(anyString(), contains("(uid=usr1)"), any(SearchControls.class))) .thenReturn(validResult); when(ctx.search(anyString(), contains("(uid=usr2)"), any(SearchControls.class))) .thenReturn(emptyResult); search = new LdapSearch(conf, ctx); assertTrue(search.isUserMemberOfGroup("usr1", "grp1")); assertFalse(search.isUserMemberOfGroup("usr2", "grp2")); }
@Test public void testIsUserMemberOfGroupWhenUserDn() throws NamingException { conf.setVar(HiveConf.ConfVars.HIVE_SERVER2_PLAIN_LDAP_USERDNPATTERN, "CN=%s,OU=org1,DC=foo,DC=bar"); NamingEnumeration<SearchResult> validResult = LdapTestUtils.mockNamingEnumeration("CN=User1"); NamingEnumeration<SearchResult> emptyResult = LdapTestUtils.mockEmptyNamingEnumeration(); when(ctx.search(anyString(), contains("(uid=User1)"), any(SearchControls.class))) .thenReturn(validResult); when(ctx.search(anyString(), contains("(uid=User2)"), any(SearchControls.class))) .thenReturn(emptyResult); search = new LdapSearch(conf, ctx); assertTrue(search.isUserMemberOfGroup("CN=User1,OU=org1,DC=foo,DC=bar", "grp1")); assertFalse(search.isUserMemberOfGroup("CN=User2,OU=org1,DC=foo,DC=bar", "grp2")); } }