Make driveFolderId on Registry entity optional

This defaults to null, and leaving it to null now simply disables reserved terms
exporting, rather than throwing an error every time the action runs.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=138763161
This commit is contained in:
mcilwain 2016-11-10 08:25:23 -08:00 committed by Ben McIlwain
parent 9122372e38
commit 274b070b54
3 changed files with 14 additions and 11 deletions

View file

@ -14,7 +14,6 @@
package google.registry.export; package google.registry.export;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Strings.isNullOrEmpty; import static com.google.common.base.Strings.isNullOrEmpty;
import static com.google.common.net.MediaType.PLAIN_TEXT_UTF_8; import static com.google.common.net.MediaType.PLAIN_TEXT_UTF_8;
import static google.registry.export.ExportUtils.exportReservedTerms; import static google.registry.export.ExportUtils.exportReservedTerms;
@ -62,8 +61,11 @@ public class ExportReservedTermsAction implements Runnable {
if (registry.getReservedLists().isEmpty() && isNullOrEmpty(registry.getDriveFolderId())) { if (registry.getReservedLists().isEmpty() && isNullOrEmpty(registry.getDriveFolderId())) {
resultMsg = "No reserved lists configured"; resultMsg = "No reserved lists configured";
logger.infofmt("No reserved terms to export for TLD %s", tld); logger.infofmt("No reserved terms to export for TLD %s", tld);
} else if (registry.getDriveFolderId() == null) {
resultMsg = "Skipping export because no Drive folder is associated with this TLD";
logger.infofmt(
"Skipping reserved terms export for TLD %s because Drive folder isn't specified", tld);
} else { } else {
checkNotNull(registry.getDriveFolderId(), "No drive folder associated with this TLD");
resultMsg = driveConnection.createOrUpdateFile( resultMsg = driveConnection.createOrUpdateFile(
RESERVED_TERMS_FILENAME, RESERVED_TERMS_FILENAME,
EXPORT_MIME_TYPE, EXPORT_MIME_TYPE,

View file

@ -270,7 +270,11 @@ public class Registry extends ImmutableObject implements Buildable {
*/ */
String tldUnicode; String tldUnicode;
/** Id of the folder in drive used to publish information for this TLD. */ /**
* Id of the folder in drive used to public (export) information for this TLD.
*
* <p>This is optional; if not configured, then information won't be exported for this TLD.
*/
String driveFolderId; String driveFolderId;
/** The type of the TLD, whether it's real or for testing. */ /** The type of the TLD, whether it's real or for testing. */

View file

@ -110,15 +110,12 @@ public class ExportReservedTermsActionTest {
} }
@Test @Test
public void test_uploadFileToDrive_failsWhenDriveFolderIdIsNull() throws Exception { public void test_uploadFileToDrive_doesNothingWhenDriveFolderIdIsNull() throws Exception {
persistResource(Registry.get("tld").asBuilder().setDriveFolderId(null).build()); persistResource(Registry.get("tld").asBuilder().setDriveFolderId(null).build());
try { runAction("tld");
runAction("tld"); verify(response).setStatus(SC_OK);
assertWithMessage("Expected RuntimeException to be thrown").fail(); verify(response)
} catch (RuntimeException e) { .setPayload("Skipping export because no Drive folder is associated with this TLD");
verify(response).setStatus(SC_INTERNAL_SERVER_ERROR);
assertThat(getRootCause(e)).hasMessage("No drive folder associated with this TLD");
}
} }
@Test @Test