mirror of
https://github.com/google/nomulus.git
synced 2025-05-13 07:57:13 +02:00
Correctly set HTTP error status codes when list objects fails
This makes the associated nomulus tool commands correctly return error exit codes when the server-side component fails. This improves scriptability. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=140543216
This commit is contained in:
parent
b35ac10b7e
commit
5f32d1bbeb
8 changed files with 31 additions and 11 deletions
|
@ -15,6 +15,8 @@
|
|||
package google.registry.tools.server;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkArgument;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
|
||||
|
||||
import com.google.common.base.Function;
|
||||
import com.google.common.base.Functions;
|
||||
|
@ -120,6 +122,8 @@ public abstract class ListObjectsAction<T extends ImmutableObject> implements Ru
|
|||
if (message == null) {
|
||||
message = e.getClass().getName();
|
||||
}
|
||||
response.setStatus(
|
||||
e instanceof IllegalArgumentException ? SC_BAD_REQUEST : SC_INTERNAL_SERVER_ERROR);
|
||||
response.setPayload(ImmutableMap.of(
|
||||
"error", message,
|
||||
"status", "error"));
|
||||
|
|
|
@ -40,7 +40,7 @@ public class ListActionTestCase {
|
|||
|
||||
private FakeJsonResponse response;
|
||||
|
||||
void runAction(
|
||||
private void runAction(
|
||||
ListObjectsAction<?> action,
|
||||
Optional<String> fields,
|
||||
Optional<Boolean> printHeaderRow,
|
||||
|
@ -51,7 +51,6 @@ public class ListActionTestCase {
|
|||
action.printHeaderRow = printHeaderRow;
|
||||
action.fullFieldNames = fullFieldNames;
|
||||
action.run();
|
||||
assertThat(response.getStatus()).isEqualTo(SC_OK);
|
||||
}
|
||||
|
||||
void testRunSuccess(
|
||||
|
@ -62,6 +61,7 @@ public class ListActionTestCase {
|
|||
String ... expectedLinePatterns) {
|
||||
assertThat(expectedLinePatterns).isNotNull();
|
||||
runAction(action, fields, printHeaderRow, fullFieldNames);
|
||||
assertThat(response.getStatus()).isEqualTo(SC_OK);
|
||||
assertThat(response.getResponseMap().get("status")).isEqualTo("success");
|
||||
Object obj = response.getResponseMap().get("lines");
|
||||
assertThat(obj).isInstanceOf(List.class);
|
||||
|
@ -78,9 +78,11 @@ public class ListActionTestCase {
|
|||
Optional<String> fields,
|
||||
Optional<Boolean> printHeaderRow,
|
||||
Optional<Boolean> fullFieldNames,
|
||||
String expectedErrorPattern) {
|
||||
String expectedErrorPattern,
|
||||
int expectedResponseStatus) {
|
||||
assertThat(expectedErrorPattern).isNotNull();
|
||||
runAction(action, fields, printHeaderRow, fullFieldNames);
|
||||
assertThat(response.getStatus()).isEqualTo(expectedResponseStatus);
|
||||
assertThat(response.getResponseMap().get("status")).isEqualTo("error");
|
||||
Object obj = response.getResponseMap().get("error");
|
||||
assertThat(obj).isInstanceOf(String.class);
|
||||
|
|
|
@ -17,6 +17,7 @@ package google.registry.tools.server;
|
|||
import static google.registry.testing.DatastoreHelper.createTld;
|
||||
import static google.registry.testing.DatastoreHelper.createTlds;
|
||||
import static google.registry.testing.DatastoreHelper.persistActiveDomain;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
|
||||
|
||||
import com.google.common.base.Optional;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
|
@ -50,7 +51,8 @@ public class ListDomainsActionTest extends ListActionTestCase {
|
|||
null,
|
||||
null,
|
||||
null,
|
||||
"^Must specify TLDs to query$");
|
||||
"^Must specify TLDs to query$",
|
||||
SC_BAD_REQUEST);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -61,7 +63,8 @@ public class ListDomainsActionTest extends ListActionTestCase {
|
|||
null,
|
||||
null,
|
||||
null,
|
||||
"^TLD %%%badtld%%% does not exist$");
|
||||
"^TLD %%%badtld%%% does not exist$",
|
||||
SC_BAD_REQUEST);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -229,6 +232,7 @@ public class ListDomainsActionTest extends ListActionTestCase {
|
|||
Optional.of("badfield"),
|
||||
null,
|
||||
null,
|
||||
"^Field 'badfield' not found - recognized fields are:");
|
||||
"^Field 'badfield' not found - recognized fields are:",
|
||||
SC_BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ package google.registry.tools.server;
|
|||
|
||||
import static google.registry.testing.DatastoreHelper.createTld;
|
||||
import static google.registry.testing.DatastoreHelper.persistActiveHost;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
|
||||
|
||||
import com.google.common.base.Optional;
|
||||
import google.registry.testing.FakeClock;
|
||||
|
@ -103,6 +104,7 @@ public class ListHostsActionTest extends ListActionTestCase {
|
|||
Optional.of("badfield"),
|
||||
null,
|
||||
null,
|
||||
"^Field 'badfield' not found - recognized fields are:");
|
||||
"^Field 'badfield' not found - recognized fields are:",
|
||||
SC_BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
package google.registry.tools.server;
|
||||
|
||||
import static google.registry.testing.DatastoreHelper.persistPremiumList;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
|
||||
|
||||
import com.google.common.base.Optional;
|
||||
import google.registry.model.registry.label.PremiumList;
|
||||
|
@ -86,6 +87,7 @@ public class ListPremiumListsActionTest extends ListActionTestCase {
|
|||
Optional.of("badfield"),
|
||||
null,
|
||||
null,
|
||||
"^Field 'badfield' not found - recognized fields are:");
|
||||
"^Field 'badfield' not found - recognized fields are:",
|
||||
SC_BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ package google.registry.tools.server;
|
|||
|
||||
import static google.registry.testing.DatastoreHelper.createTlds;
|
||||
import static google.registry.testing.DatastoreHelper.persistResource;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
|
||||
|
||||
import com.google.common.base.Optional;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
|
@ -95,6 +96,7 @@ public class ListRegistrarsActionTest extends ListActionTestCase {
|
|||
Optional.of("badfield"),
|
||||
null,
|
||||
null,
|
||||
"^Field 'badfield' not found - recognized fields are:");
|
||||
"^Field 'badfield' not found - recognized fields are:",
|
||||
SC_BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ package google.registry.tools.server;
|
|||
import static google.registry.testing.DatastoreHelper.createTld;
|
||||
import static google.registry.testing.DatastoreHelper.persistReservedList;
|
||||
import static google.registry.testing.DatastoreHelper.persistResource;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
|
||||
|
||||
import com.google.common.base.Optional;
|
||||
import google.registry.model.registry.Registry;
|
||||
|
@ -87,6 +88,7 @@ public class ListReservedListsActionTest extends ListActionTestCase {
|
|||
Optional.of("badfield"),
|
||||
null,
|
||||
null,
|
||||
"^Field 'badfield' not found - recognized fields are:");
|
||||
"^Field 'badfield' not found - recognized fields are:",
|
||||
SC_BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
package google.registry.tools.server;
|
||||
|
||||
import static google.registry.testing.DatastoreHelper.createTld;
|
||||
import static javax.servlet.http.HttpServletResponse.SC_BAD_REQUEST;
|
||||
|
||||
import com.google.common.base.Optional;
|
||||
import google.registry.testing.FakeClock;
|
||||
|
@ -75,6 +76,7 @@ public class ListTldsActionTest extends ListActionTestCase {
|
|||
Optional.of("badfield"),
|
||||
null,
|
||||
null,
|
||||
"^Field 'badfield' not found - recognized fields are:");
|
||||
"^Field 'badfield' not found - recognized fields are:",
|
||||
SC_BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue