Add console bulk delete (#2641)

* Add bulk actions to console

* Add console bulk delete

* Add console bulk delete
This commit is contained in:
Pavlo Tkach
2025-01-22 15:54:59 +00:00
committed by GitHub
parent 799f0449ad
commit e3c386a8a7
22 changed files with 359 additions and 46 deletions
@@ -33,7 +33,6 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSortedMap;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.reflect.TypeToken;
import google.registry.flows.DaggerEppTestComponent;
import google.registry.flows.EppController;
import google.registry.flows.EppTestComponent;
@@ -50,7 +49,6 @@ import google.registry.testing.ConsoleApiParamsUtils;
import google.registry.testing.FakeClock;
import google.registry.testing.FakeResponse;
import google.registry.tools.GsonUtils;
import java.util.Map;
import java.util.Optional;
import org.joda.time.DateTime;
import org.junit.jupiter.api.BeforeEach;
@@ -205,29 +203,33 @@ public class ConsoleBulkDomainActionTest {
assertThat(fakeResponse.getStatus()).isEqualTo(SC_FORBIDDEN);
}
@Test
void testFailure_suspend_nonAdmin() {
ConsoleBulkDomainAction action =
createAction(
"SUSPEND",
GSON.toJsonTree(
ImmutableMap.of("domainList", ImmutableList.of("example.tld"), "reason", "test")));
action.run();
assertThat(fakeResponse.getStatus()).isEqualTo(SC_OK);
Map<String, ConsoleBulkDomainAction.ConsoleEppOutput> payload =
GSON.fromJson(fakeResponse.getPayload(), new TypeToken<>() {});
assertThat(payload).containsKey("example.tld");
assertThat(payload.get("example.tld").responseCode()).isEqualTo(2004);
assertThat(payload.get("example.tld").message()).contains("cannot be set by clients");
assertThat(loadByEntity(domain)).isEqualTo(domain);
}
// @ptkach - reenable with suspend change
// @Test
// void testFailure_suspend_nonAdmin() {
// ConsoleBulkDomainAction action =
// createAction(
// "SUSPEND",
// GSON.toJsonTree(
// ImmutableMap.of("domainList", ImmutableList.of("example.tld"), "reason",
// "test")),
// user);
// action.run();
// assertThat(fakeResponse.getStatus()).isEqualTo(SC_OK);
// Map<String, ConsoleBulkDomainAction.ConsoleEppOutput> payload =
// GSON.fromJson(fakeResponse.getPayload(), new TypeToken<>() {});
// assertThat(payload).containsKey("example.tld");
// assertThat(payload.get("example.tld").responseCode()).isEqualTo(2004);
// assertThat(payload.get("example.tld").message()).contains("cannot be set by clients");
// assertThat(loadByEntity(domain)).isEqualTo(domain);
// }
private ConsoleBulkDomainAction createAction(String action, JsonElement payload) {
User user =
persistResource(
new User.Builder()
.setEmailAddress("email@email.com")
.setUserRoles(new UserRoles.Builder().setGlobalRole(GlobalRole.FTE).build())
.setUserRoles(
new UserRoles.Builder().setIsAdmin(true).setGlobalRole(GlobalRole.FTE).build())
.build());
return createAction(action, payload, user);
}
@@ -77,8 +77,10 @@ public class ConsoleScreenshotTest extends WebDriverTestCase {
assertThat(driver.getCurrentUrl()).endsWith("?registrarId=TheRegistrar");
}
@RetryingTest(3)
void dums_mainPage() throws Exception {
server.setGlobalRole(GlobalRole.FTE);
clickSidebarElementByName("Domains");
driver.diffPage("noRegistrarSelected");
selectRegistrar();
@@ -90,20 +92,19 @@ public class ConsoleScreenshotTest extends WebDriverTestCase {
driver.diffPage("actionsButtonClicked");
}
// TODO: Reenable failing test after kokoro issue is resolved
// @RetryingTest(3)
// void settingsPage() throws Exception {
// clickSidebarElementByName("Settings");
// driver.diffPage("noRegistrarSelected");
// selectRegistrar();
// driver.diffPage("registrarSelected_contacts");
// driver.findElement(By.cssSelector("a[routerLink=\"whois\"]")).click();
// Thread.sleep(500);
// driver.diffPage("registrarSelected_whois");
// driver.findElement(By.cssSelector("a[routerLink=\"security\"]")).click();
// Thread.sleep(500);
// driver.diffPage("registrarSelected_security");
// }
@RetryingTest(3)
void settingsPage() throws Exception {
clickSidebarElementByName("Settings");
driver.diffPage("noRegistrarSelected");
selectRegistrar();
driver.diffPage("registrarSelected_contacts");
driver.findElement(By.cssSelector("a[routerLink=\"whois\"]")).click();
Thread.sleep(500);
driver.diffPage("registrarSelected_whois");
driver.findElement(By.cssSelector("a[routerLink=\"security\"]")).click();
Thread.sleep(500);
driver.diffPage("registrarSelected_security");
}
@RetryingTest(3)
void billingInfo() throws Exception {
@@ -1,5 +1,6 @@
SERVICE PATH CLASS METHODS OK MIN USER_POLICY
FRONTEND /_dr/epp EppTlsAction POST n APP ADMIN
CONSOLE /console-api/bulk-domain ConsoleBulkDomainAction POST n USER PUBLIC
CONSOLE /console-api/domain ConsoleDomainGetAction GET n USER PUBLIC
CONSOLE /console-api/domain-list ConsoleDomainListAction GET n USER PUBLIC
CONSOLE /console-api/dum-download ConsoleDumDownloadAction GET n USER PUBLIC
@@ -66,6 +66,7 @@ PUBAPI /rdap/ip/(*) RdapIpAction
PUBAPI /rdap/nameserver/(*) RdapNameserverAction GET,HEAD n NONE PUBLIC
PUBAPI /rdap/nameservers RdapNameserverSearchAction GET,HEAD n NONE PUBLIC
PUBAPI /whois/(*) WhoisHttpAction GET n NONE PUBLIC
CONSOLE /console-api/bulk-domain ConsoleBulkDomainAction POST n USER PUBLIC
CONSOLE /console-api/domain ConsoleDomainGetAction GET n USER PUBLIC
CONSOLE /console-api/domain-list ConsoleDomainListAction GET n USER PUBLIC
CONSOLE /console-api/dum-download ConsoleDumDownloadAction GET n USER PUBLIC
Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB