Fix AD groups in ACLs
Previously, AD groups were being added to ACLs as users.
diff --git a/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java b/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java
index dd46e7f..93e3294 100644
--- a/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java
+++ b/src/com/google/enterprise/adaptor/sharepoint/SharePointAdaptor.java
@@ -1603,7 +1603,11 @@
}
Map<Integer, String> userMap = new HashMap<Integer, String>();
for (UserDescription user : site.getWeb().getUsers().getUser()) {
- userMap.put(user.getID(), user.getLoginName().intern());
+ if (user.getIsDomainGroup() == TrueFalseType.TRUE) {
+ groupMap.put(user.getID(), user.getName().intern());
+ } else {
+ userMap.put(user.getID(), user.getLoginName().intern());
+ }
}
MemberIdMapping mapping = new MemberIdMapping(userMap, groupMap);
log.exiting("SiteDataClient", "retrieveMemberIdMapping", mapping);
diff --git a/test/com/google/enterprise/adaptor/sharepoint/SharePointAdaptorTest.java b/test/com/google/enterprise/adaptor/sharepoint/SharePointAdaptorTest.java
index 2d85d78..daf59d4 100644
--- a/test/com/google/enterprise/adaptor/sharepoint/SharePointAdaptorTest.java
+++ b/test/com/google/enterprise/adaptor/sharepoint/SharePointAdaptorTest.java
@@ -440,6 +440,41 @@
}
@Test
+ public void testGetDocContentSiteCollectionWithAdGroup() throws Exception {
+ SiteDataFactory siteDataFactory = MockSiteDataFactory.blank()
+ .endpoint(VS_ENDPOINT, MockSiteData.blank()
+ .register(VS_CONTENT_EXCHANGE)
+ .register(SITES_SITECOLLECTION_SAW_EXCHANGE))
+ .endpoint(SITES_SITECOLLECTION_ENDPOINT, MockSiteData.blank()
+ .register(SITES_SITECOLLECTION_URLSEG_EXCHANGE)
+ .register(SITES_SITECOLLECTION_S_CONTENT_EXCHANGE
+ .replaceInContent("Name=\"spuser1\"", "Name=\"GDC-PSL\\group\"")
+ .replaceInContent("IsDomainGroup=\"False\"",
+ "IsDomainGroup=\"True\""))
+ .register(SITES_SITECOLLECTION_SC_CONTENT_EXCHANGE
+ .replaceInContent("Name=\"spuser1\"", "Name=\"GDC-PSL\\group\"")
+ .replaceInContent("IsDomainGroup=\"False\"",
+ "IsDomainGroup=\"True\"")));
+
+ adaptor = new SharePointAdaptor(siteDataFactory,
+ new UnsupportedUserGroupFactory(), new UnsupportedHttpClient(),
+ executorFactory);
+ adaptor.init(new MockAdaptorContext(config, null));
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ GetContentsRequest request = new GetContentsRequest(
+ new DocId("http://localhost:1/sites/SiteCollection"));
+ GetContentsResponse response = new GetContentsResponse(baos);
+ adaptor.getDocContent(request, response);
+ assertEquals(new Acl.Builder()
+ .setEverythingCaseInsensitive()
+ .setInheritFrom(new DocId(""))
+ .setInheritanceType(Acl.InheritanceType.PARENT_OVERRIDES)
+ .setPermitGroups(groups("chinese1 Members", "chinese1 Owners",
+ "chinese1 Visitors", "GDC-PSL\\group")).build(),
+ response.getAcl());
+ }
+
+ @Test
public void testGetDocContentList() throws Exception {
SiteDataSoap siteData = MockSiteData.blank()
.register(SITES_SITECOLLECTION_LISTS_CUSTOMLIST_URLSEG_EXCHANGE)