Hello,
We have Group Setting enabled for a Group Settings project that is
servicing multiple domains. Out of our four test domains, three are
working but for one domain it is not (of course, wouldn't you know it, the
domain it is not working for is our test domain we use for automated
testing!)
However, we have additional concerns since this could happen for other
domains, and so far we only have a 75% success rate.
Below is an example a unit test for bc.com and testc8l.com (NOTE, not the
real domains, the real domains were elided to protect the innocent!). The
request and response is included as comments within the unit tests.
As described earlier, these two domains, having tokens of exactly the same
scope, respond entirely differently for no apparent reason. bc.com allows
group settings access and testc8l.com throws a 401.
HELP!
public class GroupSettingsTest {
private String goodAdminEmail = "[email protected]";
private String goodToken = Constants.GOOD_TOKEN;
private String goodRefreshToken = Constants.GOOD_REFRESH_TOKEN;
private String goodDomain = "bc.com";
private String goodGroupId = "[email protected]";
private String badAdminEmail = "[email protected]";
private String badToken = Constants.BAD_TOKEN;
private String badRefreshToken = Constants.BAD_REFRESH_TOKEN;
private String badDomain = "testc8l.com";
private String badGroupId = "[email protected]";
private LocalServiceTestHelper helper;
private OAuth2Service oAuth2Service;
private GroupsService groupsService;
@Before
public void setUp() throws Exception{
helper = new LocalServiceTestHelper(new LocalURLFetchServiceTestConfig());
helper.setUp();
Injector inj = Guice.createInjector(new GuiceGoogleServicesModule(), new
GuiceModule(),new MockFPGuiceSessionModule());
oAuth2Service = inj.getInstance(OAuth2Service.class);
groupsService = inj.getInstance(GroupsService.class);
// refresh both tokens. both tokens have the same scope and provisioning
api is enabled for both
goodToken = oAuth2Service.refreshAccessToken("localhost", goodToken,
goodRefreshToken);
badToken = oAuth2Service.refreshAccessToken("localhost", badToken,
badRefreshToken);
// capture http request and respsonse
Logger logger = Logger.getLogger("com.google.api.client");
logger.setLevel(Level.FINER);
logger.addHandler(new Handler() {
@Override
public void close() throws SecurityException {
}
@Override
public void flush() {
}
@Override
public void publish(LogRecord record) {
if (record.getLevel().intValue() < Level.INFO.intValue()) {
System.out.println(record.getMessage());
}
}
});
}
@Test
public void testGoodDomainCanRetrieveSettings() throws Exception{
GroupsSettingsEntry entry =
groupsService.getGroupSettingsEntry(GroupsSettingsUrl.forGetGroupSettingsEntry(goodGroupId),
goodToken, goodAdminEmail);
Assert.assertNotNull(entry);
Assert.assertEquals(goodGroupId,entry.getEmail());
/*
-------------- REQUEST --------------
GET https://www.googleapis.com/groups/v1/groups/[email protected]?alt=json
Accept-Encoding: gzip
Authorization: <Not Logged>
GData-Version: v1
User-Agent: fp Google-HTTP-Java-Client/1.6.0-beta (gzip)
-------------- RESPONSE --------------
200
Expires: Wed, 28 Mar 2012 14:31:58 GMT
Date: Wed, 28 Mar 2012 14:31:58 GMT
Cache-Control: private, max-age=0, must-revalidate, no-transform
ETag: "j4AmYRiK3XvwemHZQtB25t0i4Ak/YGWPqVp-Way1XMXRRKm5jpaiHk4"
Content-Type: application/json; charset=UTF-8
Content-Encoding: gzip
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Content-Length: 454
Server: GSE
Response size: 454 bytes
{
"kind": "groupsSettings#groups",
"email": "[email protected]",
"name": "fp",
"description": "fp support and development team",
"whoCanJoin": "CAN_REQUEST_TO_JOIN",
"whoCanViewMembership": "ALL_MEMBERS_CAN_VIEW",
"whoCanViewGroup": "ALL_MEMBERS_CAN_VIEW",
"whoCanInvite": "ALL_MANAGERS_CAN_INVITE",
"allowExternalMembers": "false",
"whoCanPostMessage": "ANYONE_CAN_POST",
"allowWebPosting": "true",
"maxMessageBytes": 5242880,
"isArchived": "true",
"archiveOnly": "false",
"messageModerationLevel": "MODERATE_NONE",
"replyTo": "REPLY_TO_IGNORE",
"customReplyTo": "",
"sendMessageDenyNotification": "false",
"defaultMessageDenyNotificationText": "",
"showInGroupDirectory": "false",
"allowGoogleCommunication": "false",
"membersCanPostAsTheGroup": "false",
"messageDisplayFont": "DEFAULT_FONT"
}
*/
}
@Test
public void testBadDomainCanNotRetrieveSettings() throws Exception{
GroupsSettingsEntry entry = null;
boolean exceptionThrown = false;
try{
entry =
groupsService.getGroupSettingsEntry(GroupsSettingsUrl.forGetGroupSettingsEntry(badGroupId),
badToken, badAdminEmail);
}catch(Exception e){
exceptionThrown = true;
}
Assert.assertTrue(exceptionThrown);
Assert.assertNull(entry);
/*
-------------- REQUEST --------------
GET https://www.googleapis.com/groups/v1/groups/[email protected]?alt=json
Accept-Encoding: gzip
Authorization: <Not Logged>
GData-Version: v1
User-Agent: fp Google-HTTP-Java-Client/1.6.0-beta (gzip)
-------------- RESPONSE --------------
401
WWW-Authenticate: AuthSub realm="
https://www.google.com/accounts/AuthSubRequest" allowed-scopes="
https://www.googleapis.com/auth/apps.groups.settings"
Content-Type: application/json; charset=UTF-8
Content-Encoding: gzip
Date: Wed, 28 Mar 2012 14:36:08 GMT
Expires: Wed, 28 Mar 2012 14:36:08 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Content-Length: 184
Server: GSE
{
"error": {
"errors": [
{
"domain": "global",
"reason": "authError",
"message": "Domain cannot use Api, Groups service is not installed.",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Domain cannot use Api, Groups service is not installed."
}
}
*/
}
@After
public void tearDown(){
oAuth2Service = null;
groupsService = null;
helper.tearDown();
}
}
--
You received this message because you are subscribed to the Google Groups
"Google Apps Domain Information and Management APIs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-apps-mgmt-apis?hl=en.